Funkcionalnosti i mogućnosti
Funkcionalnosti i mogućnosti
Ova stranica pokriva svaku glavnu oblast funkcionalnosti Aspose.3D 26.1.0 sa radnim C# primerima.
Učitavanje i čuvanje scena
Scene.Open() učitava fajl; Scene.Save() izvozi ga. Format se otkriva na osnovu ekstenzije fajla:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("input.obj");
scene.Save("output.glb");Koristite statičku fabriku Scene.FromFile() kao alternativu:
var scene = Scene.FromFile("input.fbx");
scene.Save("output.stl");Opcije specifične za format
Prosledite LoadOptions ili SaveOptions podklase za detaljnu kontrolu:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
var scene = new Scene();
scene.Open("model.obj", new ObjLoadOptions { FlipCoordinateSystem = true });
scene.Save("model.fbx");Dostupne klase opcija:
| Klasa | Smer | Ključna svojstva |
|---|---|---|
ObjLoadOptions | Uvoz | FlipCoordinateSystem, EnableMaterials, Scale |
ObjSaveOptions | Izvoz | FlipCoordinateSystem, EnableMaterials, PointCloud |
FbxLoadOptions | Uvoz | (podrazumevana podešavanja) |
GltfLoadOptions | Uvoz | (podrazumevana podešavanja) |
GltfSaveOptions | Izvoz | (podrazumevana podešavanja) |
StlLoadOptions | Uvoz | (podrazumevana podešavanja) |
StlSaveOptions | Izvoz | (podrazumevana podešavanja) |
ColladaLoadOptions | Uvoz | FlipCoordinateSystem |
ColladaSaveOptions | Izvoz | Indented, TransformStyle |
PlyLoadOptions | Uvoz | (podrazumevana podešavanja) |
Izgradnja Scene Graph-a
Kreirajte čvorove i prikačite entitete da izgradite hijerarhiju:
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));Pristup podređenim putem node.ChildNodes i priloženom entitetom putem node.Entity.
Mesh i primitivni objekti
Kreiraj Mesh programatski sa kontrolnim tačkama i poligonima:
// 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);Ugrađeni primitivci (Box, Sphere, Cylinder) se može pretvoriti u Mesh:
var box = new Box(10, 10, 10);
Mesh boxMesh = box.ToMesh();Elementi vrha
Prikačite normale, UV koordinate i boje vrhova na geometriju:
var normals = new VertexElementNormal(MappingMode.ControlPoint, ReferenceMode.Direct);
mesh.AddElement(normals);Dostupni tipovi elementa vrha: VertexElementNormal, VertexElementUV, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent.
Transformacije
Svaki Node sadrži Transform sa Translation, Rotation, i 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);Pročitaj poziciju u svetskom prostoru putem node.GlobalTransform.Matrix ili node.EvaluateGlobalTransform().
Materijali
Dodelite materijale čvorovima za podatke o osvetljenju:
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);Tipovi materijala: LambertMaterial, PhongMaterial, PbrMaterial.
Saveti i najbolje prakse
- Koristi
Scene.FromFile()za učitavanje jednim redom kada ne trebate prilagođenoLoadOptions - Pretvori primitive u
MeshpomoćuToMesh()pre nego što dodate elemente vrha - Koristite
GltfSaveOptionssa.glbekstenzija za kompaktan binarni izlaz - Proverite
node.Entityzanullpre konverzije — ne svaki čvor nosi geometriju - Koristite
PolygonModifier.Triangulate()za konvertovanje kvadratnih mreža pre izvoza u formate koji podržavaju samo trouglove, poput STL
Uobičajeni problemi
| Problem | Uzrok | Rešenje |
|---|---|---|
ImportException prilikom učitavanja | Nije podržan ili oštećen fajl | Proverite da li se fajl otvara u 3D pregledaču; proverite da li je format na listi podržanih |
| Nedostaju materijali nakon učitavanja OBJ | .mtl datoteka nije pronađena | Postavite .mtl datoteku pored .obj ili postavite ObjLoadOptions.EnableMaterials = true |
| Neusklađenost skale nakon uvoza FBX-a | Različiti sistemi jedinica | Koristite ObjLoadOptions.Scale ili primenite Transform posle učitavanja |
FAQ
Kako da otkrijem format nepoznate datoteke?
Koristi FileFormat.Detect():
var format = FileFormat.Detect("unknown_file.bin");
Console.WriteLine(format.Extension);Mogu li učitati iz stream-a umesto putanje do datoteke?
Da. Scene.Open() prihvata Stream:
using var stream = File.OpenRead("model.glb");
scene.Open(stream);Koji formati podržavaju i uvoz i izvoz?
OBJ, STL, glTF/GLB, FBX, COLLADA i 3MF podržavaju oba pravca. PLY podržava samo uvoz (PLY izvoznik nije povezan).
Sažetak API reference
| Klasa / Metod | Opis |
|---|---|
Scene | Kontejner 3D scene najvišeg nivoa |
Scene.Open() | Učitaj 3D fajl putem putanje ili toka |
Scene.Save() | Izvezi scenu u fajl ili tok |
Scene.FromFile() | Statička fabrika za učitavanje i vraćanje a Scene |
Node | Čvor hijerarhije scene koji drži entitete i transformacije |
Node.CreateChildNode() | Kreiraj i prikači čvor deteta |
Mesh | Poligonalna mreža sa kontrolnim tačkama i listama površina |
Mesh.CreatePolygon() | Definiši poligonalnu površinu po indeksima vrhova |
Box / Sphere / Cylinder | Ugrađene parametarske primitive |
Transform | Lokalna translacija, rotacija i skaliranje |
FileFormat | Registar i detektor za podržane formate |
LambertMaterial / PhongMaterial / PbrMaterial | Tipovi materijala za senčenje |