PDA

View Full Version : Telecamera videogame direct3d


okay
15-12-2003, 20:57
Sto implementando un motore grafico al fine di poter sviluppare un video game, tool utilizzato vc6 directx8.1 e directd3d......

Praticamente ho messo, per adesso due oggetti:
1. un cubo
2. il terreno

domanda:

a. è giusto come sto facendo.............. ovvero adoperare le due telecamere , una del cubo e una del terreno........

questa è del cubo:

D3DXMatrixLookAtLH(&view_matrix,&D3DXVECTOR3(CuboVista1, CuboVista2, CuboVista3), &D3DXVECTOR3(CuboVista4, CuboVista5, CuboVista6),&D3DXVECTOR3(CuboVista7, CuboVista8, CuboVista9));
g_pDevice->SetTransform(D3DTS_VIEW,&view_matrix);

D3DXMatrixPerspectiveFovLH(&matProj,
D3DX_PI/4,
1.33f,//g_D3DSettings.m_fScreenAspect
1.0f,
2000.0f );
g_pDevice->SetTransform( D3DTS_PROJECTION, &matProj);


e questa è del terreno:

D3DXMatrixLookAtLH(&view_matrix2,&D3DXVECTOR3(TerrenoVista_11, TerrenoVista_22,TerrenoVista_33),&D3DXVECTOR3(TerrenoVista_44, TerrenoVista_55, TerrenoVista_66),
&D3DXVECTOR3(TerrenoVista_77, TerrenoVista_88, TerrenoVista_99));
g_pDevice->SetTransform(D3DTS_VIEW,&view_matrix2);

D3DXMatrixPerspectiveFovLH(&matProj2, D3DX_PI/4, 1.33f, 1.0f, 2000.0f);
g_pDevice->SetTransform(D3DTS_PROJECTION, &matProj2);

.........oppure si deve adoperare una sola telecamera???

comunque devo dire che, due telecamere (una per il cubo e una per il terreno), come ho fatto io, per adesso vanno bene.......
................................

b. Vorrei sapere come gestire le collisioni (se non erro.....)
ovvero il mio terreno ha delle montagne, spostandomi col tasto freccia UP, vado incontro alle montagne, ecco vorrei sapere, come fare per controllare di non entrare nei poligoni della montagna ma vorrei sapere cosa prendere in considerazione per far in modo di rimanere con la vista sempre al di fuori dei poligoni, in pratica scalare il terreno, camminarci sopra e non entrare in esso.........................

come variabili ho queste per un vostro un riferimento:

for(i = 0; i < m_dwNumOfVertices; i++)
{
vNormal.x = pSumVertexNormal[i].x / pNumOfSharedPolygons[i];
vNormal.y = pSumVertexNormal[i].y / pNumOfSharedPolygons[i];
vNormal.z = pSumVertexNormal[i].z / pNumOfSharedPolygons[i];

D3DXVec3Normalize(&vNormal, &vNormal);

pcvVertices[i].nx = vNormal.x;
pcvVertices[i].ny = vNormal.y;
pcvVertices[i].nz = vNormal.z;

grazie e spero di essere stato un pò chiaro

........... lo sò devo studiare un pò di geometria, infattoi i tutorial parlano di normale ecc,ecc, ma non riesco a fare l'algoritmo proprio perchè sono a corto di esperienza!!!!!!!!!

_Xel_^^
16-12-2003, 11:15
Uhm... se sei alle prime armi studiati assolutamente i tutorial ;)
Altrimenti non vai da nessuna parte... lo so per esperienza perchè sto lavorando a un motore 3d come tesi, in OpenGL però... ma i concetti sono gli stessi...

Comincia a capire la telecamera... poi gestisci bene i movimenti... poi fai qualcosa con gli oggetti... quando ha un mondo navigabile abbastanza solido puoi buttarci dentro texture, collision detection e chi più ne ha più ne metta :D

Un consiglio... gestisci tutto tramite classi... altrimenti quello che ti ritrovi difficilmente riuscirai a gestirlo una volta che diventerà GROSSO... e ti assicuro che diventa GROSSO un motore 3d :D ;)


Ciau!