В общем случае нормальная матрица - это матрица 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);
}
Может быть, нет необходимости create
векторы вследующее, но я не знаю, существуют ли векторы в вашем случае:
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 );
}