在3D网格中的转发(绘制)线

3
我需要类似于Bresenham算法的东西,但不完全相同,并且适用于3D网格空间。
我有一个由单元格组成的三维网格(边长为1.0),需要从点S开始前进到点K,"触碰"线路所接触的所有单元格(即使只触碰到边缘点,我也需要接触到所有8个单元格)。
需要用它来遍历写入单元格的值或从单元格中读取值,并且需要尽可能快(因为每帧需要绘制数百万条这样的三维网格线)。
有人能说一下它可能是什么样子吗?

脑海中没有任何想法,我可以使用低效的逐步迭代方法,但这样会很慢,并且可能会跳过一些单元格。 - undefined
你说得对,那确实是关于这个话题的。谢谢。不过,如果有人想再添加一些解决方案,请随意在这里添加,因为那些提到的代码看起来有点复杂,有没有更简单一点的? - undefined
1
3D Bresenham算法并不是一个简单的算法... - undefined
很想给你的链接点赞(因为那也很有用),但不小心取消了,现在不能在这里点赞。谢谢! - undefined
1个回答

2
考虑使用Woo和Amanatides的网格遍历算法:文章{{link1:“快速体素遍历算法…”}}
实际实现在{{link2:此处的网格遍历部分}}
2D情况下的示例:

enter image description here


相关答案,使用相同的论文:https://gamedev.stackexchange.com/a/81332/63053 - undefined
红色和蓝色代表什么意思? - undefined
1
对于与线条只有一个接触点的单元格(或者对于垂直/水平线条而言,是边缘接触),我们称之为“Franva蓝”。某些应用需要计算这样的单元格数量,而其他应用则不需要。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接