Tengo problemas para entender cómo funcionan estas matrices y cómo configurarlas en relación entre sí para que el sistema funcione correctamente.
Según tengo entendido, la Matriz Modelo es la matriz de un objeto, por ejemplo, un cubo o una esfera, habrá muchos de estos en la aplicación / juego.
World Matrix es la matriz que define el origen del mundo 3D. el punto de partida.
Y la View Matrix es la "cámara", todo se traduce con esto para asegurarse de que tiene la ilusión de una cámara real cuando, de hecho, todo se mueve en lugar de esta matriz.
Estoy un poco perdido aquí. Así que esperaba que alguien aquí pudiera ayudarme a entender esto correctamente.
¿Cada modelMatrix se traduce / multiplica con la matriz mundial y worldMatrix y luego con viewMatrix? ¿O cada modelMatrix se traduce / multiplica con viewMatrix y luego con worldMatrix?
¿Cómo se relacionan todas estas matrices y cómo se configura un mundo con múltiples objetos y una "cámara"?
EDITAR:
Muchas gracias por los comentarios ya. Busqué en Google y creo que lo entiendo un poco mejor ahora, sin embargo, ¿sería posible obtener algunos consejos de pseudocódigo?
projectionMatrix = Matrix;
makePerspective(45, width, height, 0.1, 1000.0, projectionMatrix);
modelMatrix = Matrix;
identity(modelMatrix);
translate(modelMatrix, [0.0, 0.0, -10.0]); // move back 10 on z axis
viewMatrix = Matrix;
identity(viewMatrix);
// do some translation based on input with viewMatrix;
¿Multiplico o traduzco viewMatrix con modelMatrix o al revés? ¿y luego que? Actualmente tengo un método de dibujo de tal manera que solo necesita 2 matrices para dibujar los argumentos.
Aquí está mi método de dibujo:
draw(matrix1 matrix2) {
bindBuffer(ARRAY_BUFFER, cubeVertexPositionBuffer);
vertexAttribPointer(shaderProgram.getShaderProgram().vertexPositionAttribute, cubeVertexPositionBuffer.itemSize, FLOAT, false, 0, 0);
bindBuffer(ARRAY_BUFFER, cubeVertexColorBuffer);
vertexAttribPointer(shaderProgram.getShaderProgram().vertexColorAttribute, cubeVertexColorBuffer.itemSize, FLOAT, false, 0, 0);
bindBuffer(ELEMENT_ARRAY_BUFFER, cubeVertexIndexBuffer);
setMatrixUniforms(shaderProgram, matrix1, matrix2);
drawElements(TRIANGLES, cubeVertexIndexBuffer.numItems, UNSIGNED_SHORT, 0);
}
¿Qué se supone que son esas matrices? Muchas gracias de antemano nuevamente chicos.