Funkcionalnosti i mogućnosti
Funkcionalnosti i mogućnosti
Ova stranica pokriva svaku glavnu oblast funkcionalnosti aspose-3d-foss 26.1.0 sa radnim Java primerima.
Učitavanje i čuvanje scena
scene.open() učitava fajl; scene.save() izvozi ga:
import com.aspose.threed.Scene;
Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");Alternativa statičkoj fabrici:
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");Opcije specifične za format
Pass LoadOptions ili SaveOptions podklase za finu kontrolu:
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);Napomena: FBX je podržan samo za uvoz; izvoz FBX‑a nije implementiran u FOSS verziji. Samo binarni FBX datoteke su podržane za uvoz — ASCII FBX baci ImportException.
Izgradnja Scene Graph-a
Kreirajte čvorove i prikačite entitete:
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);Mesh operacije
Kreirajte Mesh programski sa kontrolnim tačkama i poligonima:
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);Transformacije
Svaki Node sadrži Transform:
Node node = scene.getRootNode().createChildNode("moved", new Mesh());
node.getTransform().setTranslation(10, 0, 5);
node.getTransform().setScale(2, 2, 2);Čitaj world-space putem node.getGlobalTransform().getMatrix().
Materijali
Dodelite materijale čvorovima:
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);Tipovi materijala: Material (osnovni), PbrMaterial (PBR metalik-škrabljivost).
Saveti i najbolje prakse
- Koristi
Scene.fromFile()za jednolinijska učitavanja kada prilagođene opcije nisu potrebne - Kreiraj meshes programatski pomoću
createPolygon()za prilagođenu geometriju - Koristite
.glbekstenzija za kompaktan binarni glTF izlaz - Proverite
node.getEntity() != nullpre kastovanja - STL izvoz radi ne automatski trianguliše poligonalne površine. Binarni STL izvoz zapisuje samo prva 3 vrha svake poligonalne površine — kvadratne ili n‑gonalne površine se tiho skraćuju. ASCII STL izvoz zapisuje sve indekse vrhova, što dovodi do neispravnih blokova faseta za ne‑trokutaste površine. Uvek prosleđujte prethodno triangulisane mreže (sve površine su trouglovi) STL izvozu kako biste izbegli gubitak podataka ili neispravan izlaz.
Uobičajeni problemi
| Problem | Uzrok | Ispravka |
|---|---|---|
| Izuzetak pri učitavanju | Nepodržan ili oštećen fajl | Proverite da li se fajl otvara u 3D pregledaču |
| Nedostaju materijali nakon učitavanja OBJ | .mtl fajl nije pronađen | Mesto .mtl pored .obj; osigurajte da su materijali omogućeni |
| Neusklađenost skale nakon uvoza | Različiti sistemi jedinica | Primeni Transform skalu nakon učitavanja |
FAQ
Kako da detektujem format fajla?
FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());Mogu li učitati iz toka?
Da. scene.open() prihvata InputStream.
Koji formati podržavaju i uvoz i izvoz?
OBJ, STL i glTF/GLB podržavaju oba pravca. FBX je samo za uvoz; izvoz nije implementiran u FOSS verziji.
Sažetak API reference
| Klasa / Metod | Opis |
|---|---|
Scene | Kontejner 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 Scene |
Node | Čvor hijerarhije scene |
node.createChildNode() | Kreiraj i prikači čvor deteta |
Mesh | Poligonalna mreža sa kontrolnim tačkama i listama faceta |
mesh.createPolygon() | Definišite poligonalno lice |
Mesh.toMesh() | Konvertujte ili klonirajte geometriju mreže |
Transform | Lokalni pomeraj, rotacija i skaliranje |
FileFormat | Registar i detektor za formate |