我正在使用Blender创建m3g文件,然后在java程序中加载它们
哪个是在Mesh
中查找对象(World
)的最佳方法? (我应该如何“建立”一个世界?)
我应该为每个对象创建单独的类,然后将它们添加到一个World
对象中,还是应该在Blender中为对象分配ID并通过ID在程序中找到它们?
或者将每个对象导出到单独的M3G文件中?
(或者其他一些方式?)
答案 0 :(得分:1)
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。如果您计划重用网格(针对不同的应用程序),请将它们组织成单独的文件,在应用程序初始化期间单独加载它们,然后将它们插入到世界中。