Code: Alles auswählen
1 1 1
1 1 1
1 1 1
In der 3D Programmierung werden dadurch Transformationen an Objekten durchgeführt, heißt man speichert die Tarnsformation in eine Matrix und wendet die Matrix dann auf das Objekt an.
Ein Vector ist im Grundegenommen eine Positionsmarke(x,y,z). Mit Vectoren werden aber alles Mögliche gesteuert, z.B KAmera ausrichtung...
Hier mal ein Paar code snippets eines mit DirectX von mir programmierten Ego-Shooters(ist noch in der Entwicklung):
Code: Alles auswählen
float kamera::kamera_schwenken(float seit, float hoch)
{
D3DXVECTOR3 blick, norm;
D3DXMATRIX dreh;
blick = da_gucke_ich_hin - hier_bin_ich;
D3DXVec3Normalize(&blick, &blick);
if(blick.x*blick.x + blick.z*blick.z < 0.005)
{
if(((blick.y > 0) && (hoch > 0)) || ((blick.y < 0) && (hoch < 0))) hoch=0;
}
D3DXVec3Cross(&norm, &blick, &D3DXVECTOR3(0,1,0));
D3DXMatrixRotationAxis(&dreh, &norm, hoch);
D3DXVec3TransformNormal(&blick, &blick, &dreh);
D3DXMatrixRotationY(&dreh, seit);
D3DXVec3TransformNormal(&blick, &blick, &dreh);
da_gucke_ich_hin = hier_bin_ich + blick;
return seit;
}
Code: Alles auswählen
int z=0, s=0;
D3DXMATRIX world;
D3DXMATRIX view;
D3DXMATRIX player3, player2;
D3DXMATRIX view2;
// player.punkt1=D3DXVECTOR2(player_position.x+10,player_position.z+5);
// player.punkt2=D3DXVECTOR2(player_position.x-10,player_position.z-5);
//D3DXVECTOR3 kamera2 = D3DXVECTOR3(da_gucke_ich_hin.x+10, da_gucke_ich_hin.y, da_gucke_ich_hin.z);
mein_timer.start();
mein_directx.device->Clear(0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(128,255,255),1.0f, 0);
mein_directx.device->BeginScene();
//
//Kamera Setzen
//
D3DXMatrixLookAtLH( &view, &meine_kamera.hier_bin_ich, &meine_kamera.da_gucke_ich_hin, &D3DXVECTOR3(0.0f, 1.0f,0.0f));
meine_map.map_objekt.draw();
//
//Player Spwanen
//
//D3DXMatrixTranslation(&world2, w_x,w_y, w_z);
D3DXMatrixTranslation(&player3, mein_player.pos.x, mein_player.pos.y, mein_player.pos.z);
D3DXMatrixRotationY( &player2 , mein_player.player_rotation_y);
D3DXMatrixMultiply(&player3, &player2, &player3);
mein_directx.device->SetTransform(D3DTS_WORLD, &player3);
mein_player.player_objekt.draw();
Aber bevor du auhc nur ein Bisschen DirectX oder OpenGL Programmieren kannst, musst du C++ beherschen.
Und noch ein Buch Tipp: Spieleprogrammieren mit C++ und DirectX von Dr. Ulrich Kaiser und Phillip Lensing.
Und damit du mit C++ nicht zu kurz kommst: C++ von A bis Z von Jürgen Wolf.