给定一个环境的体素化和一个由顶点 A、B 和 C 组成的三角形,如何确定三角形所“占用”或存在的所有体素?换句话说,如何枚举所有包含三角形任意部分的体素?
第一种可能的方法:
[xmin,xmax]x[ymin,ymax]x[zmin,zmax]
扫描体素以找出哪些体素与三角形相交:
对于 x
在 [xmin, xmax]
中
对于 y
在 [ymin, ymax]
中
对于 z
在 [zmin, zmax]
中
检查体素 (x, y, z)
是否与三角形相交
这可以通过以下至少几种方式进行优化:
for
循环中可以逐步计算涉及到的数量。for
循环的范围。第二种可能的方法:
[xmin,xmax] x [ymin,ymax] x [zmin,zmax]
的体素,请对三角形进行平移,使立方体的中心点((xmin+xmax)/2,(ymin+ymax)/2,(zmin+zmax)/2)
位于原点,然后对三角形进行非均匀缩放,缩放比例为(xmax-xmin,ymax-ymin,zmax-zmin)
,最后调用提供的实现代码(即不要更改代码,而是转换您的三角形)。 - user3146587(1/(xmax-xmin), 1/(ymax-ymin), 1/(zmax-zmin))
,而不是(xmax-xmin, ymax-ymin, zmax-zmin)
。 - Matheus Gadelha