Cómo cargar modelos 3D en Java

Cómo cargar modelos 3D en Java

aspose-3d-foss para Java proporciona una API sencilla para abrir archivos 3D. Después de cargar un archivo en un Scene objeto, puedes recorrer la jerarquía de nodos y leer los datos de geometría.

Guía paso a paso

Paso 1: Instalar el paquete

Agregue la dependencia de Maven:

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

Paso 2: Importar la clase Scene

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

Paso 3: Cargar un archivo

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

O usa la fábrica estática:

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

Formatos compatibles: OBJ, STL, glTF 2.0 / GLB, FBX (solo binario — FBX ASCII no es compatible y lanza ImportException).


Paso 4: Recorrer los nodos de la escena

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

Paso 5: Acceder a los datos de la malla

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

Problemas comunes y soluciones

Excepción al cargar

Verifica que el archivo no esté corrupto y que el formato sea compatible (OBJ, STL, glTF, FBX).

NullPointerException al acceder a la entidad

No todos los nodos contienen geometría. Siempre verifica node.getEntity() instanceof Mesh antes de hacer casting.

Desajuste del sistema de coordenadas

Usa ObjLoadOptions.setFlipCoordinateSystem(true) o aplica una rotación después de cargar.


Preguntas frecuentes (FAQ)

¿Qué formatos puedo cargar?

OBJ, STL (binario y ASCII), glTF 2.0 / GLB, y FBX. Para FBX, solo FBX binario es compatible. Los archivos FBX ASCII lanzarán ImportException("ASCII FBX format not yet supported - only binary FBX is supported").

¿Puedo cargar desde un InputStream?

Sí. scene.open() acepta un InputStream.

¿La biblioteca es segura para hilos?

Cada Scene la instancia es independiente. Cargar archivos separados en instancias separadas desde hilos separados es seguro.

 Español