通过变换光线来跟踪相交测试

时间:2011-11-20 02:26:52

标签: raytracing

我正在尝试实现一个基本的光线跟踪器,它涉及将每条光线转换成每个对象空间,并通过将仿射变换矩阵的逆与光线相乘来测试与仿射变形对象的交点。当对象旋转,缩放但未翻译时,交叉测试是正确的。当对象被翻译(并且对象仍然可以被查看)时,交叉点测试失败,并且不显示任何对象。

1 个答案:

答案 0 :(得分:1)

应用转换时,操作的顺序很重要。以不同的顺序应用它们会给您带来不同的结果。

例如,假设您有一个中心位于(0,0,0)的方框。您现在旋转,然后翻译框。旋转将相对于坐标系的原点发生。

如果您改为开始翻译框,请说(1,0,0),然后进行旋转。该框仍将相对于坐标系的中心旋转。但是,该框现在在坐标系的中心处较长,因此它以弧形摆动。

This is a useful write-up about order of transformations

如果你已经知道这一切,那么抱歉。

我能做的唯一其他事情是指向我ray tracing project on github pvtrace的方向。它都是用Python编写的,你应该可以用它来调试你的交集代码。如果具有不同的原始形状,您也可以使用它们进行转换。通过使用基元的append_transformation()方法来应用转换。所有变换都是4x4均匀矩阵,并传递给该方法。均匀矩阵本身是使用transformations.py构造的,它与源代码捆绑在一起。

我希望有所帮助。