JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=4cc16eaf653d75b3318e102bdc5e6837Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Ausrichtung durch Richtungsvektoren

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 19.04.2004, 16:03    Titel: Ausrichtung durch Richtungsvektoren Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 19.04.2004, 16:20    Titel: Antworten mit Zitat

Was geht denn daran nicht? Ich denke nicht, dass deine Matrix da eine gültige Ausrichtung ist...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 19.04.2004, 16:40    Titel: Antworten mit Zitat

problem gelöst, die letzte stelle in der matrix muß natürlich eine 1 sein... Rolling Eyes

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
Benutzer-Profile anzeigen Private Nachricht senden
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 19.04.2004, 16:44    Titel: Antworten mit Zitat

Verstehe ich nicht, machen das die D3DXMatrixTranslation(), D3DXMatrixRotation() usw. nicht genau das was du willst?

C.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 20.04.2004, 00:40    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
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

Impressum