Merkmale und Funktionalität

Merkmale und Funktionalität

Merkmale und Funktionalität

Diese Seite behandelt alle wichtigen Merkmale der Anlage 3D 26.1.0 mit arbeitenden C#-Beispielen.


Szenen laden und speichern

Scene.Open() eine Datei lädt; Scene.Save() Das Format wird von der Dateierweiterung erkannt:

using Aspose.ThreeD;

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

Verwenden Sie die statische Fabrik. Scene.FromFile() als Alternative:

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

Format-spezifische Optionen

Pass . LoadOptions oder SaveOptions Unterklassen für die Feinkörnkontrollen:

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

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

Verfügbare Optionsklassen:

KlasseRichtungSchlüsselmerkmale
ObjLoadOptionsEinfuhrFlipCoordinateSystem, EnableMaterials, Scale
ObjSaveOptionsAusfuhrFlipCoordinateSystem, EnableMaterials, PointCloud
FbxLoadOptionsEinfuhr(Standard-Einstellungen)
GltfLoadOptionsEinfuhr(Standard-Einstellungen)
GltfSaveOptionsAusfuhr(Standard-Einstellungen)
StlLoadOptionsEinfuhr(Standard-Einstellungen)
StlSaveOptionsAusfuhr(Standard-Einstellungen)
ColladaLoadOptionsEinfuhrFlipCoordinateSystem
ColladaSaveOptionsAusfuhrIndented, TransformStyle
PlyLoadOptionsEinfuhr(Standard-Einstellungen)

Schaffung eines Szenengraphs

Knoten erstellen und Entitäten hinzufügen, um eine Hierarchie zu errichten:

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

Zugang zu Kindern über: node.ChildNodes und der verbundenen Stelle über die node.Entity.


Mesh und Primitive

Erstellen einer Mesh programmatisch mit Kontrollpunkten und 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);

Eingebettete Primitive (Box, Sphere, Cylinder) kann in die Mesh:

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

Vertex-Elemente

Normalen, UV-Strahlen und Oberwinkelfarben an die Geometrie angeben:

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

Verfügbare Elementtypen für die Oberseite: VertexElementNormal, VertexElementUV, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent.


Umgestaltungen

Jeder Node ist mit einem Transform mit: Translation, Rotation,und . 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);

Die Weltraumposition lesen über: node.GlobalTransform.Matrix oder node.EvaluateGlobalTransform().


Materialien

Zuweisen von Materialien an Knoten für Schattierungsdaten:

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

Materialart: LambertMaterial, PhongMaterial, PbrMaterial.


Tipps und beste Praktiken

  • Verwendung Scene.FromFile() für die Ein-Linienlast, wenn Sie keine maßgeschneiderte Last benötigen. LoadOptions
  • Primitive in die Mesh mit: ToMesh() vor dem Hinzufügen von Winkelelementen
  • Verwendung GltfSaveOptions mit einem .glb Erweiterung für kompakte binäre Ausgänge
  • Überprüfung node.Entity für die null Vor dem Gießen nicht jeder Knoten hat Geometrie
  • Verwendung PolygonModifier.Triangulate() Um Quad-Maschen vor dem Export in Dreieckformate wie STL umzuwandeln.

Häufige Probleme

AusgabeUrsacheBehebung
ImportException aufgeladenNicht unterstützte oder beschädigte DateienÜberprüfen Sie, ob die Datei in einem 3D-Viewer geöffnet wird; überprüfen sie das Format ist in der unterstützten Liste
Fehlende Materialien nach OBJ-Ladung.mtl Datei nicht gefundenDie .mtl Die Liste der .obj oder gesetzt ObjLoadOptions.EnableMaterials = true
Skalierungsfehler nach FBX-ImportVerschiedene EinheitensystemeVerwendung ObjLoadOptions.Scale oder eine Transform nach dem Verladen

FAQ

Wie kann ich das Format einer unbekannten Datei erkennen?

Verwendung FileFormat.Detect():

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

Kann ich aus einem Stream anstelle eines Pfades laden?

  • Ja, das ist gut. Scene.Open() Akzeptiert eine Stream:
using var stream = File.OpenRead("model.glb");
scene.Open(stream);

Welche Formate unterstützen sowohl den Import als auch den Export?

OBJ, STL, glTF/GLB, FBX, COLLADA und 3MF unterstützen beide Richtungen. PLY unterstützt nur den Import (der Exporteur von PL Y ist nicht kabelgebunden).


Zusammenfassung der API-Referenzen

Klasse / MethodeBeschreibung
SceneTop-Level 3D-Szenebehälter
Scene.Open()Lade eine 3D-Datei nach Pfad oder Stream ein
Scene.Save()Szenen in Datei oder Streaming exportieren
Scene.FromFile()Static-Fabrik zu laden und zurück eine Scene
NodeSzenenhierarchie-Knoten, die Entitäten und Transformationen halten
Node.CreateChildNode()Erstellen und Anschließen eines Kinderknoten
MeshPolygonmaschenelemente mit Kontrollpunkten und Gesichtslisten
Mesh.CreatePolygon()Definition einer Polygonfläche durch Winkelindizes
Box / Sphere / CylinderEingebettete parametrische Primitive
TransformLokale Übersetzung, Rotation und Umfang
FileFormatRegistrierung und Detektor für unterstützte Formate
LambertMaterial / PhongMaterial / PbrMaterialMaterialart für die Schattenbildung
 Deutsch