D3DXMatrixTranslation

Signaler
Messages postés
295
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
6 décembre 2010
-
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
-
Salut a tous.
Voila je fais un moteur 3d en dx9.
Voici un bout de code,en fait je devrai voir un objet 3d mais je ne vois rien.
L'objet et sa texture se chargent bien mais l'erreur doit venir de la position (camera ou objet ou la perspective).

pour la perspective:
D3DXMatrixPerspectiveFovLH( &matProj,D3DX_PI/4, 1.0f, 1.0f, 100.0f );
g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );


pour placer l'objet:
void PutObject(char* Object,float PosX,float PosY,float PosZ,float LookX,float LookY,float LookZ){


D3DXMatrixTranslation(&matWorld,PosX,PosY,PosZ);// ( &matWorld, timeGetTime()/150.0f );
g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
}

pour la vue:
D3DXMatrixLookAtLH( &matView, &D3DXVECTOR3(0,0,-3 ),
&D3DXVECTOR3(0,0,0),
&D3DXVECTOR3( 0,1,0) );
g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );

/////////////////////////////////////////////////////////////////////////////////////////////////////////////
PutObject(Object1,0,0,5,0,0,0);


// Load the mesh from the specified file
if (FAILED(D3DXLoadMeshFromX(Object1, D3DXMESH_SYSTEMMEM,g_pd3dDevice, NULL,&pD3DXMtrlBuffer, NULL, &g_dwNumMaterials,&g_pMesh )))
{
MessageBox(NULL,"Can't load object",NULL,MB_OK);
}


D3DXMATERIAL* d3dxMaterials = (D3DXMATERIAL*)pD3DXMtrlBuffer->GetBufferPointer();
g_pMeshMaterials = new D3DMATERIAL9[g_dwNumMaterials];
g_pMeshTextures = new LPDIRECT3DTEXTURE9[g_dwNumMaterials];


for(DWORD i=0;i<g_dwNumMaterials;i++){
g_pMeshMaterials[i] = d3dxMaterials[i].MatD3D;
g_pMeshMaterials[i].Ambient = g_pMeshMaterials[i].Diffuse;
g_pMeshTextures[i] = NULL;


if( d3dxMaterials[i].pTextureFilename != NULL && lstrlen(d3dxMaterials[i].pTextureFilename) > 0 )
{
//Créé la texture
if( FAILED(D3DXCreateTextureFromFile(g_pd3dDevice,Object2, &g_pMeshTextures[i]) ) )
{
MessageBox(NULL,"Can't load texture",NULL,MB_OK);
}
}


}
// Done with the material buffer
pD3DXMtrlBuffer->Release();
D3DXMatrixIdentity(&matWorld);
}

La fonction putobject est cencé poser l'objet 3d au coordonnees 0,0,5 mais rien ne s'affiche.
Si une personne s'y connais Merci.

3 réponses

Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
1
Sans analyser dans les détails ton code, affiche les faces cachées avec
SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE) au cas ou tu sois à
l'interieur de l'objet, modifie l'orientation de la caméra pour
chercher dans toutes les directions (avec des sinf(timeGetTime()*0.01f
par exemple).

Met un fond différent du noir car une faces dont la texture n'a pas été trouvée est affichée en noir.

Si tu ne vois toujours rien, c'est que ton problème vient des matrices.
Messages postés
295
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
6 décembre 2010

Salut.
Non toujour rien.La texture a bien été trouvé j'ai mis un message d'erreur au cas ou.


Mais l'objet 3d ne s'affiche toujour pas. :(
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
1
Passe le code c'est plus simple car le problème ne semble pas venir de
cette portion: tes matrices sont justes. Il y a plein de paramètres que
tu as peut-être mal modifié, des flags non appropriés pour initialiser
le backbuffer ou les textures.

Met un fond différent du noir quand même car directX ne rale pas
forcement (dépend de l'erreur reçue) si la texture n'a pas trouvé de
source. Lequel cas il la met à 0x00000000. Elle s'affichera en noir.