将3D模型转换为体素场

时间:2010-11-27 18:10:11

标签: algorithm model 3d voxel

我需要编写一些代码来将四元组数组转换为体素字段。 让它工作应该很容易,但快速完成并不是那么简单。

有没有人知道我可以使用的任何库或源代码?我敢肯定以前有人必须这样做。

修改 算法也需要用体素填充模型的内部。只是一个shell不会。

2 个答案:

答案 0 :(得分:7)

@Alexandre C.发布的voxelation链接看起来不错。

以下是将常规四/三角模型转换为光子/ EM模拟的折射率/ε值的立方数阵列时如何解决此问题的简要概述。

  1. 创建场景的BSP树。 (是的,真的)
  2. 在模型或解决方案空间的X,Y,Z上定期迭代。 (每个轴的间隔应等于所需的体素尺寸。)
  3. 在x / y / z循环中的每个点,检查BSP树的点。如果它在实体内,则在该点创建一个体素,并根据源模型(从BSP节点引用)设置它的属性(颜色,纹理坐标等)。 优化提示:如果您的最内圈是沿Y轴(垂直轴)并且您正在创建地形或面向XZ的曲面,则可以在任何时候退出Y循环创建一个体素。)

  4. 保存

  5. 利润!
  6. 构建BSP是唯一的半复杂部分(并且它比第一眼看起来容易得多),但它已被记录在整个网络上的ying-yang。这适用于几乎任何模型形状,并且还为您提供了一个可用于碰撞检测和可见性确定的漂亮树。

    另外,请注意,整个过程应该在编译时或使用专用工具(显然会产生一个包含运行时使用的树和体素字段的文件)。如果您正在使用XNA,那么将任何内容导入到内容管道中都非常容易。

答案 1 :(得分:1)

检查Marching cubes algorithm。我想你需要在问题的背景下扭转它!;)