Saya mengalami sedikit kesulitan memahami bagaimana matriks ini bekerja dan bagaimana cara mengaturnya dalam kaitannya satu sama lain untuk mendapatkan sistem yang tepat berjalan.
Dalam pemahaman saya, Model Matrix adalah matriks dari suatu objek, misalnya kubus atau bola, akan ada banyak dari ini dalam aplikasi / permainan.
World Matrix adalah matriks yang menentukan asal dari dunia 3D. titik awal.
Dan View Matrix adalah "kamera" semuanya diterjemahkan dengan ini untuk memastikan Anda memiliki ilusi kamera yang sebenarnya padahal sebenarnya semuanya bergerak bukan matriks ini?
Saya agak tersesat di sini. Jadi saya berharap seseorang di sini dapat membantu saya memahami ini dengan benar.
Apakah setiap modelMatrix dapat diterjemahkan / dikalikan dengan matriks dunia dan worldMatrix kemudian dengan viewMatrix? Atau apakah setiap modelMatrix dapat diterjemahkan / dikalikan dengan viewMatrix dan kemudian dengan worldMatrix?
Bagaimana hubungan semua matriks ini dan bagaimana Anda mengatur dunia dengan banyak objek dan "kamera"?
EDIT:
Terima kasih banyak atas umpan baliknya. Saya melakukan beberapa aswel googling dan saya pikir saya memahaminya sedikit lebih baik sekarang, namun apakah mungkin untuk mendapatkan beberapa saran kode semu?
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;
Apakah saya melipatgandakan atau menerjemahkan viewMatrix dengan modelMatrix atau sebaliknya? dan lalu apa? Saat ini saya memiliki metode menggambar sedemikian rupa sehingga hanya perlu 2 matriks untuk argumen untuk menggambar.
Inilah metode menggambar saya:
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);
}
Matriks apa yang seharusnya? Terima kasih banyak sebelumnya kawan.