我正在使用 Blender 创建 m3g 文件,然后将它们加载到 java 程序中。
在 中找到对象 (a Mesh
)的最佳方法是World
什么?(我应该如何“建立”一个世界?)
我应该为每个对象创建单独的类,然后将它们添加到一个World
对象中,还是应该为 Blender 中的对象分配 ID 并通过 ID 在程序中找到它们?
还是将每个对象导出到单独的 M3G 文件?
(或者其他方式?)
Q1。如果您知道Mesh
( MESH_ID
) 的 ID,则:
try {
Object3D[] roots = Loader.load( "http://www.example.com/scene.m3g" );
World world = roots[0];
Mesh mesh = world.find( MESH_ID );
}
catch( Exception e ) {
// Handle it
}
Q2。加载一个基本的World
:
public class MyCanvas extends Canvas
Graphics3D g3d;
World world;
int currentTime = 0;
public MyCanvas() {
g3d = Graphics3D.create();
Object root[] = Loader.load("world.m3g");
world = root[0];
}
protected void paint(Graphics g) {
g3d.bindTarget(g);
world.animate(currentTime);
currentTime += 50;
g3d.render(world);
g3d.releaseTarget();
}
}
然后使用 API 创建更多对象并将其添加到世界中 API 文档对此进行了深入介绍:
Q3。在 Blender 中分配它们,然后使用该find
方法获取Object3D
您需要的确切实例。
Q4。如果您计划重用网格(用于不同的应用程序),请将它们组织到单独的文件中,在应用程序初始化期间分别加载它们,然后将它们插入到世界中。