我无法将这些函数从使用 glMatrix 1.2 的旧应用程序更新到 glMatrix 2.7:
calculateNormal() {
mat4.identity(this.normalMatrix);
mat4.set(this.modelViewMatrix, this.normalMatrix);
mat4.inverse(this.normalMatrix);
mat4.transpose(this.normalMatrix);
}
并且不存在以下将矩阵乘以 4 分量向量的函数:
calculateOrientation() {
mat4.multiplyVec4(this.matrix, [1, 0, 0, 0], this.right);
mat4.multiplyVec4(this.matrix, [0, 1, 0, 0], this.up);
mat4.multiplyVec4(this.matrix, [0, 0, 1, 0], this.normal);
}
最佳答案
普通矩阵通常是 3*3 矩阵 ( mat3
)。
但无论如何,glMatrix有据可查,并根据 mat4
的文档和 vec4
,您的代码可以这样移植:
calculateNormal() {
this.normalMatrix = mat4.clone(this.modelViewMatrix);
mat4.invert(this.normalMatrix, this.normalMatrix);
mat4.transpose(this.normalMatrix, this.normalMatrix);
}
可能没有必要创建
下面的向量,但我不知道你的情况下是否存在向量:
calculateOrientation() {
this.right = vec4.create();
vec4.set( this.right, 1, 0, 0, 0 );
vec4.transformMat4( this.right, this.right, this.matrix );
this.up = vec4.create();
vec4.set( this.up, 0, 1, 0, 0 );
vec4.transformMat4( this.up, this.up, this.matrix );
this.normal = vec4.create();
vec4.set( this.normal, 0, 0, 1, 0 );
vec4.transformMat4( this.normal, this.normal, this.matrix );
}
关于javascript - 从 glMatrix 1 迁移到 glMatrix 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52901576/