GLM хэрэглэн нормал матриц гаргаж авах

model-space д байгаа геометрийн цэг буюу 3D моделийн нэг оройг transform хийх буюу гэрэлтүүлгийн тооцоолол хийгддэг view-space д хөрвүүлж авчрахын тулд MVP матриц хэрэглэдэг. MVP гэдэг нь model, view, projection үгний товчлол. Гэтэл эдгээр матрицийг model-space ийн нормал векторуудад хэрэглэхээр буруу үр дүнд хүрдэг.
Нормал вектор бол гэрэлтүүлгийн тооцоололд маш чухал үүрэгтэй. Үүнийг ашиглаж lambert, blinn-phong гэх мэтийн алгоритмууд өөрсдийн intensity утгаа олж авдаг.

Тиймээс normal векторт зориулагддсан тусдаа матриц байдаг бөгөөд нэршил нь normal matrix юм. GLM ашиглаж гаргаж авахдаа

    glm::mat3 normalMatrix = glm::inverseTranspose(glm::mat3(viewMatrix * modelMatrix));
    glUniformMatrix3fv(glGetUniformLocation(programID, "normalMatrix"), 
        1, 
        GL_FALSE, 
        glm::value_ptr(normalMatrix));

Popular posts from this blog

Apache Spark + Cassandra. Hello World