Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: CoLSoN2 en 09 de Octubre de 2002, 08:58:37 PM

Título: Problemas con la cámara en DirectX: los polys enloquecen xD
Publicado por: CoLSoN2 en 09 de Octubre de 2002, 08:58:37 PM
                                Pues vereis, tengo un visualizador de modelos, que renderizaba de coña. pero he hecho algunos cambios en la clase cámara, y ahora la camara la maneja de coña, pero los triangulos se superponen dependiendo de la posicion de la camara, algo raro. podeis ver en una determinada posicion de la camara , esto se renderiza:

(http://www.warcraft3es.com/plane.GIF)

si teneis idea de porque puede, ser .. =([/img]                                
Título: Problemas con la cámara en DirectX: los polys enloquecen xD
Publicado por: Haddd en 09 de Octubre de 2002, 09:04:06 PM
                                Pues como no pongas aquí el código de la cámara..¡difícil lo tenemos para ayudarte! Yo creo que construyes mal la matriz de visualización, pero necesito código para decirte donde                                
Título: este es el codigo
Publicado por: CoLSoN2 en 09 de Octubre de 2002, 10:30:14 PM
                                void W3C_GFX_Camera::Create(LPDIRECT3DDEVICE8 device)
{
   D3DXMATRIX Trans, XRot, YRot, ZRot;
   D3DXMATRIX view;

   // cogemos la matriz de view actual y sacamos de ella algunos vectores
   device->GetTransform(D3DTS_VIEW, &view);
   m_right = D3DXVECTOR3(view._11, view._21, view._31);
   m_up = D3DXVECTOR3(view._12, view._22, view._32);
   m_dir = D3DXVECTOR3(view._13, view._23, view._33);

   // calculamos la nueva matriz
   D3DXMatrixTranslation(&Trans, -m_pos.x, -m_pos.y, -m_pos.z);
   D3DXMatrixRotationY(&YRot, -m_YRot);
   D3DXMatrixRotationX(&XRot, -m_XRot);
   D3DXMatrixRotationZ(&ZRot, -m_ZRot);

   view = Trans * YRot * XRot * ZRot;

   device->SetTransform(D3DTS_VIEW, &view);
}                                
Título: Problemas con la cámara en DirectX: los polys enloquecen xD
Publicado por: Haddd en 09 de Octubre de 2002, 11:23:25 PM
                                Qué forma MAS extraña de usar la cámara. Aquí te paso mi código:

   D3DXQUATERNION qR;CXMatriz rot;
   D3DXQuaternionRotationYawPitchRoll( &qR, m_AngY, m_AngX, m_AngZ);
   D3DXMatrixAffineTransformation( &rot, 1, NULL, &qR, NULL);

   m_At=CXVector(0,0,1)*rot;
   m_WorldUp=CXVector(0,1,0)*rot;

   m_WorldUp.Normalizar();

   m_NAt=m_At.NormalizarNuevo();


Ahora ya puedes utilizar las funciones de D3DX de LookAt para la cámara.                                
Título: Problemas con la cámara en DirectX: los polys enloquecen xD
Publicado por: BeRSeRKeR en 09 de Octubre de 2002, 11:49:58 PM
                                Es posible que si estás utilizando un pure device, ese sea el problema. Si estás utilizando parte de la clase de cámara que hay en los tutos, convendría hacer unas modificaciones que en aquel momento no hice porque eran unos tutos básicos. Y es que por ejemplo, con un pure device, los métodos GetTransform del device fallarán por lo que sería conveniente que mantuvieses tú mismo tus matrices de vista y proyección...a ver si hago el ánimo y actualizo el code de esa clase y lo subo a la page... ;)

Saludos                                
Título: aham
Publicado por: CoLSoN2 en 10 de Octubre de 2002, 07:38:04 AM
                                así es.
tonces mejor tener una matriz de miembro de la clase que vaya guardandola, no ? probaré eso, thx                                
Título: =(
Publicado por: CoLSoN2 en 10 de Octubre de 2002, 07:42:07 AM
                                sigue haciendo lo mismo :                                
Título: Problemas con la cámara en DirectX: los polys enloquecen xD
Publicado por: _Grey en 10 de Octubre de 2002, 07:18:07 PM
                                Utilizas bien el ZBuffer!?

Por que parece un tipico error de cuando se dibujan los polis sin zbuffer sin tener en cuanta la profundidad de estos....

:I                                
Título: si
Publicado por: CoLSoN2 en 10 de Octubre de 2002, 09:18:38 PM
                                el zbuffer esta bien, io tambien pense ke seria de eso, pero esta exactamente igual ke cuando iba bien :                                
Título: Problemas con la cámara en DirectX: los polys enloquecen xD
Publicado por: Haddd en 10 de Octubre de 2002, 11:48:07 PM
                                ¿has probado lo que yo te he dicho? No has respondido a mi post.                                
Título: Problemas con la cámara en DirectX: los polys enloquecen xD
Publicado por: Ithaqua en 11 de Octubre de 2002, 01:06:47 AM
                                Cada x dias sale un post como este, y siempre es por usar mal el near y el far. Pon el near a 1.0 por ejemplo y el far al que necesites. Mira en posts antiguos la razón. En el shot la verdad es que no se distingue nada (yo al menos no distingo nada), pero lo más probable es que sea eso.                                
Título: hmm
Publicado por: CoLSoN2 en 11 de Octubre de 2002, 11:46:24 PM
                                haddd, es k tu codigo es propio de tu engine, pero igualmente, prefiero acerlo con vectores distintos(direccion,posicio,etc), ke con los valores de la rotacion, etc

ithaqua, el far y near tengo 1.0 y 1000.0 , y lo del shot, simplemente es una nave ke deberia tener una superficie bien hecha, pero salen agujeros (triangulos ke faltan) por todos lados, pero en cuanto muevo la camara minimamente, estos trianguloske faltan se cambian, es decir, se ven, y otros no se ven, cosa rara XD
mirare en otros posts, aver ke encuentro thx                                
Título: Problemas con la cámara en DirectX: los polys enloquecen xD
Publicado por: _Grey en 12 de Octubre de 2002, 01:22:48 AM
                                se ven, y otros no se ven

esto podria ser otra cosa,pues igual el orden de los vertices en los poligonos esta mal,es decir, que las normales de los polis estan mal, en ocasiones ocurre cuando se trabaja en un modelador y sacar el modelo, por que en el modelador se suelen ver los polignos por ambos lados.

se ve bien si pones "setRenderState(D3DRS_CULLMODE,D3DCULL_NONE);" ?

saludos.                                
Título: nop
Publicado por: CoLSoN2 en 12 de Octubre de 2002, 03:21:21 PM
                                no, el culling no tengo desactivado y se ve asi. Pero si se hubiera visto asi siempre vale, pero el problema es ke tenia el visualizador ke renderizaba de coña. Pero el manejo de la camara era muy malo. Ahora, al implementarlo de otra forma, pasa esto :                                
Título: SIIIII
Publicado por: CoLSoN2 en 12 de Octubre de 2002, 11:15:04 PM
                                SIIIIII ya tira!"!! :D:DdD;D;DD:D

thx a todos, creo que la solucion a sido un poco de todo, tenia algo que ver con el near y far, y con el culling, y nose que mas xDDDD

;***