Ako načítať 3D modely v Java

Ako načítať 3D modely v Java

aspose-3d-foss pre Java poskytuje jednoduché API na otváranie 3D súborov. Po načítaní súboru do Scene objektu môžete prechádzať hierarchiu uzlov a čítať geometrické dáta.

Postupný návod

Krok 1: Nainštalujte balík

Pridajte Maven závislosť:

<dependency>
  <groupId>com.aspose</groupId>
  <artifactId>aspose-3d-foss</artifactId>
  <version>26.1.0</version>
</dependency>

Krok 2: Importujte triedu Scene

import com.aspose.threed.Scene;
import com.aspose.threed.Node;
import com.aspose.threed.Mesh;

Krok 3: Načítajte súbor

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

Alebo použite statickú továreň:

Scene scene = Scene.fromFile("model.obj");

Podporované formáty: OBJ, STL, glTF 2.0 / GLB, FBX (iba binárny — ASCII FBX nie je podporovaný a vyvolá ImportException).


Krok 4: Prechádzajte uzly scény

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);

Krok 5: Prístup k dátam Mesh

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");
    }
}

Bežné problémy a riešenia

Výnimka pri načítaní

Skontrolujte, že súbor nie je poškodený a formát je podporovaný (OBJ, STL, glTF, FBX).

NullPointerException pri prístupe k entite

Nie každý uzol nesie geometriu. Vždy skontrolujte node.getEntity() instanceof Mesh pred pretypovaním.

Nesúlad súradnicového systému

Použite ObjLoadOptions.setFlipCoordinateSystem(true) alebo aplikujte rotáciu po načítaní.


Často kladené otázky (FAQ)

Aké formáty môžem načítať?

OBJ, STL (binárny a ASCII), glTF 2.0 / GLB a FBX. Pre FBX, iba binárny FBX je podporovaný. ASCII FBX súbory vyvolajú ImportException("ASCII FBX format not yet supported - only binary FBX is supported").

Môžem načítať z InputStreamu?

Áno. scene.open() prijíma InputStream.

Je knižnica vlákno-bezpečná?

Každý Scene inštancia je nezávislá. Načítanie samostatných súborov do samostatných inštancií z rôznych vlákien je bezpečné.

 Slovenčina