Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: DiegoBM en 08 de Diciembre de 2008, 01:43:11 PM

Título: Duda de transformaciones
Publicado por: DiegoBM en 08 de Diciembre de 2008, 01:43:11 PM
Hola Gente,

Me estoy metiendo a saco con todo el tema de los shaders, en concreto le estoy dando vueltas al normal mapping, y aunque en general me entero de todo, no comprendo por que a la matriz de cambio de base se le tiene que multiplicar por la traspuesta de la inversa de la matriz WorldView. Entiendo que hay que multiplicarla por la WorldView para aplicarle a cada vector del cambio de base las transformaciones que se aplican al vertice, pero ¿por que por la traspuesta de la inversa? He leido por ahi que a las normales hay que multiplicarlas por la traspuesta de la inversa de la matriz de tranformacion para que el resultado sea correcto, pero no le veo sentido. Si alguien pudiese explicamerlo asi en plan sencillito para torpes... ^_^U.

Muchas gracias y saludos!
Título: Re: Duda de transformaciones
Publicado por: DiegoBM en 08 de Diciembre de 2008, 05:57:11 PM
Wop! Pues ya he dado con la tecla. Por si alguien tiene la misma frustrante necesidad de entenderlo todo y se estaba haciendo la misma pregunta, he aqui la respuesta. Bajo el apartado "Transforming Normals".

http://fly.cc.fer.hr/~unreal/theredbook/appendixg.html

Un saludo!
Título: Re: Duda de transformaciones
Publicado por: fjfnaranjo en 09 de Diciembre de 2008, 01:43:33 AM
Wenass. Gracias por aclararlo con la solución que tu mismo encontraste. Un saludo.
Título: Re: Duda de transformaciones
Publicado por: DiegoBM en 09 de Diciembre de 2008, 09:41:27 AM
No hay de que :). Por cierto, por si alguien tiene problemas con el idioma de Shakespeare, os dejo otro enlace, esta vez en castellano, con todo el desarrollo matematico de forma clara (excepto un punto quiza, que si alguien no lo ve con gusto se lo aclaro) y aparte una explicacion gráfica bastante bastante clara de por que hay que aplicarselo solo a las normales (las tangentes se pueden transformar con la matriz de transformacion normal):

http://www.inmensia.com/articulos/raytracing/interseccion.html?pag=2

Nota: Por si alguien se pregunta por que se aplica a todos los vectores del cambio de base si no son normales a ningun poligono, solo decir que en realidad estos vectores son normales a cada uno de los 3 planos que definen la nueva base (y por tanto se aplica la misma regla de los planos) :D.

Un saludo amigos!