Funktioner og funktionaliteter

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:

KlasseRetningNøgleegenskaber
ObjLoadOptionsImportFlipCoordinateSystem, EnableMaterials, Scale
ObjSaveOptionsExportFlipCoordinateSystem, EnableMaterials, PointCloud
FbxLoadOptionsImport(standardindstillinger)
GltfLoadOptionsImport(standardindstillinger)
GltfSaveOptionsExport(standardindstillinger)
StlLoadOptionsImportér(standardindstillinger)
StlSaveOptionsEksportér(standardindstillinger)
ColladaLoadOptionsImportérFlipCoordinateSystem
ColladaSaveOptionsEksportérIndented, TransformStyle
PlyLoadOptionsImporté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 tilpasset LoadOptions
  • Konverter primitive til Mesh med ToMesh() før du tilføjer vertex-elementer
  • Brug GltfSaveOptions med en .glb udvidelse til kompakt binært output
  • Tjek node.Entity for null fø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ÅrsagLøsning
ImportException ved indlæsningIkke understøttet eller beskadiget filBekræ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 fundetPlacér den .mtl fil ved siden af den .obj eller indstil ObjLoadOptions.EnableMaterials = true
Skala‑uoverensstemmelse efter FBX-importForskellige enhedssystemerBrug 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 / MetodeBeskrivelse
SceneTopniveau 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
NodeScenehierarki-node, der indeholder entiteter og transformationer
Node.CreateChildNode()Opret og tilknyt en undernode
MeshPolygonmesh med kontrolpunkter og fladelister
Mesh.CreatePolygon()Definér en polygonflade ved vertex-indekser
Box / Sphere / CylinderIndbyggede parametriske primitive
TransformLokal translation, rotation og skalering
FileFormatRegister og detektor for understøttede formater
LambertMaterial / PhongMaterial / PbrMaterialMaterialetyper til shading
 Dansk