XSIforum.com

Diferencia Unbiased Tangent/Normal Map

0 Usuarios y 1 Visitante están viendo este tema.

Eloihm

  • **
  • 775
  • "Aprende las reglas, domínalas, rómpelas"
Diferencia Unbiased Tangent/Normal Map
« en: 27 Junio 2011, 11:11:33 »
Hola a todos!

Tengo una duda que me corroe. No me es imprescindible saberlo hoy por hoy, pero me gustaría. Cuando conecto un mapa de normales en el material manager, me da la opción de activar/desactivar "Unbiased Tangent" y "Unbiased Normal Map". Normalmente voy activando/desactivando parámetros hasta dar con la combinación que más me guste o que se parezca al resultado original, pero me gustaría saber para que son cada uno y, quizá lo más interesante, qué criterios seguir para usarlos o no (vamos, saber qué son y para qué sirven).

También puedo elegir "Tangents" o "Vertex_Colors". Otra vez, pruebo a ver cual me da un resultado parecido a lo que busco, pero me gustaría saber que estoy haciendo :P

Muchas gracias!

Por cierto, si sois tan amables de explicarlo, tratad que sea fácil de entender, que no doy para mucho :)

alanf

  • *****
  • 6026
  • Pipeline Developer @ Felix & Paul Studios
Re: Diferencia Unbiased Tangent/Normal Map
« Respuesta #1 en: 28 Junio 2011, 17:07:53 »
RTFM. :P

En fin...
Unbiased Normals
Declares to the shader that the XYZ components of the normals are stored in an unbiased form (that is, not remapped to [0, 1]).
O sea, que Unbiased significa que los vectores de las normales vienen normalizados (que es decir, con valores de 0 a 1) en vez de los valores reales.


El manual continua diciendo:
When you create a Tangent or Binormal property from the Get->Property menu, data is written as unclamped floating-point color values. This means that true (unbiased) tangent and binormal data is being encoded in the color at vertices property. However, you can change the data type to use a short integer to store the color values. This is useful, for example, if your shader is expecting "shorts" and is already applying an inverse-offset to reconstruct the tangents and binormals.
...que traducido mas o menos dice:
Citar
Cuando creas una propiedad Tangent o Binormal del menu Get->Property, la informacion es floating point, que significa que la informacion verdadera (unbiased) tangent y binormal data es codificada al color de los vertices. Sin embargo, puedes cambiar el datatype para usar un pequenio integro para guardar los colores. Esto es util, por ejemplo, si tu shader (realtime) espera "shorts" y ya esta empleando un offset inverso para reconstruir las tangentes y binormales. [...lo que sea que esto ultimo signifique. xD]



Ah, y...
También puedo elegir "Tangents" o "Vertex_Colors". Otra vez, pruebo a ver cual me da un resultado parecido a lo que busco, pero me gustaría saber que estoy haciendo :P
Segun tengo entendido, "Tangents" es el que debes usar, pero "Vertex_Colors" es otra opcion si ya tuvieses los vertexcolors de las tangents en tu objeto/escena, digamos si trabajases en un estudio de videojuegos donde tengan herramientas para transportarlos del engine y otras herramientas a XSI y vice-versa.



Quedo mas claro? :buck2:

Eloihm

  • **
  • 775
  • "Aprende las reglas, domínalas, rómpelas"
Re: Diferencia Unbiased Tangent/Normal Map
« Respuesta #2 en: 28 Junio 2011, 17:53:50 »
IRTFM,TTRWIASH,BIDNUI

Alanf, te agradezco la intención, pero mi problema no es el idioma inglés, sino la interpretación del mismo. Quiero decir, unbiased significa que los valores vienen normalizados, entre cero y uno. Estupendo. Y ahora, ¿cuáles son las ventajas y desventajas? ¿En qué casos se suele usar?

Y así con casi todo, que la propiedad tangent cree un punto flotante (?) pero que se pueda cambiar el datatype (?) si mi shader espera shorts (Y no tengo ningún shader sin calzóncillos en mi escena), me deja igual o peor que cuando empecé.

Más que una explicación técnica (que también la agradezco), me gustaría una explicación más orientada a la práctica.

Pero gracias, de todos modos.

Re: Diferencia Unbiased Tangent/Normal Map
« Respuesta #3 en: 28 Junio 2011, 18:36:37 »
Estupendo. Y ahora, ¿cuáles son las ventajas y desventajas? ¿En qué casos se suele usar?
En principio las normales por defecto vienen normalizadas (eso significa que el tamaño del vector es 1) pero hay ciertos factores que pueden hacer que no lo estén, por ejemplo las user normals... o si tienes escalada la propia malla. Esta propiedad según entiendo fuerza el normalizado.

Citar
Y así con casi todo, que la propiedad tangent cree un punto flotante (?) pero que se pueda cambiar el datatype (?) si mi shader espera shorts (Y no tengo ningún shader sin calzóncillos en mi escena), me deja igual o peor que cuando empecé.
Todo "número" (variable) en programación tiene cierto margen de precisión interno según su tipo. Los float están cifrados a 32 bits y soportan muchísimos decimales (1,175494351e-38 según wikipedia) mientras que un short es simplemente un entero.
Con eso en mente, lo único que dice ahí, es que la propiedad tangent te permite cambiar el tipo de números que componen tus normales para que si tu shader no soporta floats, los pueda leer igualmente.

Eloihm

  • **
  • 775
  • "Aprende las reglas, domínalas, rómpelas"
Re: Diferencia Unbiased Tangent/Normal Map
« Respuesta #4 en: 28 Junio 2011, 18:44:04 »
Gracias, Cesar. Más o menos creo que empiezo a ver por donde van los tiros.

alanf

  • *****
  • 6026
  • Pipeline Developer @ Felix & Paul Studios
Re: Diferencia Unbiased Tangent/Normal Map
« Respuesta #5 en: 28 Junio 2011, 19:04:27 »
Mas que ventajas o desventajas, son opciones diferentes. Lo que dijo Cesar. :)



pd: me alegro que todos tus shaders tengan calzoncillos. xD

Eloihm

  • **
  • 775
  • "Aprende las reglas, domínalas, rómpelas"
Re: Diferencia Unbiased Tangent/Normal Map
« Respuesta #6 en: 28 Junio 2011, 20:06:41 »
Si,una vez apareció uno sin ellos y todas las aristas se pusieron rojas,que papelón...

Chorradas aparte, abrí este hilo por curiosidad y por aprender más acerca de lo que estoy haciendo,por lo que todo comentario me resulta de provecho.

Por cierto,sin salirnos mucho del tema,supongamos que hay un personaje simétrico y que le dieramos UVs suporponiendo una mitad sobre la otra,¿Puede que alguna de estas opciones sirva para evitar que el mapa de normales afecte bien a una mitad pero mal a la otra? ¿O no tiene nada que ver?

alanf

  • *****
  • 6026
  • Pipeline Developer @ Felix & Paul Studios
Re: Diferencia Unbiased Tangent/Normal Map
« Respuesta #7 en: 28 Junio 2011, 22:04:01 »
Que yo recuerde eso se soluciona con el Tangents property de siempre, pero hace tiempo que no toco el tema.

Eloihm

  • **
  • 775
  • "Aprende las reglas, domínalas, rómpelas"
Re: Diferencia Unbiased Tangent/Normal Map
« Respuesta #8 en: 29 Junio 2011, 09:46:08 »
Ok, pues echaré un ojo en ese sentido también, gracias! :)

Re: Diferencia Unbiased Tangent/Normal Map
« Respuesta #9 en: 29 Junio 2011, 12:08:02 »

Por cierto,sin salirnos mucho del tema,supongamos que hay un personaje simétrico y que le dieramos UVs suporponiendo una mitad sobre la otra,¿Puede que alguna de estas opciones sirva para evitar que el mapa de normales afecte bien a una mitad pero mal a la otra? ¿O no tiene nada que ver?

Esto nunca se hace, quiero decir, superponer UV's. O al menos nunca lo he visto de forma profesional.