Ho un po 'di problemi a capire come funzionano queste matrici e come impostarle l'una rispetto all'altra per far funzionare un sistema adeguato.
Nella mia comprensione, Model Matrix è la matrice di un oggetto, ad esempio un cubo o una sfera, ce ne saranno molti nell'applicazione / gioco.
World Matrix è la matrice che definisce l'origine del mondo 3D. il punto di partenza.
E View Matrix è la "videocamera" che tutto viene tradotto con questo per essere sicuri di avere l'illusione di una videocamera reale quando in realtà tutto si muove invece di questa matrice?
Mi sono un po 'perso qui. Quindi speravo che qualcuno qui potesse aiutarmi a capirlo correttamente.
Ogni modelMatrix viene tradotto / moltiplicato con la matrice mondiale e la matrice mondiale quindi con viewMatrix? O ogni modelMatrix viene tradotto / moltiplicato con viewMatrix e poi con worldMatrix?
Come si collegano tutte queste matrici e come si crea un mondo con più oggetti e una "macchina fotografica"?
MODIFICARE:
Grazie mille per il feedback già. Ho fatto qualche google google e penso di capirlo un po 'meglio ora, tuttavia sarebbe possibile ottenere qualche consiglio con lo pseudo codice?
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;
Devo moltiplicare o tradurre viewMatrix con modelMatrix o viceversa? e allora? Attualmente ho un metodo di disegno in modo tale che per disegnare gli argomenti sono necessarie solo 2 matrici.
Ecco il mio metodo di disegno:
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);
}
Quali sono quelle matrici suppongono di essere? Grazie mille in anticipo ancora ragazzi.