Kako učitati 3D modele u Java
aspose-3d-foss za Java pruža jednostavan API za otvaranje 3D fajlova. Nakon učitavanja fajla u a Scene objekt možete preći hijerarhiju čvorova i pročitati podatke o geometriji.
Vodič korak po korak
Korak 1: Instalirajte paket
Dodajte Maven zavisnost:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>Korak 2: Uvezite klasu Scene
import com.aspose.threed.Scene;
import com.aspose.threed.Node;
import com.aspose.threed.Mesh;Korak 3: Učitajte fajl
Scene scene = new Scene();
scene.open("model.obj");Ili koristite statičku fabriku:
Scene scene = Scene.fromFile("model.obj");Podržani formati: OBJ, STL, glTF 2.0 / GLB, FBX (samo binarni — ASCII FBX nije podržan i baca ImportException).
Korak 4: Prođite kroz čvorove Scene
void walk(Node node, int depth) {
String indent = " ".repeat(depth * 2);
System.out.println(indent + "Node: " + node.getName());
for (Node child : node.getChildNodes()) {
walk(child, depth + 1);
}
}
walk(scene.getRootNode(), 0);Korak 5: Pristupite podacima o Mesh-u
for (Node node : scene.getRootNode().getChildNodes()) {
if (node.getEntity() instanceof Mesh) {
Mesh mesh = (Mesh) node.getEntity();
System.out.println("Mesh '" + node.getName() + "': " +
mesh.getControlPoints().size() + " vertices, " +
mesh.getPolygonCount() + " polygons");
}
}Uobičajeni problemi i rešenja
Izuzetak pri učitavanju
Proverite da li je fajl oštećen i da li je format podržan (OBJ, STL, glTF, FBX).
NullPointerException prilikom pristupa entitetu
Nije svaki čvor nosi geometriju. Uvek proverite node.getEntity() instanceof Mesh pre nego što izvršite kastovanje.
Neusklađenost koordinatnog sistema
Koristite ObjLoadOptions.setFlipCoordinateSystem(true) ili primenite rotaciju nakon učitavanja.
Često postavljana pitanja (FAQ)
Koje formate mogu da učitam?
OBJ, STL (binarni i ASCII), glTF 2.0 / GLB, i FBX. Za FBX, samo binarni FBX je podržan. ASCII FBX fajlovi će baciti ImportException("ASCII FBX format not yet supported - only binary FBX is supported").
Mogu li učitati iz InputStream-a?
Da. scene.open() prihvata InputStream.
Da li je biblioteka thread‑safe?
Svaki Scene instanca je nezavisna. Učitavanje odvojenih fajlova u odvojene instance iz odvojenih niti je bezbedno.