BVH 加速射线相交,上次询问没有理解

计算机图形学 bvht值转换 467 views 2 replies 🔒 closed
#1 ·

在 BVH 加速相交判断中,使用模型坐标系求解出来的 result.t,转换到世界坐标系中,为什么 result.t 的值会改变呀
G_QQCXS)L$B2`457}HOA6KG

上次助教老师给的回复是这样的

roland:

M-T 算法的 d(方向向量) 必须保证是单位向量,在你列出的第二个式子中,并没有保证乘上模型矩阵之后的向量是一个单位向量,这个向量是需要进行单位化的,而其他点的位置变换则和你写的一致,因此正确的式子应当将 d 改为单位化之后的向量,这时前后的 t 就会出现不一致。
内容中提到的垂直是为了更好地理解为什么发生了变化。我们可以把 M-T 算法中的相交时间求解看做沿平面法线方向的光线分量所需时间。在进行模型变化之后,原来法线方向的光线分量和变换后的平面法线不再对应,因此会 t 会出现变化。

ZG4)QP{W8$5`{OBZO$HTDTT
但感觉隐含的垂直条件对 t 值没有影响呀。我又推导了二维形式下两个坐标系下 t 值的变换,(二维形式下变为射线与线段是否相交),发现 t 仍然是相同的,如下:
C207479C4509C78A026BB105671D2F47
所以到底 t 要不要改变呢,该怎么变呢

#2 ·

具体的讨论在原贴底下的评论里。我始终没有太明白你对 d 的定义是什么。能看出同学对 t 的理解很正确,那么 d 的定义就应当是与之对应的方向向量,这是一个单位向量。而在你之前以及现在的推导中,始终没有保证他是一个单位向量。如果理论上同学无法理解,不妨动手实现一下,最直观的现象就是,bvh 中如果不对 t 进行改变,物理模拟碰撞时会出现很多错误的碰撞,而正确的转换才能得到正确的结果。

#3 ·

可以用引用功能,或者直接将链接潜入在文本里,比截图好。这样原帖下也会自动显示到本帖的链接。

🔒 Closed