Značajke i funkcionalnosti
Značajke i funkcionalnosti
Ova stranica pokriva svako glavno područje značajki aspose-3d-foss 26.1.0 sa radnim Java primjerima.
Učitavanje i spremanje scena
scene.open() učitava datoteku; scene.save() izvozi je:
import com.aspose.threed.Scene;
Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");Alternativa statičke tvornice:
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");Opcije specifične za format
Proslijedi 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 uzrokuje ImportException.
Izgradnja grafova scene
Stvorite č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);Operacije s Mesh-om
Stvori Mesh programski s kontrolnim toč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 a Transform:
Node node = scene.getRootNode().createChildNode("moved", new Mesh());
node.getTransform().setTranslation(10, 0, 5);
node.getTransform().setScale(2, 2, 2);Čitaj svjetski prostor putem node.getGlobalTransform().getMatrix().
Materijali
Dodijeli 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);Vrste materijala: Material (osnovni), PbrMaterial (PBR metallic-roughness).
Savjeti i najbolje prakse
- Upotrijebite
Scene.fromFile()za učitavanja jednim redom kada prilagođene opcije nisu potrebne - Izgradite mreže programatski pomoću
createPolygon()za prilagođenu geometriju - Upotrijebite
.glbekstenziju za kompaktan binarni glTF izlaz - Provjerite
node.getEntity() != nullprije pretvaranja - STL izvoz ne automatski triangulirati poligonalne površine. Binarni STL izvoz zapisuje samo prva 3 vrha svake poligonalne površine — kvadrati ili n‑gon površine tiho se skraćuju. ASCII STL izvoz zapisuje sve indekse vrhova, što proizlazi u oštećene blokove faceta za ne‑trokutne površine. Uvijek proslijedite prethodno triangulirane mreže (sve površine trokutne) STL izvozu kako biste izbjegli gubitak podataka ili neispravan izlaz.
Uobičajeni problemi
| Problem | Uzrok | Popravak |
|---|---|---|
| Izuzetak pri učitavanju | Nije podržana ili oštećena datoteka | Provjerite otvara li se datoteka u 3D pregledniku |
| Nedostaju materijali nakon učitavanja OBJ | .mtl datoteka nije pronađena | Postavi .mtl pored .obj; osigurajte da su materijali omogućeni |
| Neusklađenost skale nakon uvoza | Različiti sustavi jedinica | Primijeni Transform skalu nakon učitavanja |
FAQ
Kako otkriti format datoteke?
FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());Mogu li učitati iz toka?
Da. scene.open() prihvaća InputStream.
Koji formati podržavaju i uvoz i izvoz?
OBJ, STL i glTF/GLB podržavaju oba smjera. FBX je samo za uvoz; izvoz nije implementiran u FOSS verziji.
Sažetak API reference
| Klasa / Metoda | Opis |
|---|---|
Scene | Kontejner 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 |
node.createChildNode() | Stvori i prikači čvor djeteta |
Mesh | Poligonalna mreža s kontrolnim točkama i popisima lica |
mesh.createPolygon() | Definirajte poligonsko lice |
Mesh.toMesh() | Pretvorite ili klonirajte geometriju mreže |
Transform | Lokalni pomak, rotacija i skaliranje |
FileFormat | Registar i detektor za formate |