Funksjoner og funksjonalitet

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:

KlasseRetningNøkkelegenskaper
ObjLoadOptionsImportFlipCoordinateSystem, EnableMaterials, Scale
ObjSaveOptionsEksportFlipCoordinateSystem, EnableMaterials, PointCloud
FbxLoadOptionsImport(standardinnstillinger)
GltfLoadOptionsImport(standardinnstillinger)
GltfSaveOptionsExport(standardinnstillinger)
StlLoadOptionsImport(standardinnstillinger)
StlSaveOptionsEksport(standardinnstillinger)
ColladaLoadOptionsImportFlipCoordinateSystem
ColladaSaveOptionsEksportIndented, TransformStyle
PlyLoadOptionsImport(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 egendefinert LoadOptions
  • Konverter primitive til Mesh med ToMesh() før du legger til vertex-elementer
  • Bruk GltfSaveOptions med en .glb utvidelse for kompakt binærutdata
  • Sjekk node.Entity for null fø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ÅrsakLøsning
ImportException ved lastingUstøttet eller korrupt filBekreft at filen åpnes i en 3D‑viser; sjekk at formatet er i den støttede listen
Manglende materialer etter OBJ‑lasting.mtl fil ikke funnetPlasser .mtl filen ved siden av .obj eller sett ObjLoadOptions.EnableMaterials = true
Skalaavvik etter FBX‑importUlike enhetssystemerBruk 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 / MetodeBeskrivelse
SceneToppnivå 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
NodeScenehierarki-node som holder entiteter og transformasjoner
Node.CreateChildNode()Opprett og fest en undernode
MeshPolygonnett med kontrollpunkter og flatelister
Mesh.CreatePolygon()Definer en polygonflate ved vertex-indekser
Box / Sphere / CylinderInnebygde parametriske primitive
TransformLokal translasjon, rotasjon og skalering
FileFormatRegister og detektor for støttede formater
LambertMaterial / PhongMaterial / PbrMaterialMaterialtyper for shading
 Norsk