XSIforum.com
Foros 3D => Autodesk Softimage => Principiantes => Mensaje iniciado por: Eloihm 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 :)
-
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:
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:
-
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.
-
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.
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.
-
Gracias, Cesar. Más o menos creo que empiezo a ver por donde van los tiros.
-
Mas que ventajas o desventajas, son opciones diferentes. Lo que dijo Cesar. :)
pd: me alegro que todos tus shaders tengan calzoncillos. xD
-
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?
-
Que yo recuerde eso se soluciona con el Tangents property de siempre, pero hace tiempo que no toco el tema.
-
Ok, pues echaré un ojo en ese sentido también, gracias! :)
-
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.
-
En videojuegos se hace, normalmente para economizar.
Por ejemplo, en Gears of War algunos detalles de las armaduras e indumentarias de los personajes comparten UVs y texturas. Y en Metal Gear Solid 4 solo se hicieron texturas para una mitad del traje, la otra mitad utiliza las mismas.
-
Sí, eso había oido, pero no lo sabía con certeza.
-
Perdonar el offtopic, pero entonces como se hacen UV´s solo en una mitad y se traspasan a la otra?
-
Esto nunca se hace, quiero decir, superponer UV's. O al menos nunca lo he visto de forma profesional.
En videojuegos se hace mucho para ahorrar espacio de UVs para mas detalle en otras zonas sin tener que usar mas resolucion.
-
Perdonar el offtopic, pero entonces como se hacen UV´s solo en una mitad y se traspasan a la otra?
Siendo el personaje simetrico,modelas una mitad,le das las coordenadas UV y ahora puedes seguir dos procesos:
1:
1.1- seleccionas la mitad modelada.
1.2- duplicar en simetria.
1.3- merge de las dos mitades mergeando tambien las UV.
2:
2.1- seleccionas todos los poligonos de la mitad modelada.
2.2- symmetrice polygons.
Hay que tener cuidado,a mi personalmente,las UV superpuestas me suelen dar Problemas,sobre todo con los mapas de altura,lo que en un lado esta "levantado" en el otro está "hundido" o cosas raras. Habia oido que en videojuegos se hace,pero no se bien como :p.
-
Eso tambien lo puedes hacer en el texture editor, es mas, es recomendable hacerlo asi.
Simplemente cortas la mitad que te interesa, la inviertes, la superpones y sueldas ambas ( o no las sueldes, el resultado es igual siempre que esten bien superpuestas).
Pero para eso has de hacer las uv's perfectamente simetricas (obvio)...para eso es ideal uvLayout.
Yo lo hago mucho en ciertos objetos, o en partes de objetos muy complejos o muy grandes con partes perfectamte simetricas,...pero no para personajes, ya que nunca son perfectamente simetricos.
Por ejemplo es muy útil para edificios donde hay paredes exactamente iguales (aqui no es necesario invertir las uv's, solo superponerlas totalmente,...o parcialmente, depende del caso)
Luego con un procedural y una nueva proyección puedes meter aleatoriedad o suciedad para que no se noten las mismas texturas,...
uff...habria muuucho que escribir sobre este tema,...
-
Pues tenemos mucho tiempo para leer ;)
-
XD.
La mayoria es por pura logica.
Si se tiene en cuenta que hay que hacer unas uv's al modelar, adelantas mucho.
De hecho, modelar no solo se refiere a los poligonos, si no a lo que vas ha hacer con ellos después.
Quiero decir, que las uv's muchas veces se pueden definir durante el modelado, los loops, la simetrias, las tensiones, etc,...Siempre hay que ir un par de pasos por delante. Luego solo cortas por donde ya habias previsto, y duplicas, superpones las uv's donde habias planificado.
Maximizar el espacio en las uv's te ahorra mucho tiempo de render al poder meter mucho detalle en texturas de un tamaño aceptable.
O unir materiales,..u objetos para que compartan uv's, etc,...
Te podria decir que el 50% del 3d lo he aprendido analizando objetos, texturas y materiales de juegos.
Por ejemplo, en Far cry2 o en Stalker es alucinante la cantidad de vejetación que meten,...o las reflexiones del cielo en el mar.....pues es muy ineteresante analizar todo esto...se aprende mucho, y te lo pasas bien..XD
-
Pero si superpones UVs a la hora de pintar, te va a salir exactamente lo mismo en ambas partes.
Si tengo un helicoptero (por poner un ejemplo) y pinto suciedad en una parte, en la otra voy a tener exactamente la misma suciedad. cosa que es terriblemente horrible. A menos que pinte la suciedad en otro canal de uv's con una distribucion distinta, cosa que seria una absoluta tonteria, porque si hago las uvs simetricas sera para ahorrarme texturas y otras cosas.
Puede que en videojuegos se haga, no se, nunca he trabajado en videojuegos, pero sin duda no me parece la forma mas correcta para conseguir calidad. Si prima ahorrar tiempos o lo que sea vale, pero como metodologia de trabajo, yo no lo veo. No podria currar asi, espero no tener que currar en videojuegos.
-
No solo se usa para video juegos. Es una tecnica mas,...y no se aplica siempre, solo cuando es necesario. Es una tonteria desperdiciar espacio, peso de la escena y tiempo de render,... y lo es mas cuando para lo mismo puedes usar la mitad.
La calidad no es meter tropecientos megas de texturas, ni poligonos,...la calidad es saber hacer las cosas correctamente, como bien sabes, Xuan.
Es solo una cuestion de optimización muy simple: puedo optener lo mismo con la mitad? Si la respuesta es afirmativa, la tecnica es valida para ese caso, si no, no.
-
La calidad no es meter tropecientos megas de texturas, ni poligonos,...la calidad es saber hacer las cosas correctamente, como bien sabes, Xuan.
Ahora mismo estoy trabajando con mapas de 32K asi que no puedo encajar esta frase :)
Fuera de conias, no digo que no sea bueno o malo utilizar esa tecnica, simplemente que yo nunca la he utilizado en ningun proyecto ni he visto utilizarla en cine o tv. Pero bueno, si os funciona eso es lo que importa.
-
Ahora mismo estoy trabajando con mapas de 32K asi que no puedo encajar esta frase :)
XD,..eso tú, que puedes permitirte ese lujo. La mayoria de mortales nos tenemos que conformar con menos. Asi que aprendemos a optimizar para obtener calidad con los recursos disponibles.
Es lo que hay.
;)
-
Ahora mismo estoy trabajando con mapas de 32K ...
Mari? xD
-
XD,..eso tú, que puedes permitirte ese lujo. La mayoria de mortales nos tenemos que conformar con menos. Asi que aprendemos a optimizar para obtener calidad con los recursos disponibles.
Es lo que hay.
;)
Ok, entiendo, pero vamos, en mi casa no sale un mapa de menos de 4k asi que tampoco hay mucho que optimizar. Bueno en composicion de escena trabajo con LOD pero es todo lo que optimizo en mi casa.
Mari? xD
Mari a saco xD