我有一个3d网格(一组三角形),它定义了一个封闭的水密表面。我想栅格化这个网格,也就是将网格占用的空间划分为均匀的小立方体(3d相当于2d像素),并将三角形穿过的立方体涂成黑色,其余的涂成白色。类似于如何将2d矢量图形图像光栅化为光栅化的bmp。换句话说,我想输出一个3d数组,A
是M x M x M
,如果有一个三角形穿过立方体占据的空间在位置i,j,k
,那么A(i,j,k)
是1。
任何算法,库,matlab例程都可以。
我不能给你一些算法或库,但一个小提示。您要查找的术语是体素化。试试谷歌,它可能会为你提供一些关于这方面的资源,以及这个小而又相当古老的主题介绍,这可能是进一步研究的基础。
我发现这个voxelizer非常适合我的需要。它的工作速度相当快,并且还有一个matlab脚本用于将生成的体素文件读取到matlab.