Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Reflejos del avión en el mar

Iniciado por Drácula, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

Drácula

                                Bien, el avión ya vuela y el mar está formado por un perlin noise que da una buena impresión. Pero ahora debo hacer que el avión refleje en el mar. Sin embargo, al tener olas , no puedo utilizar la típica matriz de reflejo. Entonces se me ocurre:

a-En lugar de hacer el reflejo proyectar la sombra

b-Utilizar la técnica que aparecen en NVidia sobre proyecciones de luz para hacer Shadows. Es decir, primero renderizamos visto desde arriba y luego asociamos vértices con coordenada de textura.

¿Alguna idea sobre estos método u otros que se os ocurran?                                
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

Tei

                                te habla un artista, no un programador.
si puedes renderizar  el avion con alfa, invertido respecto al eje que marca el horizonte, te quedara un reflejo majo.

no pienso que esto cueste mucho, y creo que quedaria bien. Lo de las sombras y todo eso,
sobre una superficie que dices tiene olas..
buff...
..por cierto ¿olas? ¿porque? ¿tratas de ser realista?. Generalmente los aviones vuelan muy alto para apreciar la olas como otra cosa que no sea una textura. Ahora bien, si ya lo tienes programado, estoy seguro que tendra una pinta tremenda, aunque a menos que le metas una tormenta de cojones igual queda algo irreal. O no.                                

KILE

                                Umm puedes guardar el reflejo de la matriz normal en una textura (Render to texture) y luego usando multitextura aplicar al mar la textura del mar y encima con blending la textura del reflejo de forma q se adapte a su forma                                

Drácula

                                A Tei:
Eso no quedaría bien por que hay olas. ¡Y olas altas! De forma que no puedo aplicar un reflejo porque no se puede aplicar a una superficie no uniforme.

A Kile:
Ese es el método 2 que expongo, el de Shadow Mapping de Nvidia. Pero me parece que quizás debería haber algo un poco más sencillo...                                
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

KILE

                                Hombre puff yo sinceramente no se me ocurre otro método y tampoco creo que haya algo mas sencillo que eso porque no es algo trivial. Prueba ese metodo que aunque te lleve algo mas de tiempo es el que te va a llevar buscar otro más sencillo y si lo encuentras implementarlo :lengua:                                

samsaga2

                                Si quieres un reflejo "realista" podría ser muy costoso.

Por cada poligono del mar tendrias que dibujar la escena desde el punto de vista de ese poligono, guardarla como textura y finalmente aplicar esa textura a ese poligono en el trazado final de la escena.

Me lo acabo de inventar, cuela? :sonriendo:
                               

synchrnzr

                                La próxima vez que vayas a la playa, mírate bien el agua a ver qué refleja... :ojo:

Sync :guay:                                

Tei

                                no me imagino el oceano como algo muy reflectante, un lago a lo mejor si, pero el mar me lo imagino como muy "rugoso" y ahi mejor aplicar una sombra. Digo.
mi idea de poner el avion invertido... es verdad que igual se ve mal, cherto, lo reconosco.                                

samsaga2

                                Poz zi, hay que reconocer que el mar tiene un tono mate. Incluso las sombras de los objetos que están a unos centimetros de distancia del mar ya no se ven (lo estuve comprovando el otro dia en la playa :sonriendo:. Lo único detacable que se ve (aparte de toda esa mierda flotando) son los reflejos del sol ademas que a menos profundidad el agua es más clara (por la arena del fondo supongo).
Creo que haciendo los reflejos y que el agua se vea mas clara en las orillas sería suficiente para dar realismo.                                

synchrnzr

                                No hay nada como la observación para darte cuenta de ese tipo de cosas :ojo:

Ya puestos, ¿qué tal utilizar una especie de "layered fog" para que el agua se vea transparente a los items que están flotando a poca profundidad o en las orillas y de un tono azul verdoso oscuro en las zonas profundas que correspondería al color del layered fog? (Por dar ideas, que no quede...)

Sync :guay:

PD: Bien pensado eso sería más para un juego de submarinos que de aviones... XDDD

[ Este Mensaje fue editado por: synchrnzr el 2002-07-19 18:46 ]                                

Tei

                                el otro dia me pasaran esta funcion para hacer los brillos de underwater para los poligonos:



void EmitUnderwaterPolys (msurface_t *fa)

{

glpoly_t *p;

float  *v;

int   i;

float  s, t, os, ot;

int tn;



//GL_Bind (underwatertexture);

//tn = (int)(host_time * 20)%31;

//glBindTexture (GL_TEXTURE_2D, causticstexture[tn]);

glBindTexture (GL_TEXTURE_2D, shinytexture);



glEnable (GL_BLEND);

glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);//GL_DECAL);

glColor4f (1,1,1,0.01f);

glBlendFunc(GL_DST_COLOR, GL_SRC_COLOR);



for (p=fa->polys; p; p=p->next)

{

 glBegin (GL_POLYGON);

 for (i=0,v=p->verts[0]; i<p->numverts; i++, v+=VERTEXSIZE)

 {

  os = v[3];

  ot = v[4];



  s = os + turbsin[(int)((ot*0.5+(realtime*0.5)) * TURBSCALE) & 255];

  s *= ((0.5/64)*(-1))*3;



  t = ot + turbsin[(int)((os*0.5+(realtime*0.5)) * TURBSCALE) & 255];

  t *= ((0.5/64)*(-1))*3;



  glTexCoord2f (s, t);

  glVertex3fv (v);

 }

 glEnd();

}

glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);

glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

glDisable (GL_BLEND);

glColor4f (1,1,1,1);

}

//QMB!



probablemente no la pueda usar nuestro amigo del avion. pero como salio el tema, lo cuento al hilo...

Aqui teneis un shot:
http://www.planetquake.com/QMB/screens/qmb...04/caustics.jpg

aunque no se ve muy bien, ya se sabe que hay efectos que interesan por como se animan.. y un shot no los recoge bien (y en el shot utilizan una underwater fog un poco rara).                                

Drácula

                                Esto que has expuesto lo único que hace es modificar las coordenadas de textura. No me sirve, pero gracias, nunca se sabe cuando puedes utilizarlo.

Bien, gracias a todos. Al final hago una sombra y punto. La verdad es que queda muy muy bien con el perlin noise que genera el mar, porque se ve como se adapta a las olas y da una muy buena impresión. Pronto subiré una demo para que podais ver y hacer críticas constructivas.
                               
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

Ionicboy

                                ahora mismo lo q me estoy imaginando es un avion volando bajo mientras esquiva olas de 10 metros...

pos eso, queria comentarlo... :lengua:                                






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.