Značajke i funkcionalnosti

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:

KlasaSmjerKljučna svojstva
ObjLoadOptionsUvozFlipCoordinateSystem, EnableMaterials, Scale
ObjSaveOptionsIzvozFlipCoordinateSystem, EnableMaterials, PointCloud
FbxLoadOptionsUvoz(zadane postavke)
GltfLoadOptionsUvoz(zadane postavke)
GltfSaveOptionsIzvoz(zadane postavke)
StlLoadOptionsUvoz(zadane postavke)
StlSaveOptionsIzvoz(zadane postavke)
ColladaLoadOptionsUvozFlipCoordinateSystem
ColladaSaveOptionsIzvozIndented, TransformStyle
PlyLoadOptionsUvoz(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đeno LoadOptions
  • Pretvori primitive u Mesh s ToMesh() prije dodavanja vršnih elemenata
  • Koristi GltfSaveOptions s .glb ekstenzijom za kompaktan binarni izlaz
  • Provjeri node.Entity za null prije 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

ProblemUzrokPopravak
ImportException prilikom učitavanjaNije podržana ili oštećena datotekaProvjerite 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đenaPostavite .mtl datoteku pored .obj ili postavite ObjLoadOptions.EnableMaterials = true
Neusklađenost skale nakon uvoza FBX-aRazličiti sustavi jedinicaKoristite 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 / MetodaOpis
SceneKontejner 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
MeshPoligonalna mreža s kontrolnim točkama i listama faceta
Mesh.CreatePolygon()Definiraj poligonalnu površinu pomoću indeksa vrhova
Box / Sphere / CylinderUgrađeni parametrijski primitivci
TransformLokalni pomak, rotacija i skaliranje
FileFormatRegistar i detektor za podržane formate
LambertMaterial / PhongMaterial / PbrMaterialVrste materijala za sjenčanje
 Hrvatski