Questions tagged «transformations»

2
为什么将模型视图矩阵的转置逆用于转换法向量?
当渲染3D场景并将变换应用于对象时,必须使用模型视图矩阵的转置逆来变换法线。因此,对于法线,modelViewMatrix M,变换后的法线n '为ñnn中号MMñ′n′n' ñ′= (M− 1)Ť⋅ ñn′=(M−1)T⋅nn' = (M^{-1})^{T} \cdot n 变换对象时,很明显需要对法线进行相应的变换。但是,为什么从数学上讲这是对应的转换矩阵呢?



4
什么时候应使用四元数来表示3D中的旋转和缩放?
四元数(复数的二维扩展)可用于表示3D向量的旋转和缩放,并且将四元数应用于3D向量涉及两个四元数乘法,因此与通过相应变换矩阵进行乘法运算相比,所需运算更少。但是,通常改用线性和仿射变换矩阵,尤其是在着色器代码中。 (由于速度,稳定性等原因)什么时候使用四元数来表示三维缩放和旋转,而不是使用相应的转换矩阵,是否合适且更可取?

2
将光线转换为对象空间以进行运动模糊
我的raytracer支持各种各样的对象。为了使它们相交,我使用了将光线转换为对象空间的标准技术。在我添加运动模糊之前,这非常有效。 我将运动模糊建模为一系列转换(为简化讨论,确切地说是两个)而不是一个。我的方法是在两个关键帧处进行射线的逆变换,并控制位置/方向。 对于翻译来说,这似乎工作正常,但对于旋转来说,它却失败了。例如,这是两个分别旋转30度和90度的三角形: (4个样本,MN重建,红色样本来自两个关键帧附近) 在拐角处,我希望弯曲的样本位于两个顶点之间的直线上。相反,它们向外凸出。错了 在具有更多有趣转换的更有趣场景中,它会导致多种故障模式。例如,这是螺旋桨旋转45度: (100个样本,法线可见) 某些问题是由于BVH断裂(假定对象的极值位于关键帧处)造成的,但是即使是强行渲染也不正确。 我只能通过执行正向变换(变换对象,而不是光线)来解决所有问题,但这仅适用于可能的对象(实际上只有三角形)。 如何使我的光线跟踪器通过变换光线而不是对象来产生线性近似值来进行变换(尤其是旋转)?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.