Funkcie a vlastnosti
Funkcie a vlastnosti
Táto stránka pokrýva každú hlavnú oblasť funkcií Aspose.3D 26.1.0 so funkčnými príkladmi v C#.
Načítanie a ukladanie scén
Scene.Open() načíta súbor; Scene.Save() exportuje ho. Formát sa zistí z prípony súboru:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("input.obj");
scene.Save("output.glb");Použite statickú továreň Scene.FromFile() ako alternatívu:
var scene = Scene.FromFile("input.fbx");
scene.Save("output.stl");Formátovo špecifické možnosti
Zadajte LoadOptions alebo SaveOptions podtriedy pre detailnú kontrolu:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
var scene = new Scene();
scene.Open("model.obj", new ObjLoadOptions { FlipCoordinateSystem = true });
scene.Save("model.fbx");Dostupné triedy možností:
| Trieda | Smer | Kľúčové vlastnosti |
|---|---|---|
ObjLoadOptions | Import | FlipCoordinateSystem, EnableMaterials, Scale |
ObjSaveOptions | Export | FlipCoordinateSystem, EnableMaterials, PointCloud |
FbxLoadOptions | Import | (predvolené nastavenia) |
GltfLoadOptions | Importovať | (predvolené nastavenia) |
GltfSaveOptions | Exportovať | (predvolené nastavenia) |
StlLoadOptions | Import | (predvolené nastavenia) |
StlSaveOptions | Export | (predvolené nastavenia) |
ColladaLoadOptions | Import | FlipCoordinateSystem |
ColladaSaveOptions | Export | Indented, TransformStyle |
PlyLoadOptions | Import | (predvolené nastavenia) |
Budovanie grafu scény
Vytvorte uzly a pripojte entity na zostavenie hierarchie:
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));Prístup k podobjektom cez node.ChildNodes a pripojenú entitu cez node.Entity.
Mesh a primitívy
Vytvoriť Mesh programovo s riadiacimi bodmi a polygonmi:
// 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);Vstavané primitívy (Box, Sphere, Cylinder) je možné previesť na Mesh:
var box = new Box(10, 10, 10);
Mesh boxMesh = box.ToMesh();Elementy vrcholov
Pripojte normály, UV a farby vrcholov k geometrii:
var normals = new VertexElementNormal(MappingMode.ControlPoint, ReferenceMode.Direct);
mesh.AddElement(normals);Dostupné typy vrcholových prvkov: VertexElementNormal, VertexElementUV, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent.
Transformácie
Každý Node nesie Transform s Translation, Rotation, a 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);Prečítajte pozíciu vo svetovom priestore cez node.GlobalTransform.Matrix alebo node.EvaluateGlobalTransform().
Materiály
Priraďte materiály uzlom pre údaje o osvetlení:
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);Typy materiálov: LambertMaterial, PhongMaterial, PbrMaterial.
Tipy a osvedčené postupy
- Použite
Scene.FromFile()pre jednorazové načítanie, keď nepotrebujete vlastnéLoadOptions - Previesť primitívy na
MeshsToMesh()pred pridaním vrcholových prvkov - Použite
GltfSaveOptionss.glbrozšírenie pre kompaktný binárny výstup - Skontrolujte
node.Entityprenullpred pretypovaním — nie každý uzol nesie geometriu - Použite
PolygonModifier.Triangulate()na konverziu štvorcových sietí pred exportom do formátov podporujúcich iba trojuholníky, ako je STL
Bežné problémy
| Problém | Príčina | Oprava |
|---|---|---|
ImportException pri načítaní | Nepodporovaný alebo poškodený súbor | Overte, že sa súbor otvorí v 3D prehliadači; skontrolujte, že formát je v zozname podporovaných |
| Chýbajúce materiály po načítaní OBJ | .mtl súbor nebol nájdený | Umiestnite .mtl súbor vedľa .obj alebo nastavte ObjLoadOptions.EnableMaterials = true |
| Nesúlad mierky po importe FBX | Rôzne systémy jednotiek | Použite ObjLoadOptions.Scale alebo použite Transform po načítaní |
FAQ
Ako môžem zistiť formát neznámeho súboru?
Použite FileFormat.Detect():
var format = FileFormat.Detect("unknown_file.bin");
Console.WriteLine(format.Extension);Môžem načítať zo streamu namiesto cesty k súboru?
Áno. Scene.Open() akceptuje Stream:
using var stream = File.OpenRead("model.glb");
scene.Open(stream);Ktoré formáty podporujú import aj export?
Formáty OBJ, STL, glTF/GLB, FBX, COLLADA a 3MF podporujú oboje smerov. PLY podporuje iba import (exportér PLY nie je zapojený).
Zhrnutie referencie API
| Trieda / Metóda | Popis |
|---|---|
Scene | Kontajner 3D scény najvyššej úrovne |
Scene.Open() | Načítajte 3D súbor podľa cesty alebo prúdu |
Scene.Save() | Exportujte scénu do súboru alebo prúdu |
Scene.FromFile() | Statická továreň na načítanie a vrátenie Scene |
Node | Uzol hierarchie scény obsahujúci entity a transformácie |
Node.CreateChildNode() | Vytvoriť a pripojiť podriadený uzol |
Mesh | Polygónová sieť s riadiacimi bodmi a zoznamami plôch |
Mesh.CreatePolygon() | Definovať polygónovú plochu pomocou indexov vrcholov |
Box / Sphere / Cylinder | Vstavané parametrické primitívy |
Transform | Lokálny posun, rotácia a mierka |
FileFormat | Register a detektor podporovaných formátov |
LambertMaterial / PhongMaterial / PbrMaterial | Typy materiálov pre tieňovanie |