|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Chewie Super JLI'ler
Anmeldedatum: 17.07.2003 Beiträge: 382
Medaillen: Keine
|
Verfasst am: 19.04.2004, 16:03 Titel: Ausrichtung durch Richtungsvektoren |
|
|
ich will die ausrichtung eines meshes mit 3 richtungsvektoren definieren. beim rotieren werden dann nur die richtungsvektoren gedreht und in eine matrix gepackt. ich hab in einem buch ein beispiel für genau das, aber irgendwie geht das nicht:
Code: |
// so sollte die matrix aus den richtungsvektoren ausschauen
MATRIX matrixFromAxes(vX, vY, vZ)
{
return MATRIX(vX.x, vX.y, vX.z, 0,
vY.x, vY.y, vY.z, 0,
vZ.x, vZ.y, vZ.z, 0,
0,0,0,0);
}
void Move()
{
vPos = VEC(0, 0, 0);
vOrientX = VEC(1, 0, 0);
vOrientY = VEC(0, 1, 0);
vOrientZ = VEC(0, 0, 1);
MATRIX matPos, matRot;
matPos = D3DXmatrixpos(vPos);
matRot = matrixFromAxes(vOrientX, ...);
finalMat = matRot * matPos;
}
|
jo, so sollte das eigentlich funken, tuts aber nicht...weiß jemand, wie man das macht, oder was da falsch ist? thx. |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 19.04.2004, 16:20 Titel: |
|
|
Was geht denn daran nicht? Ich denke nicht, dass deine Matrix da eine gültige Ausrichtung ist... |
|
Nach oben |
|
|
Chewie Super JLI'ler
Anmeldedatum: 17.07.2003 Beiträge: 382
Medaillen: Keine
|
Verfasst am: 19.04.2004, 16:40 Titel: |
|
|
problem gelöst, die letzte stelle in der matrix muß natürlich eine 1 sein...
hazel:
doch, das geht (jetzt) und is super-praktisch. einfach ein lokales koordinatensystem fürs mesh definieren, welches die ausrichtung angibt, noch schnell die vektoren normalisieren, in die matrix packen und fertig is die rotationsmatrix. |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 19.04.2004, 16:44 Titel: |
|
|
Verstehe ich nicht, machen das die D3DXMatrixTranslation(), D3DXMatrixRotation() usw. nicht genau das was du willst?
C. |
|
Nach oben |
|
|
Chewie Super JLI'ler
Anmeldedatum: 17.07.2003 Beiträge: 382
Medaillen: Keine
|
Verfasst am: 20.04.2004, 00:40 Titel: |
|
|
D3DXMatrixTranslation() verwende ich eh, nur wenn man die herkömmliche variante mit floats für die rotation auf den achsen und dann D3DXMatrixRotationIrgendwas() hernimmt, hat man ja immer nen haufen probleme: sehr oft sin/cos, bei 180 grad umkehr, etc. und vorallem, dass man immer nur in einer bestimmten reihenfolge rotieren kann.
wenn ich das mit einem lokalen koordinatensystem mache, kann ich jederzeit um eine beliebige achse relativ drehen, und zwar immer um die lokalen rotationsachsen..ausserdem find ichs einfach angenehmer, man hat immer die ausrichtung optimal definiert, nicht irgendwie durch ein paar gradangaben....wenn ich z.B. einen punkt genau vor dem objekt haben will, kann ich einfach die lokale x-achse verfolgen, egal wie das objekt im raum 'hängt'. |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|