Matrizen (aus Soufians Uservorstellung entfernt)
Verfasst: Di Jan 20, 2009 5:00 pm
So, eine Matrice(Matrix) ist eine 3x3 (X x X) Feld, also zB. sowas:
Damit kann man dann verschiedene Rechenungen Durchführen(*,/,+,-).
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):
Damit wird die Kamera geschwenkt.
Und das ist der anfagngsteil meiner render() funktion.
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.
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.