Kako učitati 3D modele u Java

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.

 Српски