我试图导入一个常规的网格数据库到三维场景中进行可视化/模拟。我认为最简单的方法是将常规网格数据库转换成一种格式(例如wavefront.obj),可以导入Blender。常规网格数据库的格式如下: 例如,第一行有三个整数 3072 3072 10 第一行有三个整数,表示网格的维数。在上面的示例中,网格是3072 x 3072 x 10个框。假设1米体素立方体
文件的提醒有六列
3072 3072 10
1437 1437 1 500 314.781433 4.82E-05
1437 1438 1 500 314.781433 4.82E-05
1437 1439 1 500 314.781433 4.82E-05
1437 1440 1 500 314.781433 4.82E-05
1437 1441 1 500 314.781433 4.82E-05
1437 1442 1 500 314.781433 4.82E-05
1437 1443 1 500 314.781433 4.82E-05
1437 1444 1 500 314.781433 4.82E-05 ....
在哪里 文件的其余部分由包含六列数据的行组成。前三列表示体素索引(从0开始计数)。第四列表示与单独的材料数据库文件(.mat)中的条目相对应的材料ID。第五列用开尔文表示温度。最后一列表示浓度,单位为百万分之几(ppm)。在
为了简化问题,假设我们有一个单一的材质(材质ID 500)。如果我可以把它转换成.obj文件格式,那么我就可以编写一个代码来更新其他材料。在
有没有人知道用暴力以外的方法?我可以用蛮力生成一个三维网格,然后逐步通过常规网格文件,检查它是否填充了材质属性,但这仍然不能解决将其转换为wavefront.obj文件格式的问题。我很感激你的忠告。在
Sambler提供了一些代码来直接在Blender中生成网格。我不能让这个运行在搅拌机,所以我修改了它。此代码在blender中运行,并向控制台生成输出。然而,我并没有成功地让它产生一个可见的网格搅拌机。任何帮助都将不胜感激。在
^{pr2}$
不用手动创建.obj文件,您可以直接在blender中读取数据并生成网格。如果要将网格传输到其他位置,则可以将其导出为.obj。
性能方面,blender对一个有一百万个顶点的对象比一千个每个一千个顶点的对象更好,所以我建议将网格作为一个对象来构建。请参阅this answer查看我不久前执行的一个测试。如果您想要多个对象,那么在完成时用松散的部分将其分开是很简单的,尽管很耗时。
可以为对象中的每个断开的网格块(或每个面)指定不同的材质。注意,这里指定的材质索引是指定给对象的材质的索引,可以在^{} 中找到。请参见this answer以获取创建双材料的简单示例。
相关问题 更多 >
编程相关推荐