如何在 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 实例是独立的。将不同文件加载到不同实例并在不同线程中运行是安全的。.