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.