Funktioner og funktionaliteter
Funktioner og funktionaliteter
Denne side dækker alle de vigtigste funktionsområder for Aspose.3D 26.1.0 med fungerende C#-eksempler.
Indlæsning og gemning af scener
Scene.Open() indlæser en fil; Scene.Save() eksporterer den. Formatet opdages ud fra filendelsen:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("input.obj");
scene.Save("output.glb");Brug den statiske fabrik Scene.FromFile() som et alternativ:
var scene = Scene.FromFile("input.fbx");
scene.Save("output.stl");Format‑specifikke indstillinger
Videregiv LoadOptions eller SaveOptions underklasser for finjusteret kontrol:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
var scene = new Scene();
scene.Open("model.obj", new ObjLoadOptions { FlipCoordinateSystem = true });
scene.Save("model.fbx");Tilgængelige optionsklasser:
| Klasse | Retning | Nøgleegenskaber |
|---|---|---|
ObjLoadOptions | Import | FlipCoordinateSystem, EnableMaterials, Scale |
ObjSaveOptions | Export | FlipCoordinateSystem, EnableMaterials, PointCloud |
FbxLoadOptions | Import | (standardindstillinger) |
GltfLoadOptions | Import | (standardindstillinger) |
GltfSaveOptions | Export | (standardindstillinger) |
StlLoadOptions | Importér | (standardindstillinger) |
StlSaveOptions | Eksportér | (standardindstillinger) |
ColladaLoadOptions | Importér | FlipCoordinateSystem |
ColladaSaveOptions | Eksportér | Indented, TransformStyle |
PlyLoadOptions | Importér | (standardindstillinger) |
Opbygning af en scenegraf
Opret noder og tilknyt enheder for at opbygge et 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));Få adgang til underordnede via node.ChildNodes og den tilknyttede enhed via node.Entity.
Mesh og primitive
Opret en Mesh programmatisk med kontrolpunkter og 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);Indbyggede primitive (Box, Sphere, Cylinder) kan konverteres til Mesh:
var box = new Box(10, 10, 10);
Mesh boxMesh = box.ToMesh();Vertex-elementer
Tilknyt normaler, UV’er og vertex-farver til geometrien:
var normals = new VertexElementNormal(MappingMode.ControlPoint, ReferenceMode.Direct);
mesh.AddElement(normals);Tilgængelige vertex-elementtyper: VertexElementNormal, VertexElementUV, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent.
Transformationer
Hver Node bærer en Transform med Translation, Rotation, og 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 position i verdensrummet via node.GlobalTransform.Matrix eller node.EvaluateGlobalTransform().
Materialer
Tildel materialer til noder for skygge-data:
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);Materialetyper: LambertMaterial, PhongMaterial, PbrMaterial.
Tips og bedste praksis
- Brug
Scene.FromFile()til énlinjeindlæsning, når du ikke har brug for tilpassetLoadOptions - Konverter primitive til
MeshmedToMesh()før du tilføjer vertex-elementer - Brug
GltfSaveOptionsmed en.glbudvidelse til kompakt binært output - Tjek
node.Entityfornullfør du caster — ikke hver node indeholder geometri - Brug
PolygonModifier.Triangulate()til at konvertere quad-meshes før eksport til kun-triangel-formater som STL
Almindelige problemer
| Problem | Årsag | Løsning |
|---|---|---|
ImportException ved indlæsning | Ikke understøttet eller beskadiget fil | Bekræft at filen kan åbnes i en 3D‑viewer; tjek at formatet er på den understøttede liste |
| Manglende materialer efter OBJ-indlæsning | .mtl fil ikke fundet | Placér den .mtl fil ved siden af den .obj eller indstil ObjLoadOptions.EnableMaterials = true |
| Skala‑uoverensstemmelse efter FBX-import | Forskellige enhedssystemer | Brug ObjLoadOptions.Scale eller anvend en Transform efter indlæsning |
FAQ
Hvordan opdager jeg formatet på en ukendt fil?
Brug FileFormat.Detect():
var format = FileFormat.Detect("unknown_file.bin");
Console.WriteLine(format.Extension);Kan jeg indlæse fra en stream i stedet for en filsti?
Ja. Scene.Open() accepterer en Stream:
using var stream = File.OpenRead("model.glb");
scene.Open(stream);Hvilke formater understøtter både import og eksport?
OBJ, STL, glTF/GLB, FBX, COLLADA og 3MF understøtter begge retninger. PLY understøtter kun import (PLY-eksportøren er ikke tilsluttet).
API-referencens oversigt
| Klasse / Metode | Beskrivelse |
|---|---|
Scene | Topniveau 3D-scenecontainer |
Scene.Open() | Indlæs en 3D-fil via sti eller stream |
Scene.Save() | Eksporter scene til fil eller stream |
Scene.FromFile() | Statisk fabrik til at indlæse og returnere en Scene |
Node | Scenehierarki-node, der indeholder entiteter og transformationer |
Node.CreateChildNode() | Opret og tilknyt en undernode |
Mesh | Polygonmesh med kontrolpunkter og fladelister |
Mesh.CreatePolygon() | Definér en polygonflade ved vertex-indekser |
Box / Sphere / Cylinder | Indbyggede parametriske primitive |
Transform | Lokal translation, rotation og skalering |
FileFormat | Register og detektor for understøttede formater |
LambertMaterial / PhongMaterial / PbrMaterial | Materialetyper til shading |