matrix - Open GL ES 2.0模型 View 投影矩阵乘法顺序

标签 matrix opengl-es transformation

我关心矩阵乘法顺序。我见过很多例子,其中一些是这样的: 模型* View *投影

而其他的乘法是这样的: 投影* View *模型

我知道矩阵乘法不可交换,那么哪个顺序是正确的?

最佳答案

您可以通过以下逻辑得出顺序:

您的对象包含顶点,它们是向量。矩阵变换将通过从左侧相乘来应用于向量。

您想在 3D 场景中做什么?您想要将对象移动到正确的位置(模型变换),然后将其变换到相机空间( View 变换),最后您想要应用正交投影或透视投影。按照这个顺序,您必须将矩阵应用到顶点向量,这会导致(数学上正确的)顺序投影 * View * 模型 * 顶点。因此,您首先将模型应用到顶点,然后查看,然后投影。

但是您也可以将括号设置到此公式中的任何位置。通过以下内容,您可以预先计算包含模型、 View 和投影的整个变换矩阵。然后将其交给着色器,并将该矩阵应用于每个顶点,如下所示:(projection * view * model) * vertex

编辑你的下一个问题:在框架中使用它的顺序可以改变。因为大多数编程语言中*的结合性都是从左到右的。就矩阵乘法而言,这将是错误的顺序。请记住:矩阵乘法是从右向左进行的!框架中的计算如何完成取决于其实现,因此没有通用规则。

关于matrix - Open GL ES 2.0模型 View 投影矩阵乘法顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23521089/

相关文章:

c - 进程返回 - 1073741819 (0xC0000005)

c++ - 矩阵和 vector 乘法,输出不正确的乘积

c - 需要帮助使用 MPI 调试并行矩阵乘法

matrix - 稀疏矩阵的实际应用

android - fragment 着色器似乎不准确地 floor()

android:显示加载屏幕的最快方法

transformation - 是否有描述平面文件的标准格式?

ios - swift/OpenGL ES 2.0 - 从 YUV420 缓冲区创建纹理

ios - iOS 设备的欧拉角到旋转矩阵手动转换

javascript - 围绕一个圆圈移动阴影