Funkcionalnosti i mogućnosti

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:

KlasaSmerKljučna svojstva
ObjLoadOptionsUvozFlipCoordinateSystem, EnableMaterials, Scale
ObjSaveOptionsIzvozFlipCoordinateSystem, EnableMaterials, PointCloud
FbxLoadOptionsUvoz(podrazumevana podešavanja)
GltfLoadOptionsUvoz(podrazumevana podešavanja)
GltfSaveOptionsIzvoz(podrazumevana podešavanja)
StlLoadOptionsUvoz(podrazumevana podešavanja)
StlSaveOptionsIzvoz(podrazumevana podešavanja)
ColladaLoadOptionsUvozFlipCoordinateSystem
ColladaSaveOptionsIzvozIndented, TransformStyle
PlyLoadOptionsUvoz(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đeno LoadOptions
  • Pretvori primitive u Mesh pomoću ToMesh() pre nego što dodate elemente vrha
  • Koristite GltfSaveOptions sa .glb ekstenzija za kompaktan binarni izlaz
  • Proverite node.Entity za null pre 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

ProblemUzrokRešenje
ImportException prilikom učitavanjaNije podržan ili oštećen fajlProverite 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đenaPostavite .mtl datoteku pored .obj ili postavite ObjLoadOptions.EnableMaterials = true
Neusklađenost skale nakon uvoza FBX-aRazličiti sistemi jedinicaKoristite 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 / MetodOpis
SceneKontejner 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
MeshPoligonalna mreža sa kontrolnim tačkama i listama površina
Mesh.CreatePolygon()Definiši poligonalnu površinu po indeksima vrhova
Box / Sphere / CylinderUgrađene parametarske primitive
TransformLokalna translacija, rotacija i skaliranje
FileFormatRegistar i detektor za podržane formate
LambertMaterial / PhongMaterial / PbrMaterialTipovi materijala za senčenje
 Српски