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ályIrányKulcsfontosságú tulajdonságok
ObjLoadOptionsImportálásFlipCoordinateSystem, EnableMaterials, Scale
ObjSaveOptionsExportálásFlipCoordinateSystem, EnableMaterials, PointCloud
FbxLoadOptionsImportálás(alapértelmezett beállítások)
GltfLoadOptionsImportálás(alapértelmezett beállítások)
GltfSaveOptionsExportálás(alapértelmezett beállítások)
StlLoadOptionsImportálás(alapértelmezett beállítások)
StlSaveOptionsExportálás(alapértelmezett beállítások)
ColladaLoadOptionsImportálásFlipCoordinateSystem
ColladaSaveOptionsExportálásIndented, TransformStyle
PlyLoadOptionsImportá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 egyedi LoadOptions
  • Alapobjektumok konvertálása Mesh val ToMesh() a csúcs elemek hozzáadása előtt
  • Használd GltfSaveOptions egy .glb kiterjesztés a kompakt bináris kimenethez
  • Ellenőrizd node.Entity a null dobá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

HibaOkaJavítás
ImportException betöltéskorNem támogatott vagy sérült fájlEllenő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ánEltérő mértékegységrendszerekHaszná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ódusLeírás
SceneLegfelső 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
NodeJelenet hierarchia csomópont, amely entitásokat és transzformációkat tartalmaz
Node.CreateChildNode()Gyermekcsomópont létrehozása és csatolása
MeshPoligon háló vezérlőpontokkal és felületi listákkal
Mesh.CreatePolygon()Poligon felület definiálása csúcsindexek alapján
Box / Sphere / CylinderBeépített paraméteres primitívek
TransformHelyi eltolás, forgatás és méretezés
FileFormatRegiszter és detektor a támogatott formátumokhoz
LambertMaterial / PhongMaterial / PbrMaterialAnyagtípusok a megvilágításhoz
 Magyar