Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Iluminación atraviesa paredes (interior)

Iniciado por fracto, Octubre 24, 2015, 11:43:23 PM

Tema anterior - Siguiente tema
Hola a todos,estoy trabajando con un interior de una escena. La malla que define las paredes de la misma están con las normales hacia el interior para que las caras se vean correctamente.Pues bien, por lo que parece la luz del sol atraviesa las paredes y los objetos del interior me crean sombras en el suelo, cuando en realidad sólo debería entrar luz por las ventanas y el interior debería estar mucho más oscuro.¿Sabéis a que puede ser debido?Os dejo una captura de pantalla.Gracias!

Octubre 25, 2015, 01:17:15 AM #1 Ultima modificación: Octubre 25, 2015, 01:17:35 AM por Antonio
Pues como has dicho:

"La malla que define las paredes de la misma están con las normales hacia el interior"

Si miras la pared por el lado exterior (que es por el que llega la luz) verás que no hay nada, no hay textura ni capa ni nada, de modo que los rayos de luz no detectan la colisión para calcular las sombras.

La manera de solucionarlo, es creando geometría con los vectores normales dando al exterior, no es obligatorio que tenga texturas, de hecho, entre las opciones del componente renderer puedes elegir que ese objeto sólo se renderice su sombra por lo que optimiza un poco, pero el caso es que tiene que estar ahí para el cálculo, si no la luz no detecta el muro.

Hola Adngel,estaba decidido a realizar lo que me comentabas. Era una pena tener que doblar la geometría utilizada, que no se va a ver, para que las sombras fueran correctas... Pensaba que modelando únicamente las caras internas de las paredes iba a funcionar.Entonces he pensado ¿porqué no utilizar un shader doble cara? ¿con esto se solucionaría? Pues mirando el Inspector de mi modelo, he podido ver que en el Mesh Renderer, hay un elemento llamado Cast Shadows y he podido poner que las sombras las generen las dos caras del objeto. Con esto lo he podido solucionar.Crees que es una buena solución o es mejor, aunque haya que doblar la malla, hacer lo que me comentas?Muchas gracias.

Noviembre 03, 2015, 01:56:27 PM #3 Ultima modificación: Enero 01, 1970, 01:00:00 AM por Antonio
Un shader de doble cara creo que también funcionaría. Aunque no sé si realmente sería lo más óptimo. Esas caras que están fuera, no se van a ver, usando un shader de doble cara, te ahorras el cálculo de vértices y geometría, pero hace el de la renderización que es más costoso. (Si el material es un simple diffuse, pues no importará mucho, pero si resultara que por ejemplo, es un material  con mapa de normales, textura especular, otra de altura, otra de occlusion y reflejando un reflection probe. Pues es algo más caro, y duplicar dicho coste para algo que realmente no se va a ver, pues ahí está la duda.

Cuando digo de crear una geometría para las sombras, no es necesario que esté igual de detallada que la pared interior. Es un objeto que no se va a ver, que sólo estará ahí para el cálculo de sombras, así que podría ser algo como esto:



La fila de abajo es la que tiene el polígono de sombras, esa cosa verde. Que en verdad le tengo puesta la opción esa de "Cast Shadows -> Shadows Only", pero la quité un momento para hacer la captura y se vea el modelo.

 

Podias probar poniendo un layer a las paredes y aplicando un culling mask a la luz exterior,de esa forma tus paredes no se verian afectadas por esa luz,¿es lo que buscas? 

[quote author=Adngel" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="33085" data-ipsquote-contentcommentid="122990">Un shader de doble cara creo que también funcionaría. Aunque no sé si realmente sería lo más óptimo. Esas caras que están fuera, no se van a ver, usando un shader de doble cara, te ahorras el cálculo de vértices y geometría, pero hace el de la renderización que es más costoso. (Si el material es un simple diffuse, pues no importará mucho, pero si resultara que por ejemplo, es un material  con mapa de normales, textura especular, otra de altura, otra de occlusion y reflejando un reflection probe. Pues es algo más caro, y duplicar dicho coste para algo que realmente no se va a ver, pues ahí está la duda.

Cuando digo de crear una geometría para las sombras, no es necesario que esté igual de detallada que la pared interior. Es un objeto que no se va a ver, que sólo estará ahí para el cálculo de sombras, así que podría ser algo como esto:


 [/quote]Buenas! Con la captura de pantalla queda realmente claro. En mi caso tengo paredes curvas y techos curvos jejeje lo probaré a ver.Gracias!
[quote author=kik195" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="33085" data-ipsquote-contentcommentid="123170 date=1446822071]Podias probar poniendo un layer a las paredes y aplicando un culling mask a la luz exterior,de esa forma tus paredes no se verian afectadas por esa luz,¿es lo que buscas? [/quote]Buenas!He creado una nueva Layer y en el Culling Mask la he deseleccionado (volviendo a dejar el Cast Shadows en On) y no me funciona. Puede que no lo haya realizado correctamente...Gracias por la ayuda!

Hay una forma que yo utilizo a veces pero es un poco liosa te explico,creas una spot light en cada ventana,les aplicas un layer para que la direccional las ignore pones las sombras en off y les añades una cookie con la forma de las ventanas con eso podras llevar la proyeccion "sombra" hacia donde tu quieras.Los pros de esta técnica es que ahorras recursos porque no usas sombras.Los contras es que las luces tambien comen recursos por lo que es importante que todas tengan sus layers y se ignoren unas a otras en el caso de que los hazes de luz se crucen. 

Hice un ejemplo rapido para que veas el resultado,como puedes ver las ventanas no tienen shader de doble cara,con esta tecnica imitamos la luz del sol y las sombras que genera de forma "artificial".


[quote author=kik195" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="33085" data-ipsquote-contentcommentid="123208">Hice un ejemplo rapido para que veas el resultado,como puedes ver las ventanas no tienen shader de doble cara,con esta tecnica imitamos la luz del sol y las sombras que genera de forma "artificial".window sun.jpg

Bueno lo primero que tienes que hacer es una cookie de tus ventanas,posiciona una camara en frente y haz una captura sin skybox(mira como estan puestos los presets en la captura),luego editas esa foto y la pones en escala de grises,regulas el canal Alpha para que el blanco sea blanco y el negro negro(la captura 2 es el resultado).El siguiente paso es anadir las Spotlights,cambia el color con la configuracion que aqui te dejo y añadeles la cookie,regula los presets a tu gusto hasta conseguir el resultado mas realista(en este paso vas a estar bastante tiempo ),shadows off.Ahora pasamos a la luz direccional,pon un layer a las paredes,los muebles y todo lo que hay en el interior de la casa para que la luz direccional las ignore(culling mask que ya conoces),y te estaras preguntando que porque sigues teniendo la luz direccional si no la usas ,bueno es para hacer un poco de magia,si quieres hacer que los rayos de sol aparezcan tienes dos formas,una es con un efecto de particulas y otra es usando un efecto de renderizado llamado "sun shafts" que para eso es por lo que necesitas la luz direccional(haz un layer para las spot y añadelas a la culling mask de la direccional), ademas de esta luz necesitaras que tu skybox sea muy luminoso ya que estos factores incluido la rotacion de la camara influyen a la hora de usar este efecto,no siempre encontraras la posicion adecuada para este efecto en ese sentido usar particulas es lo mas versatil. Mencione antes las sombras off,tambien en la direccional.






Noviembre 09, 2015, 11:14:03 PM #10 Ultima modificación: Noviembre 09, 2015, 11:28:28 PM por fracto
Hola kik195,primero agradecerte tu ayuda. Comentarte que he creado la cookie y cuando he querido usarla dentro del spotlight que he creado no me la aplica. Te dejo captura de pantalla de como está configurado mi cookie, a ver si lo he realizado bien.Cuando solvente esto sigo con el resto de pasos.  Edito: Me aparece el error que las cookies deben tener un tamaño de ancho y alto igual, es decir, cuadrada. Vuelvo a intentarlo....Edito 2: Lo he podido aplicar pero no me hace el efecto deseado...A parte, por lo que he leído los Sun Shafts solo aparecen en Unity Pro, de manera que tendré que utilizar partículas no?

Noviembre 10, 2015, 08:23:08 AM #11 Ultima modificación: Enero 01, 1970, 01:00:00 AM por Antonio
Si estás usando la versión 5.0 de Unity, deberías tener acceso a las mejoras de la versión Pro. (Arriba en Assets, está la opción de importar assets standards, y ahí, busca los Image Effects). El Sun Shafts es un componente que se tiene que aplicar al objeto de la cámara.

Si como dice el compañero es un efecto que viene en standart assets en unity 5 si usas el 4 solo lo tienes en la pro (no comente lo de ponerlo en la camara porque todos los image effects van en la camara,fallo mio).Si la cookie no te hace el efecto deseado es porque quizas tengas la textura en repeat y no en clamp.y ten paciencia vete probando los buenos resultados se consiguen probando y fallando.(si la proyeccion esta invertida osea lo que tiene que ser sombra te aparece como luz selecciona en las opciones de textura Alpha from greyscale).Vale ya vi el problema que las opciones de textura la tienes marcada como cookie,el problema con esto es lo que tu dices necesitas que la cookie sea cuadrada cosa que no te interesa para conseguir este efecto.Pon la cookie como textura y asi conservaras las proprciones reales.

Buenas de nuevo kik195 / Adngel,He probado vuestras indicaciones y decir que, por parte de crear una cookie para las ventanas me ha funcionado correctamente. Ahora es momento de ir ajustando hasta conseguir algo real tal como comentáis. De esta manera ya no necesito utilizar shaders doble cara y he podido aumentar en 20FPS de media en el escenario.En cambio, con el tema de los "sun shafts" no he tenido la misma suerte. He añadido el script a la cámara que tengo apuntando a la ventana y no me aparecen. Os adjunto la configuración que tengo actualmente, por si me podéis echar una mano. Si creéis que es mejor utilizar un sistema de partículas y hay algún tutorial por ahí que conocéis me decís y me pongo en ello. Realmente todos estos detalles hacen que los interiores vayan cogiendo carácter. He introducido algunas luces de diferentes colores para otorgar mayor dinamismo, no se si es una solución correcta o no.... Supongo que el que falten las texturas tampoco ayuda a tener una imagen global.Muchas gracias! 

Etiquetas: