Functies en functionaliteiten

Functies en functionaliteiten

Functies en functionaliteiten

Deze pagina behandelt elk belangrijk functiegebied van Aspose.3D 26.1.0 met werkende C#-voorbeelden.


Scènes laden en opslaan

Scene.Open() laadt een bestand; Scene.Save() exporteert het. Het formaat wordt gedetecteerd aan de hand van de bestandsextensie:

using Aspose.ThreeD;

var scene = new Scene();
scene.Open("input.obj");
scene.Save("output.glb");

Gebruik de statische factory Scene.FromFile() als alternatief:

var scene = Scene.FromFile("input.fbx");
scene.Save("output.stl");

Formaat-specifieke opties

Geef LoadOptions of SaveOptions subklassen voor fijnmazige controle:

using Aspose.ThreeD;
using Aspose.ThreeD.Formats;

var scene = new Scene();
scene.Open("model.obj", new ObjLoadOptions { FlipCoordinateSystem = true });
scene.Save("model.fbx");

Beschikbare optieklassen:

KlasseRichtingBelangrijke eigenschappen
ObjLoadOptionsImporterenFlipCoordinateSystem, EnableMaterials, Scale
ObjSaveOptionsExporterenFlipCoordinateSystem, EnableMaterials, PointCloud
FbxLoadOptionsImporteren(standaardinstellingen)
GltfLoadOptionsImporteren(standaardinstellingen)
GltfSaveOptionsExporteren(standaardinstellingen)
StlLoadOptionsImporteren(standaardinstellingen)
StlSaveOptionsExporteren(standaardinstellingen)
ColladaLoadOptionsImporterenFlipCoordinateSystem
ColladaSaveOptionsExporterenIndented, TransformStyle
PlyLoadOptionsImporteren(standaardinstellingen)

Een scène‑grafiek opbouwen

Maak knooppunten aan en koppel entiteiten om een hiërarchie op te bouwen:

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));

Toegang tot kinderen via node.ChildNodes en de gekoppelde entiteit via node.Entity.


Mesh en Primitieven

Maak een Mesh programmeringsmatig met controlepunten en polygonen:

// 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);

Ingebouwde primitieve (Box, Sphere, Cylinder) kunnen worden geconverteerd naar Mesh:

var box = new Box(10, 10, 10);
Mesh boxMesh = box.ToMesh();

Vertex-elementen

Koppel normaalvectoren, UV’s en vertexkleuren aan geometrie:

var normals = new VertexElementNormal(MappingMode.ControlPoint, ReferenceMode.Direct);
mesh.AddElement(normals);

Beschikbare vertex-elementtypen: VertexElementNormal, VertexElementUV, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent.


Transformaties

Elke Node draagt een Transform met Translation, Rotation, en 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);

Lees wereldruimtepositie via node.GlobalTransform.Matrix of node.EvaluateGlobalTransform().


Materialen

Wijs materialen toe aan knooppunten voor shading-gegevens:

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);

Materiaaltypes: LambertMaterial, PhongMaterial, PbrMaterial.


Tips en best practices

  • Gebruik Scene.FromFile() voor een eenregelige load wanneer je geen aangepaste nodig hebt LoadOptions
  • Converteer primitieve naar Mesh met ToMesh() voordat je vertex-elementen toevoegt
  • Gebruik GltfSaveOptions met een .glb extensie voor compacte binaire output
  • Controleer node.Entity op null voordat je cast — niet elke node bevat geometrie
  • Gebruik PolygonModifier.Triangulate() om quad-meshes te converteren vóór export naar alleen-driehoekformaten zoals STL

Veelvoorkomende problemen

ProbleemOorzaakOplossing
ImportException bij ladenNiet-ondersteund of beschadigd bestandControleer of het bestand opent in een 3D-viewer; controleer of het formaat in de ondersteunde lijst staat
Ontbrekende materialen na OBJ-lading.mtl bestand niet gevondenPlaats de .mtl bestand naast de .obj of stel ObjLoadOptions.EnableMaterials = true
Schaal mismatch na FBX-importVerschillende eenheidssystemenGebruik ObjLoadOptions.Scale of pas een Transform na het laden

FAQ

Hoe detecteer ik het formaat van een onbekend bestand?

Gebruik FileFormat.Detect():

var format = FileFormat.Detect("unknown_file.bin");
Console.WriteLine(format.Extension);

Kan ik laden vanuit een stream in plaats van een bestandspad?

Ja. Scene.Open() accepteert een Stream:

using var stream = File.OpenRead("model.glb");
scene.Open(stream);

Welke formaten ondersteunen zowel import als export?

OBJ, STL, glTF/GLB, FBX, COLLADA en 3MF ondersteunen beide richtingen. PLY ondersteunt alleen import (de PLY-exporteur is niet gekoppeld).


API-referentieoverzicht

Klasse / MethodeBeschrijving
SceneTop-level 3D‑scènecontainer
Scene.Open()Laad een 3D‑bestand via pad of stream
Scene.Save()Exporteer scène naar bestand of stream
Scene.FromFile()Statische fabriek om te laden en een terug te geven Scene
NodeScène‑hiërarchieknooppunt dat entiteiten en transformaties bevat
Node.CreateChildNode()Maak een kindknooppunt aan en koppel het
MeshPolygonmesh met controlepunten en vlaklijsten
Mesh.CreatePolygon()Definieer een polygonvlak met vertexindices
Box / Sphere / CylinderIngebouwde parametrische primitieven
TransformLokale translatie, rotatie en schaal
FileFormatRegister en detector voor ondersteunde formaten
LambertMaterial / PhongMaterial / PbrMaterialMateriaaltypes voor shading
 Nederlands