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:
| Klass | Riktning | Nyckelegenskaper |
|---|---|---|
ObjLoadOptions | Importera | FlipCoordinateSystem, EnableMaterials, Scale |
ObjSaveOptions | Exportera | FlipCoordinateSystem, EnableMaterials, PointCloud |
FbxLoadOptions | Importera | (standardinställningar) |
GltfLoadOptions | Importera | (standardinställningar) |
GltfSaveOptions | Exportera | (standardinställningar) |
StlLoadOptions | Importera | (standardinställningar) |
StlSaveOptions | Exportera | (standardinställningar) |
ColladaLoadOptions | Importera | FlipCoordinateSystem |
ColladaSaveOptions | Exportera | Indented, TransformStyle |
PlyLoadOptions | Importera | (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 anpassadLoadOptions - Konvertera primitiv till
MeshmedToMesh()innan du lägger till vertex-element - Använd
GltfSaveOptionsmed en.glbutökning för kompakt binär utdata - Kontrollera
node.Entityförnullinnan 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
| Problem | Orsak | Åtgärd |
|---|---|---|
ImportException vid laddning | Fil som inte stöds eller är korrupt | Verifiera att filen öppnas i en 3D‑visare; kontrollera att formatet finns i den stödjade listan |
| Material saknas efter OBJ‑laddning | .mtl filen hittades inte | Placera .mtl filen bredvid .obj eller sätt ObjLoadOptions.EnableMaterials = true |
| Skalningsfel efter FBX‑import | Olika enhetssystem | Anvä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 / Metod | Beskrivning |
|---|---|
Scene | 3D-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 |
Node | Scenhierarkinod som innehåller enheter och transformationer |
Node.CreateChildNode() | Skapa och fäst en barnnod |
Mesh | Polygonnät med kontrollpunkter och ansiktslistor |
Mesh.CreatePolygon() | Definiera ett polygonansikte med vertex-index |
Box / Sphere / Cylinder | Inbyggda parametriska primitiv |
Transform | Lokal translation, rotation och skalning |
FileFormat | Register och detektor för stödda format |
LambertMaterial / PhongMaterial / PbrMaterial | Materialtyper för skuggning |