Jellemzők és funkciók
Jellemzők és funkciók
Ez az oldal lefedi a(z) Aspose.3D 26.1.0 működő C# példákkal.
Jelenetek betöltése és mentése
Scene.Open() betölt egy fájlt; Scene.Save() exportálja. A formátum a fájlkiterjesztés alapján kerül felismerésre:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("input.obj");
scene.Save("output.glb");Használd a statikus gyárat Scene.FromFile() alternatívaként:
var scene = Scene.FromFile("input.fbx");
scene.Save("output.stl");Formátum-specifikus beállítások
Add át LoadOptions vagy SaveOptions leszármazott osztályokat a finomhangolt vezérléshez:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
var scene = new Scene();
scene.Open("model.obj", new ObjLoadOptions { FlipCoordinateSystem = true });
scene.Save("model.fbx");Elérhető opcióosztályok:
| Osztály | Irány | Kulcsfontosságú tulajdonságok |
|---|---|---|
ObjLoadOptions | Importálás | FlipCoordinateSystem, EnableMaterials, Scale |
ObjSaveOptions | Exportálás | FlipCoordinateSystem, EnableMaterials, PointCloud |
FbxLoadOptions | Importálás | (alapértelmezett beállítások) |
GltfLoadOptions | Importálás | (alapértelmezett beállítások) |
GltfSaveOptions | Exportálás | (alapértelmezett beállítások) |
StlLoadOptions | Importálás | (alapértelmezett beállítások) |
StlSaveOptions | Exportálás | (alapértelmezett beállítások) |
ColladaLoadOptions | Importálás | FlipCoordinateSystem |
ColladaSaveOptions | Exportálás | Indented, TransformStyle |
PlyLoadOptions | Importálás | (alapértelmezett beállítások) |
Jelenetgráf felépítése
Hozzon létre csomópontokat és csatoljon entitásokat a hierarchia felépítéséhez:
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));Gyermekek elérése ezen keresztül node.ChildNodes és a csatolt entitás elérése ezen keresztül node.Entity.
Háló és primitívek
Hozzon létre egy Mesh programozottan vezérlőpontokkal és poligonokkal:
// 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);Beépített primitívek (Box, Sphere, Cylinder) átalakítható Mesh:
var box = new Box(10, 10, 10);
Mesh boxMesh = box.ToMesh();Vertex elemek
Normálvektorokat, UV-ket és vertex színeket csatol a geometriához:
var normals = new VertexElementNormal(MappingMode.ControlPoint, ReferenceMode.Direct);
mesh.AddElement(normals);Elérhető csúcselem típusok: VertexElementNormal, VertexElementUV, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent.
Transzformációk
Minden Node hord egy Transform val Translation, Rotation, és 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);Olvasd a világkoordináta pozíciót a node.GlobalTransform.Matrix vagy node.EvaluateGlobalTransform().
Anyagok
Anyagokat rendeljen a csomópontokhoz a megvilágítási adatokhoz:
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);Anyagtípusok: LambertMaterial, PhongMaterial, PbrMaterial.
Tippek és bevált gyakorlatok
- Használd
Scene.FromFile()egysoros betöltéshez, ha nincs szükséged egyediLoadOptions - Alapobjektumok konvertálása
MeshvalToMesh()a csúcs elemek hozzáadása előtt - Használd
GltfSaveOptionsegy.glbkiterjesztés a kompakt bináris kimenethez - Ellenőrizd
node.Entityanulldobás előtt — nem minden csomópont tartalmaz geometriát - Használd
PolygonModifier.Triangulate()a négyoldalú hálók konvertálásához, mielőtt STL-hez hasonló csak háromszög formátumokba exportálnád
Gyakori problémák
| Hiba | Oka | Javítás |
|---|---|---|
ImportException betöltéskor | Nem támogatott vagy sérült fájl | Ellenőrizze, hogy a fájl megnyílik egy 3D megjelenítőben; győződjön meg róla, hogy a formátum szerepel a támogatottak listáján |
| Hiányzó anyagok az OBJ betöltése után | .mtl fájl nem található | Helyezze a .mtl fájlt a .obj vagy állítsa be ObjLoadOptions.EnableMaterials = true |
| Méretezési eltérés FBX importálás után | Eltérő mértékegységrendszerek | Használja ObjLoadOptions.Scale vagy alkalmazzon egy Transform betöltés után |
FAQ
Hogyan tudom felismerni egy ismeretlen fájl formátumát?
Használja FileFormat.Detect():
var format = FileFormat.Detect("unknown_file.bin");
Console.WriteLine(format.Extension);Betölthetek egy adatfolyamból a fájlútvonal helyett?
Igen. Scene.Open() elfogad egy Stream:
using var stream = File.OpenRead("model.glb");
scene.Open(stream);Mely formátumok támogatják mind az importot, mind az exportot?
Az OBJ, STL, glTF/GLB, FBX, COLLADA és 3MF mindkét irányt támogatja. A PLY csak importálást támogat (a PLY exportáló nincs bekötve).
API-referencia összefoglaló
| Osztály / Metódus | Leírás |
|---|---|
Scene | Legfelső szintű 3D jelenet konténer |
Scene.Open() | 3D fájl betöltése útvonal vagy adatfolyam alapján |
Scene.Save() | Jelenet exportálása fájlba vagy adatfolyamba |
Scene.FromFile() | Statikus gyár a betöltéshez és visszaadáshoz Scene |
Node | Jelenet hierarchia csomópont, amely entitásokat és transzformációkat tartalmaz |
Node.CreateChildNode() | Gyermekcsomópont létrehozása és csatolása |
Mesh | Poligon háló vezérlőpontokkal és felületi listákkal |
Mesh.CreatePolygon() | Poligon felület definiálása csúcsindexek alapján |
Box / Sphere / Cylinder | Beépített paraméteres primitívek |
Transform | Helyi eltolás, forgatás és méretezés |
FileFormat | Regiszter és detektor a támogatott formátumokhoz |
LambertMaterial / PhongMaterial / PbrMaterial | Anyagtípusok a megvilágításhoz |