Funksjoner og funksjonalitet
Funksjoner og funksjonalitet
Denne siden dekker alle hovedfunksjonsområdene til Aspose.3D 26.1.0 med fungerende C#-eksempler.
Laste inn og lagre scener
Scene.Open() laster en fil; Scene.Save() eksporterer den. Formatet oppdages fra filendelsen:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("input.obj");
scene.Save("output.glb");Bruk den statiske fabrikken Scene.FromFile() som et alternativ:
var scene = Scene.FromFile("input.fbx");
scene.Save("output.stl");Formatspesifikke alternativer
Send LoadOptions eller SaveOptions underklasser for finjustert kontroll:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
var scene = new Scene();
scene.Open("model.obj", new ObjLoadOptions { FlipCoordinateSystem = true });
scene.Save("model.fbx");Tilgjengelige alternativklasser:
| Klasse | Retning | Nøkkelegenskaper |
|---|---|---|
ObjLoadOptions | Import | FlipCoordinateSystem, EnableMaterials, Scale |
ObjSaveOptions | Eksport | FlipCoordinateSystem, EnableMaterials, PointCloud |
FbxLoadOptions | Import | (standardinnstillinger) |
GltfLoadOptions | Import | (standardinnstillinger) |
GltfSaveOptions | Export | (standardinnstillinger) |
StlLoadOptions | Import | (standardinnstillinger) |
StlSaveOptions | Eksport | (standardinnstillinger) |
ColladaLoadOptions | Import | FlipCoordinateSystem |
ColladaSaveOptions | Eksport | Indented, TransformStyle |
PlyLoadOptions | Import | (standardinnstillinger) |
Bygge en scenegraf
Opprett noder og fest enheter for å bygge 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å tilgang til underordnede via node.ChildNodes og den tilknyttede enheten via node.Entity.
Mesh og primitive
Opprett en Mesh programmatisk med kontrollpunkter 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);Innebygde primitive (Box, Sphere, Cylinder) kan konverteres til Mesh:
var box = new Box(10, 10, 10);
Mesh boxMesh = box.ToMesh();Vertex-elementer
Fest normaler, UV-er og vertex-farger til geometri:
var normals = new VertexElementNormal(MappingMode.ControlPoint, ReferenceMode.Direct);
mesh.AddElement(normals);Tilgjengelige vertex-elementtyper: VertexElementNormal, VertexElementUV, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent.
Transformasjoner
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);Les posisjon i verdensrommet via node.GlobalTransform.Matrix eller node.EvaluateGlobalTransform().
Materialer
Tildel materialer til noder for skyggeinformasjon:
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 og beste praksis
- Bruk
Scene.FromFile()for énlinjes lasting når du ikke trenger egendefinertLoadOptions - Konverter primitive til
MeshmedToMesh()før du legger til vertex-elementer - Bruk
GltfSaveOptionsmed en.glbutvidelse for kompakt binærutdata - Sjekk
node.Entityfornullfør casting — ikke hver node inneholder geometri - Bruk
PolygonModifier.Triangulate()for å konvertere quad-meshes før eksport til kun-triangel-formater som STL
Vanlige problemer
| Problem | Årsak | Løsning |
|---|---|---|
ImportException ved lasting | Ustøttet eller korrupt fil | Bekreft at filen åpnes i en 3D‑viser; sjekk at formatet er i den støttede listen |
| Manglende materialer etter OBJ‑lasting | .mtl fil ikke funnet | Plasser .mtl filen ved siden av .obj eller sett ObjLoadOptions.EnableMaterials = true |
| Skalaavvik etter FBX‑import | Ulike enhetssystemer | Bruk ObjLoadOptions.Scale eller bruk en Transform etter lasting |
FAQ
Hvordan kan jeg oppdage formatet til en ukjent fil?
Bruk FileFormat.Detect():
var format = FileFormat.Detect("unknown_file.bin");
Console.WriteLine(format.Extension);Kan jeg laste fra en strøm i stedet for en filsti?
Ja. Scene.Open() godtar en Stream:
using var stream = File.OpenRead("model.glb");
scene.Open(stream);Hvilke formater støtter både import og eksport?
OBJ, STL, glTF/GLB, FBX, COLLADA og 3MF støtter begge retninger. PLY støtter kun import (PLY-eksportøren er ikke koblet til).
API-referansesammendrag
| Klasse / Metode | Beskrivelse |
|---|---|
Scene | Toppnivå 3D-scenebeholder |
Scene.Open() | Last inn en 3D-fil etter sti eller strøm |
Scene.Save() | Eksporter scene til fil eller strøm |
Scene.FromFile() | Statisk fabrikk for å laste inn og returnere en Scene |
Node | Scenehierarki-node som holder entiteter og transformasjoner |
Node.CreateChildNode() | Opprett og fest en undernode |
Mesh | Polygonnett med kontrollpunkter og flatelister |
Mesh.CreatePolygon() | Definer en polygonflate ved vertex-indekser |
Box / Sphere / Cylinder | Innebygde parametriske primitive |
Transform | Lokal translasjon, rotasjon og skalering |
FileFormat | Register og detektor for støttede formater |
LambertMaterial / PhongMaterial / PbrMaterial | Materialtyper for shading |