Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Cositas de las D3D

Iniciado por Malandrin, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

Malandrin

                                Hola, pues me hallo toqueteando y probando las Direct3D y resulta que tengo el siguiente problema: Cargo un modelo y se me ve bien, lo roto y demás y entonces es cuando empiezan a desaparecer triangulillos, giro un poco más y vuelve a aparecer. Lo mismo ocurre si tengo un objeto detrás de otro, en determinados giros parte del de atrás se ve por delante del que realmente está delante. Tengo el zbuffer activado y el backface culling, el backface culling lo he probado de todas las formas (NONE, CW, CCW) y nunca se ve bien... alguna idea de que puede ser (porque ya está empezando a fastidiarme)?? Gracias.                                

Lord Trancos

                                Dices que tienes el zbuffer activado, ¿ no ? Vale, pero ¿ lo has creado ? :sonriendo:

Al llamar a CreateDevice, en los parametros asegurate de poner

EnableAutoDepthStencil = true;
AutoDepthStencilFormat = D3DFMT_D16; // por ejemplo

Tambien podria ser que no limpias el zbuffer en cada frame;

D3DDEV8->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xFF800000, 1.0, 0);

Creo que sera alguna de esas dos cosas... :ojo:
(NOTA: no se si he escrito bien el codigo, pq de C no controlo.)
                               
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

Malandrin

                                Holap, si hago las dos cosas que indicas (crear el zbuffer y borrarlo en cada tick) y de esto no es... en fin, gracias.                                

Drácula

                                Si el problema lo tienes al rotar los objetos...¿no debe estar ahí el error? A lo mejor las matrices son incorrectas...
¿Porqué no pones el código y así lo vemos todos más claros?
                               
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

BeRSeRKeR

                                Asegúrate de que los índices de tus triángulos están dispuestos de forma correcta, o sea que todos los triángulos se definen en el mismo sentido (clock-wise o counter clock-wise)...

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

Malandrin

                                Hola de nuevo. El problema no creo que esté a la hora de girar ya que simplemente uso las funciones de d3d y en algunos modelos ya desde el principio desaparecen triangulos. En cuando al sentido de los vertices, lo he comprobado y todos son de la misma forma (CW). Ahora mismo no tengo el código aquí, mañana lo posteo. Saludos.                                

mallrat

                                Hola! yo creo que las aceleradoras de ahora van tan rápido que se les pierden algunos triángulos sin querer, especialmente si no llevan textura al pesar menos... a veces se resuelve poniendo todos los triángulos en fila india y contándolos a mano a ver si están todos, si alguien tiene una solución menos engorrosa por favor que lo diga!! gracias!

:loco:                                

Malandrin

                                Hola, la 'desaparición' de poligonos también ocurre con modelos de 1000 y pico caras y 10 texturas, por lo que echarle la culpa a la tarjeta creo que puede descartarse. Saludos.                                

undol

                                Creo que BeRSeRKeR puede tener razón, recuerdo muy bien los primeros problemas que tuve en el momento de renderizar triangulos, Bueno solamente escribo esto para que te asegures que realmente todos se encuentran definidos en el mismo sentido

Saludos                                
aludos --{Undol}--

Lord Trancos

                               
Citar
Hola! yo creo que las aceleradoras de ahora van tan rápido que se les pierden algunos triángulos sin querer, especialmente si no llevan textura al pesar menos... a veces se resuelve poniendo todos los triángulos en fila india y contándolos a mano a ver si están todos, si alguien tiene una solución menos engorrosa por favor que lo diga!! gracias!  

:agh: ¿lo cualooooo?

¿Tarjetas que pierden poligonos por pesar poco? ¿poligonos en fila india para contarlos a mano? ¿Mama pato pierde a sus patitos si no los lleva en fila india?

:loco: No se los demas, pero yo no se por donde coger tu mensaje...

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

Loover

                                Al ricooooo, al ricoooo polígonoooo:

A ver, 3/4 de kilo de poligónos pero que esten fresquitos. Y no me los des sin textura, que estan muy sosos. No, ese no, que pesa mucho y luego se cae.




[ Este Mensaje fue editado por: Loover el 2002-05-22 12:53 ]                                
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

Ithaqua

                                Yo tengo un primo que tiene un colega que una vez perdió un polígono.

Revisa los rangos near y far para ver si estas exagerándolos demasiado y pierdes precisión de z-buffer.

                               
thaqua^Stravaganza
http://ithaqua.stravaganza.org

Loover

                                Seguramente sera eso, que no has definido bien el Frustum. Yo tengo algo asi:
   // Proyeccion (fov, pantalla, plano cercano, plano lejano)
   D3DXMatrixPerspectiveFovLH (&mat, D3DX_PI/6, float(width/height), 1.0, 100.0);
   g_pDevice->SetTransform (D3DTS_PROJECTION, &(D3DMATRIX)mat);

Prueba a cambiar el plano lejano, dandole valores más altos. Puede que sea este el problema.                                
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

Ithaqua

                                Al revés, el plano far cerca.
El near siempre debe estar lo más lejano posible y el far lo más cercano.
No hay valores near y far 'recomendables', depende de cada escena, pero siempre se tiene que hacer lo posible por acotar los rangos que vamos a necesitar.

                               
thaqua^Stravaganza
http://ithaqua.stravaganza.org

Loover

                                Pues que raro, porque en Opengl utilizo:
gluPerspective(90.0f, (GLfloat)width/(GLfloat)height, 5.0f, 3000.0f);

Que es la equivalente a la de direct 3D (los dos últimos valores son el near y el far) y de esta manera visualizo correctamente el mapa de quake 3 que cargo. Si pongo de far 5 y de near 3000... pues se ve un churro.

Aún no he cargado ninguna mapa con direct 3D, puede que en este se comporten de manera diferente los planos far y near... pero lo veo ilógico.
¿Estas seguro Ithaqua?
Lo que dices va contra la definición de frustum... imagina un cubo que corta la zona que se va a representar... la cara cercana (el plano cercano) debe estar más cerca que la lejana... sino los póligonos más lejanos, se renderizan por encima de los más cercanos (por eso digo que al cambiarlo se veía un churro).


[ Este Mensaje fue editado por: Loover el 2002-05-22 17:19 ]                                
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!






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.