BVH 加速射线相交,上次询问没有理解
在 BVH 加速相交判断中,使用模型坐标系求解出来的 result.t,转换到世界坐标系中,为什么 result.t 的值会改变呀

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

但感觉隐含的垂直条件对 t 值没有影响呀。我又推导了二维形式下两个坐标系下 t 值的变换,(二维形式下变为射线与线段是否相交),发现 t 仍然是相同的,如下:

所以到底 t 要不要改变呢,该怎么变呢
具体的讨论在原贴底下的评论里。我始终没有太明白你对 d 的定义是什么。能看出同学对 t 的理解很正确,那么 d 的定义就应当是与之对应的方向向量,这是一个单位向量。而在你之前以及现在的推导中,始终没有保证他是一个单位向量。如果理论上同学无法理解,不妨动手实现一下,最直观的现象就是,bvh 中如果不对 t 进行改变,物理模拟碰撞时会出现很多错误的碰撞,而正确的转换才能得到正确的结果。
可以用引用功能,或者直接将链接潜入在文本里,比截图好。这样原帖下也会自动显示到本帖的链接。