我需要编写一些代码将四面体数组转换为体素场。让其工作起来应该很容易,但使其快速运行则不那么简单。
有人知道我可以使用哪些库或源代码吗?我相信肯定有人曾经做过这个。
编辑:算法还需要填充模型内部的体素,仅空壳是不够的。
@Alexandre C.发布的voxelation链接看起来不错。
以下是我们将常规四边形/三角形模型转换为折射率/介电常数值的立方阵列,用于光子学/电磁仿真时如何解决此问题的简要概述。
在x/y/z循环的每个点上,检查该点是否在BSP树中。如果它在实体内部,请在该点处创建一个体素,并根据源模型设置其属性(颜色、纹理坐标等)(从您的BSP节点中引用)。 (优化提示:如果您的内部最深循环沿Y轴(垂直轴)并且正在创建地形或XZ定向表面,则可以在创建体素时退出Y循环。)
保存
构建BSP是唯一有点复杂的部分(但乍一看比它看起来容易得多),但它已经在网络上得到了详细的记录。这将适用于几乎任何模型形状,并且还为您提供了一个很好的树,您可以用它来进行碰撞检测和可见性确定等操作。
此外,请注意,整个过程应在编译时或使用专用工具(显然,会产生包含树和体素场的文件,您将在运行时使用该文件)中进行。如果您使用XNA,则很容易将所有内容导入内容管道。