Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Lightmaps dinamicos

Iniciado por KILE, 29 de Enero de 2003, 09:00:45 PM

« anterior - próximo »

KILE

                                Bueno otra de lightmaps jejeje. Ahora lo que estoy trabajando es con lightmaps dinamicos (Sin generación de sombras). Estoy usando opengl y mi dudilla es que a la hora de renderizar la escena con el lightmap dinamico, si tengo ya lightmap estatico y la textura de cada objeto pues tengo ya ocupadas las 2 extensiones de multitextura que suelen soportar la mayoría de las tarjetas. No es plan de intentar buscar una tercera multitextura :P asi que lo unico que me quedaba era usar blending :( y hacer 2 pasadas. De hecho 1 con multitextura + textura y otra con multitextura + textura lghtmap dinamico. Hay alguna manera de hacerlo mas rapidillo? :P
Y segunda pregunta que opinais entre hacer los lightmaps al estilo clasico de tener la lista de UV de cada poligono e ir actualizando las coord de textura en cada movimiento de la luz o por el contrario usar texture projection trabajando con la matriz de textura? :P

Un saludo                                

Lord Trancos

                               
CitarBueno otra de lightmaps jejeje. Ahora lo que estoy trabajando es con lightmaps dinamicos (Sin generación de sombras). Estoy usando opengl y mi dudilla es que a la hora de renderizar la escena con el lightmap dinamico, si tengo ya lightmap estatico y la textura de cada objeto pues tengo ya ocupadas las 2 extensiones de multitextura que suelen soportar la mayoría de las tarjetas. No es plan de intentar buscar una tercera multitextura :P asi que lo unico que me quedaba era usar blending :( y hacer 2 pasadas. De hecho 1 con multitextura + textura y otra con multitextura + textura lghtmap dinamico. Hay alguna manera de hacerlo mas rapidillo? :P

Yo hago esto...

 1pass
 2pass <"faked" lightmaps dinamicos>
 3pass <"normal">

^_^;; no se siquiera como hacerlo en 2 pasadas... si se te ocurre como montarlo ya me diras como lo haces.

Citar
Y segunda pregunta que opinais entre hacer los lightmaps al estilo clasico de tener la lista de UV de cada poligono e ir actualizando las coord de textura en cada movimiento de la luz o por el contrario usar texture projection trabajando con la matriz de textura? :P

Yo uso texture projection, lo de "lockear" el vertex buffer pa modificar las UVs no me parecio buena idea.                                
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

Haddd

                                Yo uso una técnica diferente. Lo que hago es modificar la textura del lightmap. Como ya están asociadas sus U,V y sé la posición que ocupan, mi único trabajo es actualizar una textura de 512x512 en los triángulos que se están utilizando y listos.                                

ethernet

Podrias explicar mejor tu tecnica haddd ?

lord: se da alguien q aun espera el cotw de lightmaps xDD

saludos

Haddd

                                Mira primero calculas los pasos normales para tener tu lightmap. Entonces al final tienes:

Que cada triángulo de tu escena tiene las coordenadas de su trocito de lightmap

Una o varias texturas que son los lightmap

Pues una vez que tienes esto, sólo tienes que calcular de nuevo la luz, porque ya qué posición del lightmap tiene asignada. Esto hace que calcular las luces dinámicamente reduzca mucho su tiempo.                                

Lord Trancos

                                creo q hadd esta hablando de dinamic lightmaps reales y yo de "faked" dinamic lightmaps.

ethe: sorry pero ult toi muy ocupado (apenas se me ve pol foro), con la ult. version de las lmtools (quiero acabarla ya!). cuando tenga eso te juro por snoopy q te envio el code ese.                                
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

ethernet

ok lord ya paro de meter presion xD
thx hadd

ethernet

cuando os referias a faked os referias a tener una textura precalculada ?
usais planar mapping ?
cuando tienes una malla grande como sabes q q poligonos debes aplicar un lightmap ? me refiero ligthmaps dinamicos

saludos

Lord Trancos

                               
Citarcuando os referias a faked os referias a tener una textura precalculada ?
usais planar mapping ?
cuando tienes una malla grande como sabes q q poligonos debes aplicar un lightmap ? me refiero ligthmaps dinamicos

saludos

1.- Sipe. El tipico "circulo de luz".
2.- Yo sip.
3.- Necesitas tener el espacio particionado. Yo por ejemplo uso un octree. Cuando quiero saber a q poligonos puede afectar un lightmap dinamico, hago un comprobacion para ver con que nodos del octree colisiona una esfera q representa a la zona iluminada por la luz.                                
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

ethernet

aja, thx lord, suponia q se haria usando alguna tecnica de ese tipo

saludos

ethernet

Ahora una cosa q se me ocurre con el planner mapping. Imaginate q estas en un pasillo dos paredes, techo y suelo. Si nos ponemos a calcular sobre q plano debemos proyectar suponiendo q las normales de los poligonos son iguales sobre donde se proyecta ? q criterio se aplica ?
saludos

Lord Trancos

                               
CitarAhora una cosa q se me ocurre con el planner mapping. Imaginate q estas en un pasillo dos paredes, techo y suelo. Si nos ponemos a calcular sobre q plano debemos proyectar suponiendo q las normales de los poligonos son iguales sobre donde se proyecta ? q criterio se aplica ?
saludos

:o Las normales de los poligonos son iguales ????? Eso es imposible; los poligonos no podrian formar un pasillo.

Para determinar sobre que plano se aplica el mapeado yo me baso en el componente mas grande de la normal.



function  vectLargestComponent(const _v: P_Vec): TXYZ;



var _abs : single;



begin

 _abs := Abs(_v^[X]);

 Result := vectX;

 if _abs < Abs(_v^[Y]) then begin _abs := Abs(_v^[Y]); Result := vectY; end;

 if _abs < Abs(_v^[Z]) then Result := vectZ;

end;

                               
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

ethernet

Me referia q las normales fueran iguales en modulo ;DDD. Viendo tu codigo veo q si son iguales primero pilla el de la componente X despues el de la Y y por ultimo el de la Z, supongo q te habra salido asi y no lo has hecho por algo especial no?

saludos

Lord Trancos

                               
CitarMe referia q las normales fueran iguales en modulo ;DDD. Viendo tu codigo veo q si son iguales primero pilla el de la componente X despues el de la Y y por ultimo el de la Z, supongo q te habra salido asi y no lo has hecho por algo especial no?

saludos

todas las normales son iguales en modulo :P

vale, vale,... ya se q te refieres a las componentes ...  pues el codigo venia asin; como creo q ya comente el codigo del plannar maping lo saque de un ejemplo q encontre. pero weno, si las 3 compos son iguales da igual el plano q eligas...

pd- sigo pensando q es jodido formar un pasillo con poligonos cuyas normales tengan sus 3 componentes del mismo modulo :P                                
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

Mars Attacks

                                Lord Tronco, ¿puedes pasarte un poco por el thread de Mi Amigo Mac y decirme qué te sugiere el problema que allí me acaece? El de las luces "bajo" la pared. Asias miles.                                






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.