Kako učitati 3D modele u Java

Kako učitati 3D modele u Java

aspose-3d-foss za Java pruža jednostavno API za otvaranje 3D datoteka. Nakon učitavanja datoteke u a Scene objekt možete proći hijerarhiju čvorova i pročitati podatke o geometriji.

Vodič korak po korak

Korak 1: Instalirajte paket

Dodajte Maven ovisnost:

<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 datoteku

Scene scene = new Scene();
scene.open("model.obj");

Ili upotrijebite statičku tvornicu:

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 mreži

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 rješenja

Izuzetak pri učitavanju

Provjerite da datoteka nije oštećena i da je format podržan (OBJ, STL, glTF, FBX).

NullPointerException pri pristupu entitetu

Nije svaki čvor nosi geometriju. Uvijek provjerite node.getEntity() instanceof Mesh prije kastiranja.

Nesklad koordinatnog sustava

Koristite ObjLoadOptions.setFlipCoordinateSystem(true) ili primijenite rotaciju nakon učitavanja.


Često postavljana pitanja (FAQ)

Koje formate mogu učitati?

OBJ, STL (binarni i ASCII), glTF 2.0 / GLB i FBX. Za FBX, samo binarni FBX je podržan. ASCII FBX datoteke će baciti ImportException("ASCII FBX format not yet supported - only binary FBX is supported").

Mogu li učitati iz InputStream-a?

Da. scene.open() prihvaća InputStream.

Je li biblioteka sigurna za višedretveno korištenje?

Svaki Scene instanca je neovisna. Učitavanje zasebnih datoteka u zasebne instance iz zasebnih niti je sigurno.

 Hrvatski