Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





OGRE y transparencias

Iniciado por Haddd, 13 de Marzo de 2003, 09:21:47 AM

« anterior - próximo »

Haddd

                                El otro día bajé las demos del OGRE y quedé sorprendido con una demo que muestra transparencias perfectas, ordenando los polígonos de forma que se pinten en el orden que corresponda.

Mi pregunta es..¿Cómo lo hacen? En la demo hay un plano que corta un toro. Si OGRE hace el corte antes de pintar lo entiendo, si no, ¿alguien conoce la técnica?                                

NeLo

                                No pretendo ser indiscreto pero... ¿Por qué no descargas las fuentes de OGRE y examinas el código?

OGRE es de código libre. Download and read.

Saludos.

PD: ¿Alguien usa OGRE?                                
Drowning deep in my sea of loathing

Ithaqua

                                En la web de nvidia había hace mucho tiempo un método para hacer las transparencias perfectas que dices, busca por "order independant transparency".                                
thaqua^Stravaganza
http://ithaqua.stravaganza.org

GrEnDeL

                                Bueno, yo no veo el problema: pinto el toroide y luego el plano transparente usando el zbuffer para saber si tengo que sobreescribir o no. ¿Cual es el problema? A lo mejor lo he entendido mal, no he visto la demo ;)                                
b>Cristóbal Carnero Liñán aka GrEnDeL
http://www.grendelweb.go.to
grendel_ccl@hotmail.com

Haddd

                                Bajarme el código fuente y "leerlo" no creo que me sirva para entender cómo lo hacen, a no ser que esté bien documentado.

Respecto al post de nvidia, lo reeleré, pero creo recordar que no era muy práctico porque lo que hacá era segmentar los objetos.                                

BeRSeRKeR

                                ¿Pero en esa demo está utilizando alpha blending o additive blending?...porque si es esto último entonces no tiene demasiado misterio ya que el orden de render no afecta al resultado final. Ahora, si es alpha blending entonces ya es otra cosa :D

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

BeRSeRKeR

                                He bajado el código y como imaginaba, utiliza additive blending. Aquí esta el script del material que utiliza:

// Transparent knots

Examples/TransparentTest

{

ambient 0.2 0.2 0.2

scene_blend add

depth_write off



{

 texture Water01.jpg

 scroll_anim 0.25 0

}

{

 texture Water01.jpg

 wave_xform scroll_y sine 0 0.1 0 0.5

 colour_op modulate

}



}


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

Haddd

                                ¿puedes explicar un poco el concepto de additive blending? No lo conocía.                                

BeRSeRKeR

                                Con el additive blending lo que haces, como su propio nombre indica es sumar los colores. En este tipo de blending, la componente alpha no entra en juego. Para obtenerlo, lo único que tienes que hacer es algo como:

pD3v->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
pD3v->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ONE);
pD3v->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);

También, cuando vayas a renderizar, desactiva la escritura en el depth buffer:

pD3v->SetRenderState(D3DRS_ZWRITEENABLE, FALSE);

y ya puedes renderizar sin problemas tus objetos con transparencia. Esta técnica es la que se suele utilizar para el render de partículas, o por ejemplo para el render de la malla que representa las superficies de agua en los quakes y similares (y otros muchos juegos)...

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

Haddd

                                Ya entiendo. Muchas gracias!                                

MaSteR

                                Mmmm interesante                                

seryu

                                ahora qe ta conestatada la duda.. xD

Citar
PD: ¿Alguien usa OGRE?

yop, x? si es para intercambiar info cojonudo, xqe no hay canales ni foros españoles del ogre U_U                                

MaSteR

                                Mmmm tengo una duda... yo estoy haciendo un engine en OpenGL y el ogre con openGL me pilla los fps q mi engine... iguales pero esq elijo DirectX y me pilla 90 80.... ESO CM ES?!!!! :(                                

seryu

                                no entiendo qe preguntas.. te pillas mas? eso es xqe d3d lo acelera por hard. ke te pilla penos? eso es xqe no tienes aceleracion x hard d3d y en soft va como el culo.

puede ser por eqiscientas razones, esto es como preguntar, xqe mi windows no funciona bien?

ten en cuenta qe ogl y d3d tienen opciones de configuracion distintas, soporte hard distinto, todo distinto xD                                

Grugnorr

                                Quieres decir que con OGL te pilla los mismo FPS que con tu motor pero que con DX te pilla muchos más?                                
hat the hells!






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.