Funktioner och funktionaliteter

Funktioner och funktionaliteter

Funktioner och funktionaliteter

Den här sidan täcker varje huvudfunktionområde av Aspose.3D 26.1.0 med fungerande C#-exempel.


Laddning och sparande av scener

Scene.Open() läser in en fil; Scene.Save() exporterar den. Formatet upptäcks från filändelsen:

using Aspose.ThreeD;

var scene = new Scene();
scene.Open("input.obj");
scene.Save("output.glb");

Använd den statiska fabriken Scene.FromFile() som ett alternativ:

var scene = Scene.FromFile("input.fbx");
scene.Save("output.stl");

Format‑specifika alternativ

Skicka LoadOptions eller SaveOptions subklasser för finjusterad kontroll:

using Aspose.ThreeD;
using Aspose.ThreeD.Formats;

var scene = new Scene();
scene.Open("model.obj", new ObjLoadOptions { FlipCoordinateSystem = true });
scene.Save("model.fbx");

Tillgängliga alternativklasser:

KlassRiktningNyckelegenskaper
ObjLoadOptionsImporteraFlipCoordinateSystem, EnableMaterials, Scale
ObjSaveOptionsExporteraFlipCoordinateSystem, EnableMaterials, PointCloud
FbxLoadOptionsImportera(standardinställningar)
GltfLoadOptionsImportera(standardinställningar)
GltfSaveOptionsExportera(standardinställningar)
StlLoadOptionsImportera(standardinställningar)
StlSaveOptionsExportera(standardinställningar)
ColladaLoadOptionsImporteraFlipCoordinateSystem
ColladaSaveOptionsExporteraIndented, TransformStyle
PlyLoadOptionsImportera(standardinställningar)

Bygga ett scen‑graf

Skapa noder och fäst enheter för att bygga en hierarki:

var scene = new Scene();
var root = scene.RootNode;

var boxNode = root.CreateChildNode("box", new Box(5, 5, 5));
var sphereNode = root.CreateChildNode("sphere", new Sphere(3));

Åtkomst till barn via node.ChildNodes och den anslutna enheten via node.Entity.


Mesh och primitiva former

Skapa en Mesh programmeringsmässigt med kontrollpunkter och polygoner:

// Mesh.ControlPoints uses Aspose.ThreeD.Utilities.Vector4
// (double-precision, lowercase fields: x, y, z, w)
using Aspose.ThreeD.Utilities;

var mesh = new Mesh("custom");
mesh.ControlPoints.Add(new Vector4(0.0, 0.0, 0.0));   // w defaults to 1.0
mesh.ControlPoints.Add(new Vector4(10.0, 0.0, 0.0));
mesh.ControlPoints.Add(new Vector4(10.0, 10.0, 0.0));
mesh.ControlPoints.Add(new Vector4(0.0, 10.0, 0.0));
mesh.CreatePolygon(0, 1, 2, 3);

Inbyggda primitiv (Box, Sphere, Cylinder) kan konverteras till Mesh:

var box = new Box(10, 10, 10);
Mesh boxMesh = box.ToMesh();

Vertex-element

Fäst normaler, UV:er och vertexfärger till geometrin:

var normals = new VertexElementNormal(MappingMode.ControlPoint, ReferenceMode.Direct);
mesh.AddElement(normals);

Tillgängliga vertex-elementtyper: VertexElementNormal, VertexElementUV, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent.


Transformationer

Varje Node bär en Transform med Translation, Rotation, och Scale:

var node = scene.RootNode.CreateChildNode("moved", new Box());
node.Transform.Translation = new FVector3(10, 0, 5);
node.Transform.Scale = new FVector3(2, 2, 2);

Läs världsrumsposition via node.GlobalTransform.Matrix eller node.EvaluateGlobalTransform().


Material

Tilldela material till noder för skuggningsdata:

var mat = new PhongMaterial("shiny");
mat.Diffuse = new Vector4(0.8, 0.2, 0.2, 1.0);
mat.Specular = new Vector4(1, 1, 1, 1);
mat.Shininess = 32;

scene.RootNode.CreateChildNode("red_box", new Box(), mat);

Materialtyper: LambertMaterial, PhongMaterial, PbrMaterial.


Tips och bästa praxis

  • Använd Scene.FromFile() för enradsladdning när du inte behöver anpassad LoadOptions
  • Konvertera primitiv till Mesh med ToMesh() innan du lägger till vertex-element
  • Använd GltfSaveOptions med en .glb utökning för kompakt binär utdata
  • Kontrollera node.Entity för null innan du kastar — inte varje nod bär geometri
  • Använd PolygonModifier.Triangulate() för att konvertera quad-meshes innan export till endast triangelbaserade format som STL

Vanliga problem

ProblemOrsakÅtgärd
ImportException vid laddningFil som inte stöds eller är korruptVerifiera att filen öppnas i en 3D‑visare; kontrollera att formatet finns i den stödjade listan
Material saknas efter OBJ‑laddning.mtl filen hittades intePlacera .mtl filen bredvid .obj eller sätt ObjLoadOptions.EnableMaterials = true
Skalningsfel efter FBX‑importOlika enhetssystemAnvänd ObjLoadOptions.Scale eller tillämpa en Transform efter inläsning

FAQ

Hur upptäcker jag formatet på en okänd fil?

Använd FileFormat.Detect():

var format = FileFormat.Detect("unknown_file.bin");
Console.WriteLine(format.Extension);

Kan jag läsa in från en ström istället för en filsökväg?

Ja. Scene.Open() accepterar en Stream:

using var stream = File.OpenRead("model.glb");
scene.Open(stream);

Vilka format stödjer både import och export?

OBJ, STL, glTF/GLB, FBX, COLLADA och 3MF stöder båda riktningarna. PLY stöder endast import (PLY-exportören är inte kopplad).


API-referenssammanfattning

Klass / MetodBeskrivning
Scene3D-scenbehållare på toppnivå
Scene.Open()Läs in en 3D-fil via sökväg eller ström
Scene.Save()Exportera scen till fil eller ström
Scene.FromFile()Statisk fabrik för att ladda och returnera en Scene
NodeScenhierarkinod som innehåller enheter och transformationer
Node.CreateChildNode()Skapa och fäst en barnnod
MeshPolygonnät med kontrollpunkter och ansiktslistor
Mesh.CreatePolygon()Definiera ett polygonansikte med vertex-index
Box / Sphere / CylinderInbyggda parametriska primitiv
TransformLokal translation, rotation och skalning
FileFormatRegister och detektor för stödda format
LambertMaterial / PhongMaterial / PbrMaterialMaterialtyper för skuggning
 Svenska