Caracteristici și Funcționalități

Caracteristici și Funcționalități

Caracteristici și Funcționalități

Această pagină acoperă fiecare domeniu principal de funcționalitate al aspose-3d-foss 26.1.0 cu exemple Java funcționale.


Încărcarea și Salvarea Scenelor

scene.open() încarcă un fișier; scene.save() îl exportă:

import com.aspose.threed.Scene;

Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");

Alternativă cu fabrică statică:

Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");

Opțiuni specifice formatului

Trecere LoadOptions sau SaveOptions subclase pentru control detaliat:

import com.aspose.threed.*;

Scene scene = new Scene();
ObjLoadOptions opts = new ObjLoadOptions();
opts.setFlipCoordinateSystem(true);
scene.open("model.obj", opts);

GltfSaveOptions saveOpts = new GltfSaveOptions();
saveOpts.setFlipCoordinateSystem(true);
scene.save("model.glb", saveOpts);

Notă: FBX este suportat doar pentru import; exportul FBX nu este implementat în versiunea FOSS. Doar FBX binar fișierele sunt acceptate pentru import — ASCII FBX aruncă ImportException.


Construirea unui graf de scenă

Creează noduri și atașează entități:

Scene scene = new Scene();
Node root = scene.getRootNode();

Mesh mesh = new Mesh("myMesh");
mesh.getControlPoints().add(new Vector4(0, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 10, 0));
mesh.createPolygon(0, 1, 2);

Node meshNode = root.createChildNode("triangle", mesh);

Operații Mesh

Creează un Mesh programatic cu puncte de control și poligoane:

Mesh mesh = new Mesh("custom");
mesh.getControlPoints().add(new Vector4(0, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 10, 0));
mesh.getControlPoints().add(new Vector4(0, 10, 0));
mesh.createPolygon(0, 1, 2, 3);

Transformări

Fiecare Node conține un Transform:

Node node = scene.getRootNode().createChildNode("moved", new Mesh());
node.getTransform().setTranslation(10, 0, 5);
node.getTransform().setScale(2, 2, 2);

Citește spațiul mondial prin node.getGlobalTransform().getMatrix().


Materiale

Atribuie materiale nodurilor:

PbrMaterial mat = new PbrMaterial("shiny");
mat.setAlbedo(new Vector4(0.8, 0.2, 0.2, 1.0));
mat.setMetallicFactor(0.5);
mat.setRoughnessFactor(0.3);

scene.getRootNode().createChildNode("red_mesh", mesh, mat);

Tipuri de material: Material (bază), PbrMaterial (PBR metallic-roughness).


Sfaturi și bune practici

  • Folosește Scene.fromFile() pentru încărcări pe o singură linie când nu sunt necesare opțiuni personalizate
  • Construiește mesh-uri programatic cu createPolygon() pentru geometrie personalizată
  • Folosește .glb extensie pentru ieșire binară compactă glTF
  • Verifică node.getEntity() != null înainte de conversie
  • Exportul STL nu triangulează automat fețele poligonale. Exportul STL binar scrie doar primii 3 vârfuri ale fiecărei fețe poligonale — fețele quad sau n-gon sunt tăiate silențios. Exportul STL ASCII scrie toți indicii vârfurilor, ceea ce produce blocuri de fațete malformate pentru fețele care nu sunt triunghiuri. Transmite întotdeauna mesh-uri pre-triangulate (fețe toate triunghiulare) la exportul STL pentru a evita pierderea de date sau ieșirea invalidă.

Probleme comune

ProblemăCauzăRemediază
Excepție la încărcareFișier nesuportat sau coruptVerificați că fișierul se deschide într-un vizualizator 3D
Materiale lipsă după încărcarea OBJ.mtl fișierul nu a fost găsitPlasează .mtl lângă .obj; asigurați-vă că materialele sunt activate
Neconcordanță de scară după importSisteme de unități diferiteAplică un Transform scală după încărcare

FAQ

Cum pot detecta formatul unui fișier?

FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());

Pot încărca dintr-un flux?

Da. scene.open() acceptă un InputStream.

Ce formate suportă atât importul, cât și exportul?

OBJ, STL și glTF/GLB suportă ambele direcții. FBX este doar pentru import; exportul nu este implementat în versiunea FOSS.


Rezumat al referinței API

Clasă / MetodăDescriere
SceneContainer de scenă 3D de nivel superior
scene.open()Încarcă un fișier 3D prin cale sau flux
scene.save()Exportă scena în fișier sau flux
Scene.fromFile()Fabrică statică pentru a încărca și returna un Scene
NodeNod ierarhic al scenei
node.createChildNode()Creează și atașează un child node
MeshPolygon mesh cu control points și face lists
mesh.createPolygon()Definește un polygon face
Mesh.toMesh()Convertește sau clonează mesh geometry
TransformLocal translation, rotation, and scale
FileFormatRegistry și detector pentru formats
 Română