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]
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
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);
}
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.
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
así es.
tonces mejor tener una matriz de miembro de la clase que vaya guardandola, no ? probaré eso, thx
sigue haciendo lo mismo :
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
el zbuffer esta bien, io tambien pense ke seria de eso, pero esta exactamente igual ke cuando iba bien :
¿has probado lo que yo te he dicho? No has respondido a mi post.
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.
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
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.
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 :
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
;***