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:
| Klasse | Richtung | Schlüsselmerkmale |
|---|---|---|
ObjLoadOptions | Einfuhr | FlipCoordinateSystem, EnableMaterials, Scale |
ObjSaveOptions | Ausfuhr | FlipCoordinateSystem, EnableMaterials, PointCloud |
FbxLoadOptions | Einfuhr | (Standard-Einstellungen) |
GltfLoadOptions | Einfuhr | (Standard-Einstellungen) |
GltfSaveOptions | Ausfuhr | (Standard-Einstellungen) |
StlLoadOptions | Einfuhr | (Standard-Einstellungen) |
StlSaveOptions | Ausfuhr | (Standard-Einstellungen) |
ColladaLoadOptions | Einfuhr | FlipCoordinateSystem |
ColladaSaveOptions | Ausfuhr | Indented, TransformStyle |
PlyLoadOptions | Einfuhr | (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
Meshmit:ToMesh()vor dem Hinzufügen von Winkelelementen - Verwendung
GltfSaveOptionsmit einem.glbErweiterung für kompakte binäre Ausgänge - Überprüfung
node.Entityfür dienullVor 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
| Ausgabe | Ursache | Behebung |
|---|---|---|
ImportException aufgeladen | Nicht 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 gefunden | Die .mtl Die Liste der .obj oder gesetzt ObjLoadOptions.EnableMaterials = true |
| Skalierungsfehler nach FBX-Import | Verschiedene Einheitensysteme | Verwendung 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 eineStream:
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 / Methode | Beschreibung |
|---|---|
Scene | Top-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 |
Node | Szenenhierarchie-Knoten, die Entitäten und Transformationen halten |
Node.CreateChildNode() | Erstellen und Anschließen eines Kinderknoten |
Mesh | Polygonmaschenelemente mit Kontrollpunkten und Gesichtslisten |
Mesh.CreatePolygon() | Definition einer Polygonfläche durch Winkelindizes |
Box / Sphere / Cylinder | Eingebettete parametrische Primitive |
Transform | Lokale Übersetzung, Rotation und Umfang |
FileFormat | Registrierung und Detektor für unterstützte Formate |
LambertMaterial / PhongMaterial / PbrMaterial | Materialart für die Schattenbildung |