Kaip įkelti 3D modelius į Java

Kaip įkelti 3D modelius į Java

aspose-3d-foss for Java suteikia paprastą API 3D failų atvėrimui. Įkėlus failą į Scene objektą, galite naršyti mazgų hierarchiją ir skaityti geometrijos duomenis.

Žingsnis po žingsnio vadovas

Žingsnis 1: Įdiekite paketą

Pridėkite Maven priklausomybę:

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

Žingsnis 2: Importuokite Scene klasę

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

Žingsnis 3: Įkelkite failą

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

Arba naudokite statinę gamyklą:

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

Palaikomi formatai: OBJ, STL, glTF 2.0 / GLB, FBX (tik binariniai — ASCII FBX nepalaikomas ir sukelia ImportException).


Žingsnis 4: Naršykite Scene mazgus

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

Žingsnis 5: Pasiekite Mesh duomenis

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

Dažnos problemos ir sprendimai

Išimtis įkeliant

Patikrinkite, ar failas nėra sugadintas ir ar formatas palaikomas (OBJ, STL, glTF, FBX).

NullPointerException prieigos prie objekto

Ne kiekvienas mazgas turi geometriją. Visada patikrinkite node.getEntity() instanceof Mesh prieš konvertuojant.

Koordinačių sistemos nesutapimas

Naudokite ObjLoadOptions.setFlipCoordinateSystem(true) arba pritaikykite sukimą po įkėlimo.


Dažnai užduodami klausimai (DUK)

Kuriuos formatus galiu įkelti?

OBJ, STL (binarių ir ASCII), glTF 2.0 / GLB ir FBX. FBX atveju, tik binariniai FBX yra palaikomi. ASCII FBX failai sukels ImportException("ASCII FBX format not yet supported - only binary FBX is supported").

Ar galiu įkelti iš InputStream?

Taip. scene.open() priima InputStream.

Ar biblioteka yra gija-saugi?

Kiekvienas Scene instancija yra nepriklausoma. Įkelti atskirus failus į atskiras instancijas iš atskirų gijų yra saugu.

 Lietuvių