Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: MChiz en 24 de Mayo de 2003, 06:59:13 PM

Título: Sombras en tiempo real... x(((
Publicado por: MChiz en 24 de Mayo de 2003, 06:59:13 PM
                                Hola a todos:

Estos dias me estoy pensando en intentar implementar sombras en tiempo real. Realmente es muy jodido...
He estado mirando los Shadow Maps, ya que parecen bastante faciles de implementar, pero eso de que solo sirvan para luces direccionales, no me acaba de hacer... como veis el tema de las Stencil Shadows? A mi me parecen bastante complicadas ( por lo de encontrar la silueta del modelo ) y a su vez bastante costosas.

Otra duda que tengo, con el tema de las sombras en general, es sobre el como detectar las luces que afectan al modelo. La atenuacion doy por supuesto que se utiliza, pero que pasa si al modelo le afectan dos o mas luces? O hay que hacer que esto no pase?
Lo digo porque por ejemplo, si se ponen unas luces al nivel para hacer los lightmaps, me da en la nariz que no voy a poder usar las mismas luces para las sombras ( o muy bien repartidas tendrian que estar puestas ). Esto es asi? Por mas vueltas que le doy, no consigo aclararme del todo :(

Gracias a todos!
Un saludo!                                
Título: Sombras en tiempo real... x(((
Publicado por: MChiz en 28 de Mayo de 2003, 11:12:23 PM
                                No? Nadie?                                
Título: Sombras en tiempo real... x(((
Publicado por: Haddd en 29 de Mayo de 2003, 09:14:58 AM
                                Sombras por Stencil es un método en el cual la geometría se expande en la dirección de la luz. El coste es "pequeño" pq puedes utilizar un modelo mucho más simple del que en realidad se ve y el problema lo resuelves mandando más geometría a la escena, con lo que el coste es pequeño y funciona en todas las tarjetas. Aunque lo de pequeño depende de la sombra final, puesto que si la sombra es muy grande, pues la tarjeta tiene que renderizar mucho más que si la sombra es pequeña.
El problema es que la sombra es "dura", es decir, en los límites no está suavizada y esto le resta mucha calidad.

Los Shadow maps permiten que las sombras sean más reales, pero lo que hace el programa es renderizar desde el punto de vista de la luz y eso tiene suis problemas para calcular el tamaño del RenderTarget.

Respecto a los Lightmaps, se puede utilizar esta técnica para crear luces en "tiempo real" aprovechando ya muchos valores precalculados. No he probado todavía esta técnica, pero creo que no tardaría mucho una CPU de hoy en día en recalcular la iluminación.                                
Título: Sombras en tiempo real... x(((
Publicado por: MChiz en 29 de Mayo de 2003, 10:21:50 AM
                                Gracias por responder, pero sigo con la duda sobre el tema de como poner las luces.
Bueno, ya me seguire informando.
Gracias de nuevo                                
Título: Sombras en tiempo real... x(((
Publicado por: ALBSIM en 29 de Mayo de 2003, 11:19:58 AM
                                Bueno, lo de que con los Shadow Maps solo sirvan para luces direccionales no es del todo cierto, por ejemplo en http://www.delphi3d.net tienes una demo de dual paraboloid shadow mapping, el cual permite sombras generadas por pointlights.                                
Título: Sombras en tiempo real... x(((
Publicado por: MChiz en 29 de Mayo de 2003, 12:09:49 PM
                                ui, perdona! Queria decir luces puntuales direccionales ( focos ). Es cierto que se pueden hacer luces omni, pero me parece muy costoso lanzar 6 renders por luz y luego tener que proyectar eso en la escena.
He implementado las Stencil Shadows ( que recomiendo a quien quiera meter sombras que haga las de este tipo ) y me ha sido muchisimo mas facil de lo que me esperaba. En realidad no tienen nada!
Voy a mirar la pagina que me has dicho.
Gracias! : )                                
Título: Sombras en tiempo real... x(((
Publicado por: MaSteR en 29 de Mayo de 2003, 03:10:54 PM
                                Estoy de acuerdo, a mi me parece muy acertado el uso de stencil, te recomiendo q lo pruebes.                                
Título: Sombras en tiempo real... x(((
Publicado por: Zaelsius en 29 de Mayo de 2003, 07:53:33 PM
                                Si no me equivoco, hace algunos años(cuando no se utilizaba stencil buffers), las sombras se creaban renderizando los modelos(con menos polys) aplicando una transformación que los delimitaba al plano del suelo...y con esto y desactivando la luz y textura(para que la figura resultante fuese negra) se creaban las sombras. ¿No?

Creo que es la técnica que se utilizaba en motores software, pero no estoy seguro, lo mismo me lo estoy inventando ;-)                                
Título: Sombras en tiempo real... x(((
Publicado por: Daventry en 29 de Mayo de 2003, 09:12:49 PM
                               
CitarSi no me equivoco, hace algunos años(cuando no se utilizaba stencil buffers), las sombras se creaban renderizando los modelos(con menos polys) aplicando una transformación que los delimitaba al plano del suelo...y con esto y desactivando la luz y textura(para que la figura resultante fuese negra) se creaban las sombras. ¿No?

Creo que es la técnica que se utilizaba en motores software, pero no estoy seguro, lo mismo me lo estoy inventando

No te equivocas, es justo eso ;)                                
Título: Sombras en tiempo real... x(((
Publicado por: _Grey en 29 de Mayo de 2003, 10:44:02 PM
                                A eso no se le llamaba "proyeccion de poligonos" ?

En el libro de OpenGL de Anaya, hablan precisamente de eso.

Creas una matriz que al transformar el modelo, este se dibujaba "sobre" el poligono a donde se proyectaba.

Pero te las tienes que apañar para no dibujar fuera de ese poligono, y proyectar a tantos poligonos como sea necesario, resulta curioso que en el libro que comento, para no dibujar fuera del poligono se usa el stencil buffer :loco:

Y regresando al tema principal , no habia implementado sombras de ninguna forma, hasta que un dia me dia por probar...... pense que el shadow volumes seria lo mas facil (aun a costa de tener que requerir un hardware con stencil buffer), y la verdad creo que hacerte, lo implemente en un pis pas (como es logico pensar, se puede optimizar mucho mas lo que tengo hecho, pero para probar la teoria y tal, vale :ojo:  ), es mas, me da cosa pensar en los shadow map, tener que renderizar a una textura de niveles de gris, calculando segun le venga la luz, y luego toqueteando las coordenadas de cada vertice de cada poligono para que salgan en su sitio(salvo de las luces estaticas....creo....)(Por cierto,DirectX tiene una forma de calculo automatico de coordenadas de textura, alguien me puede decir si se puede usar para este caso), en fin, me parece una carniceria mental, ademas me gustan mas los shadow volumes, quedan perfectos, no como los shadow maps que corres el riesgo de que te salgan "cuadriculados".....

En fin, no doy mas la lata, saludotes!.                                
Título: Sombras en tiempo real... x(((
Publicado por: MChiz en 29 de Mayo de 2003, 11:23:30 PM
                                Veo que todos estamos de acuerdo : )                                
Título: Sombras en tiempo real... x(((
Publicado por: Tei en 31 de Mayo de 2003, 01:03:07 AM
                               
CitarVeo que todos estamos de acuerdo : )

amen