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
.glbextensie 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ărcare | Fișier nesuportat sau corupt | Verificați că fișierul se deschide într-un vizualizator 3D |
| Materiale lipsă după încărcarea OBJ | .mtl fișierul nu a fost găsit | Plasează .mtl lângă .obj; asigurați-vă că materialele sunt activate |
| Neconcordanță de scară după import | Sisteme de unități diferite | Aplică 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 |
|---|---|
Scene | Container 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 |
Node | Nod ierarhic al scenei |
node.createChildNode() | Creează și atașează un child node |
Mesh | Polygon mesh cu control points și face lists |
mesh.createPolygon() | Definește un polygon face |
Mesh.toMesh() | Convertește sau clonează mesh geometry |
Transform | Local translation, rotation, and scale |
FileFormat | Registry și detector pentru formats |