Jellemzők és funkciók
Jellemzők és funkciók
Ez az oldal lefedi a(z) aspose-3d-foss 26.1.0 működő Java példákkal.
Jelenetek betöltése és mentése
scene.open() betölt egy fájlt; scene.save() exportálja azt:
import com.aspose.threed.Scene;
Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");Statikus gyári alternatíva:
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");Formátum-specifikus beállítások
Pass LoadOptions vagy SaveOptions alosztályok a finomhangolt vezérléshez:
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);Megjegyzés: Az FBX csak importáláshoz támogatott; az FBX exportálás nincs megvalósítva a FOSS verzióban. Csak bináris FBX a fájlok támogatottak az importáláshoz — az ASCII FBX hibát dob ImportException.
Jelenetgráf felépítése
Hozz létre csomópontokat és csatolj entitásokat:
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 műveletek
Hozzon létre egy Mesh programozott módon vezérlőpontokkal és poligonokkal:
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);Transzformációk
Minden Node hordoz egy Transform:
Node node = scene.getRootNode().createChildNode("moved", new Mesh());
node.getTransform().setTranslation(10, 0, 5);
node.getTransform().setScale(2, 2, 2);Olvasd a világ-térbeli adatot a node.getGlobalTransform().getMatrix().
Anyagok
Anyagok hozzárendelése a csomópontokhoz:
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);Anyagtípusok: Material (alap), PbrMaterial (PBR metallic-roughness).
Tippek és bevált gyakorlatok
- Használja
Scene.fromFile()egysoros betöltésekhez, ha egyedi beállításokra nincs szükség - Hálókat építsen programozottan a
createPolygon()egyedi geometria esetén - Használja
.glbkiterjesztés a kompakt bináris glTF kimenethez - Ellenőrizze
node.getEntity() != nullkonvertálás előtt - Az STL export nem automatikusan háromszögezi a poligon felületeket. A bináris STL export csak az egyes poligon felületek első 3 csúcsát írja ki — a négyszög vagy n‑gon felületek csendben levágásra kerülnek. Az ASCII STL export minden csúcsindexet kiír, ami hibás facet blokkokat eredményez nem háromszög felületeknél. Mindig adjon át előre háromszögezett hálókat (csak háromszög felületekkel) az STL exportnak, hogy elkerülje az adatvesztést vagy az érvénytelen kimenetet.
Gyakori problémák
| Probléma | Ok | Javítás |
|---|---|---|
| Kivétel betöltéskor | Nem támogatott vagy sérült fájl | Ellenőrizze, hogy a fájl megnyílik egy 3D megjelenítőben |
| Hiányzó anyagok OBJ betöltése után | .mtl fájl nem található | Elhelyezés .mtl mellett .obj; győződjön meg róla, hogy a anyagok engedélyezve vannak |
| Méretezési eltérés importálás után | Eltérő mértékegységrendszerek | Alkalmazzon egy Transform méretarányt a betöltés után |
FAQ
Hogyan tudom meghatározni egy fájl formátumát?
FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());Betölthetek adatfolyamból?
Igen. scene.open() elfogad egy InputStream.
Mely formátumok támogatják mind az importot, mind az exportot?
Az OBJ, STL és glTF/GLB mindkét irányban támogatott. Az FBX csak importálásra alkalmas; az exportálás nincs megvalósítva a FOSS verzióban.
API-referencia összefoglaló
| Osztály / Metódus | Leírás |
|---|---|
Scene | Legfelső szintű 3D jelenetkonténer |
scene.open() | 3D fájl betöltése útvonal vagy adatfolyam alapján |
scene.save() | Jelenet exportálása fájlba vagy adatfolyamba |
Scene.fromFile() | Statikus gyár a betöltéshez és egy visszaadáshoz Scene |
Node | Jelenet hierarchia csomópont |
node.createChildNode() | Gyermek csomópont létrehozása és csatolása |
Mesh | Poligon háló kontrollpontokkal és felületlistákkal |
mesh.createPolygon() | Poligon felület definiálása |
Mesh.toMesh() | Háló geometria konvertálása vagy klónozása |
Transform | Helyi eltolás, forgatás és méretezés |
FileFormat | Regiszter és detektor a formátumokhoz |