Hallo,
also es geht um folgendes. ich wollte mal das billboarding probieren, weil es irgendwie nicht schwierig zu sein schien, aber ich krigs irgendwie ned hin
für die,die es nicht kennen:
es geht darum, dass ein 2D objekt 3D wirkt, indem es immer zur kamera schaut. beispielsweise, wenn man 2D personen zeichnet und die immer dem spieler anschauen, wirkt es so, als wären die personen 3D.
funktionieren sollte es damit, dass man die negativen x,y,z-rotationswerte der viewmatrix hernimmt und sie für die worldmatrix einsetzt. eine zweite variante wäre die viewmatrix zu invertieren (transpose) und dann nur noch die translationsmatrix für die worldmatrix setzen.
beide varianten funktionieren bei mir nicht und ich frag mich wieso
hier mal meine "ansätze":
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
// fCAMangleX,Y,Z sind die x,y,z koordinaten des viewpoints der viewmatrix
D3DXMatrixLookAtLH(&matView, &D3DXVECTOR3(fCAMangleX, fCAMangleY, fCAMangleZ),
&D3DXVECTOR3(0.0f, 0.0f, 0.0f),
&D3DXVECTOR3(0.0f, 1.0f, 0.0f));
// ...
// Create world matrix
D3DXMatrixIdentity(&matWorld);
g_pD3DDevice->GetTransform(D3DTS_VIEW, &matView);
D3DXMatrixTranslation(&matTrans, 0.0f, -3.0f, 5.0f);
D3DXMatrixTranspose(&matView, &matView);
D3DXMatrixMultiply(&matWorld, &matView, &matTrans);
g_pD3DDevice->SetTransform(D3DTS_WORLD, &matWorld);
|
bitte um hilfe
mfg
Drac