Cya*_*ime 4 java matrix lwjgl matrix-multiplication
只是想知道 LWJGL 的 Matrix4f.mul 方法是前置还是后置乘法。或者说有什么方法可以选择吗?
根据 javadoc,Matrix4f.mul将:
将右侧矩阵乘以左侧矩阵,并将结果放入第三个矩阵中。
public static Matrix4f mul(Matrix4f left, Matrix4f right, Matrix4f dest)
Run Code Online (Sandbox Code Playgroud)
因此,要实现后乘,请使用现有矩阵作为参数left,并使用新矩阵作为right参数。如果您为 提供一个空对象dest,该函数将为您分配一个新对象Matrix4f,并从函数调用中返回它。
我通常考虑矩阵乘法的方式是首先应用距离向量“最近”的矩阵。例如:
Perspective * View * Model * Vec4
Run Code Online (Sandbox Code Playgroud)
从最接近向量的矩阵开始,您可以看到首先应用模型变换,然后是视图变换,最后是透视变换。
在您的代码中,上面的内容将如下所示:
Matrix4f MVP = Matrix4f.mul(View, Model, null);
Matrix4f.mul(Perspective, MVP, MVP);
Vector4f result = Matrix4f.transform(MVP, Vec4, null);
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
编辑:上面是我倾向于连接变换的方式,但由于矩阵乘法是关联的,因此以下内容也应该有效:
Matrix4f MVP = Matrix4f.mul(Perspective, View, null);
Matrix4f.mul(MVP, Model, MVP);
Vector4f result = Matrix4f.transform(MVP, Vec4, null);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2252 次 |
| 最近记录: |