Duda sobre bakeado de texturas
Hola, creo este hilo para qué los expertos del foro puedan resolver dudas técnicas a artistas 3D sobre cómo funcionan ciertas cosas dentro de las 3D, ya qué muchas veces puedes tropezarte con problemas que no sabes solucionar por no tener esos conocimientos.
Quiesiera preguntar lo siguiente:
Si tengo una escena con objetos con specular map y una fuente de luz, creo lightmaps de los objetos y se los aplico y luego borro la fuente de luz. El problema viene en que perderíamos el brillo specular que se creaba cuando la fuente de luz existía. ¿De qué manera podríamos suplir este problema? He pensado en crear un complete map en 3D studio y aplicarlo donde el diffuse map, pero los brillos realmente serían falsos y al moverte por la escena no cambiaría de posición. También he pensado en aplicar un reflection map con el brillo, pero no tengo mucha experiencia con este tipo de mapas. ¿Alguna solución? Saludos.
Duda sobre bakeado de texturas
Lo que quieres, tendría sentido en objetos estáticos, donde todos los mapas como especular, ambient oclussión, pueden ir lo que se dice bakeados, sobre el mapa de textura difusa. Donde al no moverse, no quedan raros, si no cambias la fuente de luz. Pero en objetos en movimiento, ciertamente ese mapa de especular mapeado de forma fija, quedaría raro. Si estas intentando esto para un motor de juegos, estos motores usan luces que, afectan al mapa especular de los objetos, como en cualquier escena 3d. Usan sombras dinámicas, por lo que bakear, se hacen con pocos mapas, o en x motores donde prima la optimización. No conozco otros sistemas ahora mismo.
Para tu caso, donde quieres iluminar sin luces, puedes meter mapas bakeando la textura y aplicandola a algún canal de autoiluminado o usar Vertex Paint como ligthmap. Digamos que vienes a pintar la luz. No lo he usado prácticamente nunca, así que, no puedo decirte al dedillo como funciona.
Otra opción, es usar mapas de entorno, mapeados. Usualmente se usan también para optimizar recursos, sobre todo en juegos claro está. Se pierde algo de realismo, pero se gana en efectividad (no se elimina el efecto de reflexión del todo) esto puedes verlo en vidrios y en superficies de agua, en juegos antiguos sobre todo, pero se sigue usando en plataformas de juegos para portátiles, móviles, etc.
De todas formas, si explicas exactamente que quieres lograr, igual te pueden explicar mejor para tu caso en particular, un saludo.
Duda sobre bakeado de texturas
Zerouks, precisamente la finalidad del foro es poner a la disposición de los usuarios las respuestas a sus dudas; para ello hay distintos subforos para cada disciplina. Si ponemos todas las dudas en un solo hilo sería un gran problema conseguir respuestas de manera ágil y eficiente.
Por esa razón te he editado el título y mudado el hilo a esta zona. Un saludo.
Duda sobre bakeado de texturas
Okey, realmente no sabía bien donde ponerlo por eso.
Infograph3d, la duda no es para hacer algo en concreto, aunque me surgió después de hacer una prueba para gameloft. Si seria para objetos estáticos, pero realmente ni siquiera así se conseguiría el efecto deseado poniendo el mapa bakeado en diffuse, porque al mover la cámara, aunque el objeto no se moviera los brillos iban a ser estáticos y perdería realismo.
El mapa de entorno si estoy en lo cierto es lo mismo que un reflection map, este tipo de mapa no se aún bien como funciona, tendré que hacer alguna prueba a ver si me sirve. Gracias. Saludos.
Duda sobre bakeado de texturas
Hola Zerouks.
Interesante lo que comentas. Se podría conseguir a través del shader, no estaría mal intentarlo algún día en UDK.
Así a bote pronto, se podría empezar filtrando una selección de los valores de RGB, cogiendo los más altos y quedandonos así con la parte iluminada del objeto. Después con una proyección de la normal en dirección a la cámara, proyectar una forma completamente blanca qué podríamos definir a través de una textura qué se viera en la superficie del objeto, simulando un brillo en la zona del objeto en la que la qué sus normales miren hacia la cámara. Suerte con ello y estaré al tanto por si tienes novedades. Un saludo.
Duda sobre bakeado de texturas
En UDK esto se hace super fácil, así de memoria, para hacer el brillo especular, producto escalar (dot product), entre vector de luz (lightvector), y eje Z (constan3 0, 0, 1) la salida del DOT la normalizamos, y después un power, esto nos dará el specular power (gloss) y un multiply para controlar intensidad y si queremos color, aquí podemos poner un constan 3 o un bitmap, supongo que, daría igual, todo esto se lo sumamos al complete map, sin especular claro, que estaría dentro del emisive, o si nos ponemos algo pijos, ponemos una iluminación custom lit y se le lo metemos todo al cuestom, si no, una aditive lit, pensaréis por qué lit si no queremos que calcule luces, porque si usamos unlit no tendremos información del vector de luz, podemos usar directional only, y como solo se puede poner una por escena ahorramos algo.
De todos modos, al final no se ahorra casi nada, el motor tiene que hacer todos los cálculos de luz, lo único que ahorramos es un poco en el sombreado, pero este Shader es píxel Shader no vertex shader.
Si no queda bien, en vez de usar el vector de la luz, podemos meter el vector de reflexión y ver si nos funciona con unlit y ahí sí ahorramos más, esto es a gusto del consumidor, habría que probarlo.
Aun así, y mirando todo friamente, supongo que, en un año, como mucho, no hará falta ahorrar tanto como para no hacer todos estos cálculos en tiempo real, los motores ahora están tirando hacia iluminación dinámica 100%, así que, casi ni lightmap, las tablest y los teléfonosya tiene potencia de sobra como para hacer estos cálculos, en un año o a lo sumo dos los complete map y estas cosas serán como el alfa coverange, y pijadas así que, ya no se usan. Saludos.
2 Archivos adjunto(s)
Duda sobre bakeado de texturas
Venga va, como tenía una duda, las cosas de hacerlo de memoria me he colado un poco, pero ya está arreglado.
Primero me sorprende gratamente ver que en unlit sí funciona con el vector de reflexión, con lo que es mucho mejor usar este.
No se puede poner en modo aditive, (soy idiota) puesto que en aditivo los negros valen cero y se vería transparente, el modo correcto es opaque cuestom
Es mejor no normalizar, porque si no tenemos que meter valores muy altos para que funcione.
Os dejo un par de capturas.
Son dos ejemplos, en una, la dirección de la normal de la cara es un simple Z, pero si queremos que ese specular se vea afectado por el normal, nada más simple que meter un normal map, aquí lo que busca es el vector de la normal de la cara, pues si le damos un normal mola más, creo que la diferencia es muy clara, si multiplicamos este normal por un constan 3 y la aumentamos el valor del azul, (z) hacemos que la intensidad del normal disminuya.
Como se puede ver, al final metí todo en cuestomlight, se puede hacer lo mismo y meterlo en emisive, pero así es más mejor, la cosa es que, al ser cuestomlighting estos objetos no se ven afectados por la luz, solo la posición de cámara respecto del objeto.
Archivo adjunto 181087Archivo adjunto 181088
Está hecho con UDK versión 10897. Saludos.
Duda sobre bakeado de texturas
Gracias por las respuestas. Lo he probado ya en udque y me ha funcionado. La verdad es que me ha sorprendido, porque pensaba qué no sería posible hacerlo (al menos sin meterte en programación). Eso sí, que si al final no se ahorra apenas no tiene mucha gracia. Saludos.
Duda sobre bakeado de texturas
Jeje ya decía yo que estabas tardando en aparecer Fiz. Gracias por la solución.
Pero claro, eso supongo que, es teniendo mínimo una luz, la direccional. Yo estaba pensando en cómo hacerlo sin ninguna, a ver si algún día me pongo con ello.
Enhorabuena si ya te ha funcionado Zerouks, un saludo.
Duda sobre bakeado de texturas
No amigo, no te hace falta luz, fíjate que no uso el vector de la luz, uso el de reflexión, aun así, aunque usase el de la luz, solo tomaría la posición de esta, pero no haría ningún cálculo porque es Shader es unlit, lo bueno es que podemos meter un normal con el mismo coste de cálculo, como es lógico se come memoria.
En cuanto a ahorro, no me refiero que no ahorre nada, seguro que si lo hace, pero es despreciable, ahora mismo está todo tan optimizado que no compensa, de todos modos este tipo de shaders los uso normalmente en sistema de partículas que emiten objetos, el motor los trataría como dinámicos y como partículas, así que, el cálculo esta vez sí que se dispara, con lo que es mejor hacerlo así, vamos es la única manera qué conozco.sin usar dinámicas. Saludos.
Duda sobre bakeado de texturas
Sin ninguna luz, pues entonces perfecto, gracias Fiz. Tendré que probarlo, tal vez aplicarlo a algo de partículas como comentas. Un saludo.
Duda sobre bakeado de texturas
De nada amigo, yo lo uso principalmente para las partículas, y hace tiempo hice pruebas para incluirlo en el último L. O. D, pero ya te digo que con lo optimizado que está todo, no merece la pena el trabajo más el aumento de memoria, el mejor uso que le veo es meterlo en partículas, o en objetos dinámicos que no puedas iluminar, por ser muchos o muy pesados, también puede quedar bien en multitudes, un montón de personajes corriendo, le puedes meter un Shader de este tipo para no freír la consola. Saludos.
Duda sobre bakeado de texturas
Uhm. Una cosa ¿No sería mejor usar el vector de la luz? Lo digo porque así tendría en cuenta la posición de esta.
Duda sobre bakeado de texturas
Entonces necesitas luces y la cosa se complica un poco, de todos modos creo que no es tan fácil como cambiar uno por otro, supongo que, en vez de Z o un normal se podría ver qué pasa si pones ahí el vector de luz, supongo que, hacen falta cambios, posiblemente le tendrías que poner el vector de luz por Z, pero vamos en 20 minutos se sacaría. Saludos.
1 Archivos adjunto(s)
Duda sobre bakeado de texturas
Juraría qué así funciona, pero no he podido hacer bien la prueba porque hay cosas que ahora mismo no sé de udque con respecto a las luces. Dejo la imagen porque veo que ha Diego también le interesa el tema.
Archivo adjunto 181188
Tengo un par de preguntas, Fiz ¿cuándo dices que la cosa se complica te refieres a qué consume más? ¿Qué es Z? Gracias, saludos.