Značajke i funkcionalnosti
Značajke i funkcionalnosti
Ova stranica pokriva svako glavno područje značajki Aspose.3D 26.1.0 s radnim C# primjerima.
Učitavanje i spremanje scena
Scene.Open() učitava datoteku; Scene.Save() izvozi je. Format se otkriva iz ekstenzije datoteke:
using Aspose.ThreeD;
var scene = new Scene();
scene.Open("input.obj");
scene.Save("output.glb");Koristite statičku tvornicu Scene.FromFile() kao alternativu:
var scene = Scene.FromFile("input.fbx");
scene.Save("output.stl");Opcije specifične za format
Proslijedite LoadOptions ili SaveOptions podklase za finu 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 | Smjer | Ključna svojstva |
|---|---|---|
ObjLoadOptions | Uvoz | FlipCoordinateSystem, EnableMaterials, Scale |
ObjSaveOptions | Izvoz | FlipCoordinateSystem, EnableMaterials, PointCloud |
FbxLoadOptions | Uvoz | (zadane postavke) |
GltfLoadOptions | Uvoz | (zadane postavke) |
GltfSaveOptions | Izvoz | (zadane postavke) |
StlLoadOptions | Uvoz | (zadane postavke) |
StlSaveOptions | Izvoz | (zadane postavke) |
ColladaLoadOptions | Uvoz | FlipCoordinateSystem |
ColladaSaveOptions | Izvoz | Indented, TransformStyle |
PlyLoadOptions | Uvoz | (zadane postavke) |
Izgradnja grafova scene
Stvorite čvorove i prikačite entitete kako biste izgradili 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 djeci putem node.ChildNodes i priloženom entitetu putem node.Entity.
Mesh i primitivci
Stvori Mesh programatski s kontrolnim toč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 primitivni (Box, Sphere, Cylinder) se mogu pretvoriti u Mesh:
var box = new Box(10, 10, 10);
Mesh boxMesh = box.ToMesh();Vertex elementi
Prikačite normale, UV koordinate i boje vrhova na geometriju:
var normals = new VertexElementNormal(MappingMode.ControlPoint, ReferenceMode.Direct);
mesh.AddElement(normals);Dostupni tipovi vršnih elemenata: VertexElementNormal, VertexElementUV, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent.
Transformacije
Svaki Node nositi Transform s 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 svjetskom prostoru putem node.GlobalTransform.Matrix ili node.EvaluateGlobalTransform().
Materijali
Dodijelite materijale čvorovima za podatke o sjenčenju:
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);Vrste materijala: LambertMaterial, PhongMaterial, PbrMaterial.
Savjeti i najbolje prakse
- Koristi
Scene.FromFile()za jedinstavčni učitavanje kada ne trebate prilagođenoLoadOptions - Pretvori primitive u
MeshsToMesh()prije dodavanja vršnih elemenata - Koristi
GltfSaveOptionss.glbekstenzijom za kompaktan binarni izlaz - Provjeri
node.Entityzanullprije kastiranja — ne svaki čvor nosi geometriju - Koristi
PolygonModifier.Triangulate()za pretvaranje kvadratnih mreža prije izvoza u formate koji podržavaju samo trokute poput STL
Uobičajeni problemi
| Problem | Uzrok | Popravak |
|---|---|---|
ImportException prilikom učitavanja | Nije podržana ili oštećena datoteka | Provjerite otvara li se datoteka u 3D pregledniku; provjerite je li format na popisu podržanih |
| Nedostaju materijali nakon učitavanja OBJ-a | .mtl datoteka nije pronađena | Postavite .mtl datoteku pored .obj ili postavite ObjLoadOptions.EnableMaterials = true |
| Neusklađenost skale nakon uvoza FBX-a | Različiti sustavi jedinica | Koristite ObjLoadOptions.Scale ili primijenite Transform nakon učitavanja |
FAQ
Kako mogu otkriti format nepoznate datoteke?
Koristite FileFormat.Detect():
var format = FileFormat.Detect("unknown_file.bin");
Console.WriteLine(format.Extension);Mogu li učitati iz streama umjesto putanje do datoteke?
Da. Scene.Open() prima 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 smjera. PLY podržava samo uvoz (PLY izvoznik nije implementiran).
Sažetak API reference
| Klasa / Metoda | Opis |
|---|---|
Scene | Kontejner 3D scene najviše razine |
Scene.Open() | Učitaj 3D datoteku putem putanje ili toka |
Scene.Save() | Izvezi scenu u datoteku ili tok |
Scene.FromFile() | Statička tvornica za učitavanje i vraćanje Scene |
Node | Čvor hijerarhije scene koji sadrži entitete i transformacije |
Node.CreateChildNode() | Stvori i priloži podčvor |
Mesh | Poligonalna mreža s kontrolnim točkama i listama faceta |
Mesh.CreatePolygon() | Definiraj poligonalnu površinu pomoću indeksa vrhova |
Box / Sphere / Cylinder | Ugrađeni parametrijski primitivci |
Transform | Lokalni pomak, rotacija i skaliranje |
FileFormat | Registar i detektor za podržane formate |
LambertMaterial / PhongMaterial / PbrMaterial | Vrste materijala za sjenčanje |