Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Shadow mapping

Iniciado por fiero, 25 de Diciembre de 2002, 08:24:14 PM

« anterior - próximo »

fiero

                                Bueno, voy a intentar implementar un shadow mapping por software. He estado leyendo varios documentos y paginas sobre el tema y esto es lo que más o menos he entendido (corregidme si me equivoco please):

-Renderizar la escena desde la luz y guardar el zbuffer-luz
-Renderizar la escena normalmente llevando dos cuentas por cada triángulo, una con las coordenadas 2D desde la luz y otra con las coordenadas 2D desde la camara he ir comparando los valores de Z.

Hay una cosa que no acabo de entender, si un triángulo no se vé poniendo la cámara en la luz (porque se sale de la pantalla) y sí se vé desde la posición normal de la cámara, ¿ese triangulo está con luz o con sombra? ¿es una limitación del shadow mapping?

un saludo                                
www.videopanoramas.com Videopanoramas 3D player

BeRSeRKeR

                                No estoy seguro de entenderte pero ahí va...

Si se trata de una luz de tipo spot, es decir, tiene su frustum o cono de visión, entonces, si el polígono está fuera del frustum de la luz, dicho polígono estará en sombra, por lo que desde el punto de vista de la cámara no será visible, siempre y cuando dicho polígono no se vea afectado por otra luz (por ejemplo otra luz de tipo spot, luz ambiental, etc)...

Espero que sea lo que preguntabas :-?

Saludos                                
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

fiero

                                Me referia más a un tipo de luz direccional, como el sol en un terreno, y utilizar el algorimo http://developer.nvidia.com/view.asp?IO=shadow_mapping . O sea, quiero proyectar las sombras de las montañas en el terreno. Ya veremos como queda, pero la pregunta que de surge ahora es si una montaña no se vé desde la posición de la luz, ¿esa montaña se queda sin sombra? ya que no entraria en el zbuffer de sombras. ¿O quizás es que hay que echar la cámara hacia atrás hasta que entre toda la escena en el zbuffer de sombras?  :-?

un saludo                                
www.videopanoramas.com Videopanoramas 3D player

BeRSeRKeR

                                Entiendo...pues ahora que lo dices, recuerdo un artículo que salió en GameDev no hará mucho sobre el tema.

http://www.gamedev.net/reference/articles/...article1817.asp

En él te explica cómo crear el shadowmap para un terreno. Yo no lo he leído pero puede ser lo que buscas...

¡Saludos y suerte!

PD: ah, en su página web viene el lightmapper con codigo fuente, por si te sirve de ayuda. Resulta que pilla el heightmap del terreno y de él extrae el shadowmap...o al menos eso es lo que he entendido echándole un vistazo rápido  :D                                
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Loover

                                Pero Berserker este último es para conseguir lightmaps y luego usarlos... quizas fiero se refiera al shadow mapping en tiempo real.
La imagen del día en flipcode trata de un motor con shadow mapping + bump. Ve a su página, hay código fuente sobre el tema.
Lo que no sé es si el shadow mapping en tiempo real es solo para luces tipo omni. A lo mejor no se puede aplicar a focos (un sol).                                
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

BeRSeRKeR

                                Si no leí mal, quiere hacer una implementación de shadow mapping por software por lo que no creo que sea en tiempo real...

Saludos                                
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

BeRSeRKeR

                                Por cierto, la problemática del shadow mapping viene precisamente con las luces de tipo omni. La mayoría de demos que puedas ver sobre shadow mapping utilizan luces de tipo spot. Esto es así porque con las luces de tipo omni habría que crear un cube map con el entorno de la luz...que es lo que ha hecho el de la IOTD de flipcode (o algo parecido)...

Saludos

PD: el sol se considera una luz direccional, no spot                                
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

fiero

                                Lo quiero hacer en tiempo real, ya veremos como baja la velocidad. Aunque también habia pensado lo de hacer un lightmap para el terreno, lo cual sería mucho más rápido de renderizar.

Voy a estudiar esos links...
un saludo                                
www.videopanoramas.com Videopanoramas 3D player

BeRSeRKeR

                                ¿Recalcular el shadow map en cada frame (o cada vez que el sol se mueva)?  :-?

Bueno, la técnica del artículo que te he puesto parece rápida pero no sé cuánto de rápida...¡ya nos contarás!  :ojo:

Aunque si la única fuente de luz que tienes es la del sol, podrías precalcular los shadow maps para cada fase del sol (separados por un intervalo de tiempo determinado)...no se qué resultado daría eso...

Saludos                                
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Ithaqua

                                No viene mucho a cuento, pero como apunte al tema está bien.

Ésta: http://www.pouet.net/prod.php?which=313 es una demo que se hizo en el '98 y que usa precisamente shadow mapping en tiempo real en un engine por soft, como el que si no me equivoco está haciendo Fiero. Es de los tiempos del ms-dos, pero si tenéis la oportunidad (más bien posibilidad técnica) de verlo merece la pena.
Yo la vi con un pentium 100 en su día ;-)                                
thaqua^Stravaganza
http://ithaqua.stravaganza.org

Loover

                                Duda: ¿cual es la diferencia entre una luz spot y una omni?                                
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

BeRSeRKeR

                                Las spotlights son aquellas que tienen posición y una dirección y también un "ángulo de apertura" que define el "cono de visión" de la luz. Las luces omni (omnidireccionales :ojo:) son aquellas que tienen posición pero no una dirección ya que éstas emiten luz en todas direcciones a partir de su posición...¡ah bueno las luces omni también tienen un radio de acción!.

En MAX, por ejemplo, podrás ver los gizmo (se dice así, ¿no? :D) de los distintos tipos de luz y entonces verás el cono de las luces spot, la esfera (que representa el radio de acción) de las luces omni, etc...

Por cierto, la demo esa con shadow mapping es la leche. La he tenido que ver en el ordenata con el Win98 porque con el XP no tiraba  :-?

Saludos                                
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.