2016-03-30 32 views
1

Çevresel eşleme ile bir skybox/cubemap oluşturmak için this eğitimini takip ediyorum.Neden yansıma dokusu için normal hesaplamak için model matrisinin tersinin dönüşümünü hesaplamak zorundayım?

Normal = mat3(transpose(inverse(model))) * normal; 

Benim soru: Burada

#version 330 core 
layout (location = 0) in vec3 position; 
layout (location = 1) in vec3 normal; 

out vec3 Normal; 
out vec3 Position; 

uniform mat4 model; 
uniform mat4 view; 
uniform mat4 projection; 

void main() 
{ 
    gl_Position = projection * view * model * vec4(position, 1.0f); 
    Normal = mat3(transpose(inverse(model))) * normal; 
    Position = vec3(model * vec4(position, 1.0f)); 
} 

, yazar yansıma dokusunu hesaplamak için parça gölgelendirici geçirmeden önce Normal hesaplıyor: Ben köşe gölgelendiricisi bir hesaplama anlama bazı sorun yaşıyorum bu hesaplama tam olarak ne yapar? Neden model matrisinin tersinin dönüşümünü normal ile çarpmadan önce hesaplamanız gerekiyor?

+0

Olası yinelenen (http [modelview matrisin tersinin devrik ile normaller dönüştürülmesi arkasındaki mantık nedir?]: // stackoverflow. com/questions/13654401/neyin-ters-dönüşüm-normals-ile-the-the-transpoze-ters-ters) –

+0

Gelecekte başvurmak için: _Never_ tersine çevirmek _in_ vs – RecursiveExceptionException

cevap