如何在 Java 中加载 3D 模型

如何在 Java 中加载 3D 模型

aspose-3d-foss for Java 提供了一个直接的 API 用于打开 3D 文件。将文件加载到一个 Scene 对象后,您可以遍历节点层次结构并读取几何数据。.

分步指南

步骤 1:安装包

添加 Maven 依赖::

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

步骤 2:导入 Scene 类

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

步骤 3:加载文件

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

或者使用静态工厂::

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

支持的格式:OBJ、STL、glTF 2.0 / GLB、FBX(仅二进制 — 不支持 ASCII FBX,并会抛出 ImportException).


步骤 4:遍历 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);

步骤 5:访问 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");
    }
}

常见问题及解决方案

加载时异常

确认文件未损坏且格式受支持(OBJ、STL、glTF、FBX)。.

访问实体时出现 NullPointerException

并非每个节点都包含几何体。请始终检查 node.getEntity() instanceof Mesh 后再进行强制转换。.

坐标系不匹配

使用 ObjLoadOptions.setFlipCoordinateSystem(true) 或在加载后应用旋转。.


常见问题 (FAQ)

我可以加载哪些格式??

OBJ、STL(二进制和 ASCII)、glTF 2.0 / GLB 和 FBX。对于 FBX,仅 二进制 FBX 受支持。ASCII FBX 文件将抛出 ImportException("ASCII FBX format not yet supported - only binary FBX is supported").

我可以从 InputStream 加载吗??

是的。. scene.open() 接受一个 InputStream.

该库是线程安全的吗??

每个 Scene 实例是独立的。将不同文件加载到不同实例并在不同线程中运行是安全的。.

 中文