opengl 矩阵乘法是反向应用是什么意思?[复制]

8e2ybdfx  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(177)

此问题在此处已有答案

OpenGL transform matrix order is backwards(1个答案)
上个月关门了。
我不明白这个,这是从https://learnopengl.com/Getting-started/Transformations教程,它解释说,虽然在代码中,我们首先翻译,然后旋转,旋转实际上首先发生?但我不明白.我们有一个矩阵,我们填充它,这样矩阵乘法将导致我们想要的旋转/平移/缩放,但是其中一个先发生是没有意义的,因为所有的矩阵都乘以顶点着色器中的位置向量,并且它同时发生,我认为这是使用矩阵的确切点和主要优势就为了这个
首先应用translate然后旋转可能是正确的,这样我们就得到了想要的结果,但是我们首先旋转然后translate的整个想法是没有意义的.不,我们首先平移然后旋转,因为例如我们可能想先旋转然后平移,但是为了最终得到正确的矩阵,我们需要先平移然后旋转,但显然我们先用translate改变矩阵,然后用rotate,所以我不明白它怎么能反过来工作?
我知道解释困难的主题是困难的,这不是对教程的批评,只是我对此很好奇,对此很恼火。我知道这可能很复杂,但我认为必须有一个简单的解释,解释发生了什么而不深入,例如,通过解释函数是如何工作的,或者矩阵是如何生成的,或者它意味着什么,而不需要理解它背后的所有数学。我并不介意理解它,但我想这将是一个更大的潜水到它比只是解释什么教程的意思是什么,它说。
习题1的答案是:https://learnopengl.com/code_viewer_gh.php?code=src/1.getting_started/5.2.transformations_exercise1/transformations_exercise1.cpp和我完全不理解他们的解释。

nwo49xxi

nwo49xxi1#

虽然我们习惯于从左到右的操作,但对于矩阵来说,通常是从右到左的操作,我不记得历史原因了。
考虑一个旋转矩阵M_R,一个平移矩阵M_T,V是我们要变换的向量。一次应用一个变换,你会看到它是这样发生的:

  • M_T * M_R * V
  • M_T * V_旋转
  • V_旋转_然后_平移

你仍然可以先计算M_T * M_R,但是因为关联属性确实适用于矩阵乘法,所以它不会影响结果:

  • (M_T * M_R)* V
  • M_rotate_then_translate * V
  • V_旋转_然后_平移

相关问题