JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

LootAt eines Objects
Gehe zu Seite 1, 2, 3  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 09.05.2005, 09:04    Titel: LootAt eines Objects Antworten mit Zitat

Wie kann ich den "LookAt" Vektor eines Objects raus bekommen? Zweck wäre zum Beispiel eine Verfolgerkamera, der ich den LookAt Vektor des Objects übergebe um hier die gleiche Blickrichtung zu haben. Hat jemand eine Idee?
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 09.05.2005, 09:11    Titel: Antworten mit Zitat

Noralerweise hat jedes Objekt einen Vektor, der praktisch nach vorne zeigt, meistens die Z-Achse (oder negative z-Achse, das kommt halt darauf an, wie das objekt gemodelt wurde). Diesen Vektor musst du einfach mit der Rotationsmatrix des objekts multiplizieren. schon hast du den aktuellen look at vektor.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 09.05.2005, 09:14    Titel: Antworten mit Zitat

Ja, aber wie komme ich an diese Info? Es handelt sich in meinem aktuellen fall um ein x-File. Ich hatte schon überlegt der ganzen geschichte neue Richtungsvektoren zu geben und darüber die Rotation zu steuern?!
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 09.05.2005, 09:54    Titel: Antworten mit Zitat

Pack die X-File einfach in deine Szene und schau wohin sie guckt (bastel dir am besten ein koordinaten system in die mitte der szene). guckt sie entlang der positiven zachse, musst du de Vektor ( 0, 0, 1 ) mit der rotations matrix des objekt multiplizieren (die matrix solltest du ja haben).
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 09.05.2005, 11:51    Titel: Antworten mit Zitat

Mit anderen Worten: File laden, ausrichten und ein "eigenes" Koordinatensystem für die Rotation schaffen, hab ich das so richtig verstanden?
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 09.05.2005, 13:19    Titel: Antworten mit Zitat

du musst eigentlich nur wissen, wo "vorne" bei deinem objekt ist. das könntest du auch in einem editor ala milkshape machen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 09.05.2005, 14:01    Titel: Antworten mit Zitat

Ist die Ausrichtung nicht immer Gleich? Hängt doch nur davon ab ob du im Modelleditor deine Figur anständig gedreht hast.

Die Winkel sollten Yaw=0, Pitch=0, Roll=0 sein
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 09.05.2005, 19:28    Titel: Antworten mit Zitat

Also irgendwie krieg ich die Drehung bei einer Verfolgerkamera nicht hin.

Ich habe folgendes gemacht. Meiner Kamera hab ich einen Platz hinter dem Mesh verpasst mit dem gleichen LookAt wie es das X-file hat (0.0f,0.0f,1.0f). Bewege ich das Mesh vor und zurück kein Problem, läuft.

Wenn ich das Mesh aber drehe klappt nichts. Ich habe mir gedacht, das ich meinen LookAt der Kamera einfach mit der Rotationsmatrix des Meshes multipliziere. Habe dafür die DXFunktion
Code:
D3DXVec3TransformCoord(pVecOut,pVecIn,pMatMultiply);
benutzt.

Wenn ich jetzt das Mesh drehe passiert quasi nichts... die Werte verändern sich zwar, aber die Blickrichtung nicht?!

Meine Update funktion der Camera sieht so aus:
Code:

void CECamera::UpdateCamera(void)
{
   // neue Matrix für die Kamera berechnen
   D3DXMatrixLookAtLH(&m_Camera.m_matView, &m_Camera.m_vPosition,&m_Camera.m_vLookAt,&m_Camera.m_vUp);
   
    // und an Direct3D übergeben
   CEInit::ReturnDevice()->SetTransform(D3DTS_VIEW,&m_Camera.m_matView);

}


Woran könnte es wohl scheitern?
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
HomeLess_PunkDrummer
JLI Master Trainee


Alter: 36
Anmeldedatum: 28.11.2004
Beiträge: 583
Wohnort: Alter Joghurtbecher an der A4
Medaillen: Keine

BeitragVerfasst am: 11.05.2005, 12:56    Titel: Antworten mit Zitat

Third Person? Tu als LookAt den Positionsvektor des verfolgten Objekts tuen. Und als Position der Cam hast du
Vector3(-sin(ModelRotationY), -cos(ModelRotationY), CamHeight),
oder
Vector3(-sin(ModelRotationY)*cos(ViewRotationX)*Distance, -cos(ModelRotationY)*Sin(ViewRotationX)*Distance, sin(ViewRotationX)*Distance);

So hab ichs zumindest...
_________________
"Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 11.05.2005, 13:36    Titel: Antworten mit Zitat

Das hört sich gut an, werd ich nachher gleich testen.

Dank dir...
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 12.05.2005, 21:21    Titel: Antworten mit Zitat

Ich hatte auch ne Zeit lang gebraucht, um da wat zu finden. Aber im grunde genommen ist es gar nicht so schwer:

Man übergibt ja für die Viewmatrix der Kamera "Position" "LookAt" "WorldUp".

Für die Innenansicht:
"Position" entspricht Position des Objektes
"LookAt" entspricht dem Z-Rotationvektor
"WorldUp"entspricht dem Y-Rotationvektor

Klar was mit Rotationsvektoren gemeint sind??

Für die Außenansicht:
Da muss man nur Position des Vektors mit einem weiteren Vektor addieren, der den Vektor zwischen Objekt und Kamera repräsentiert.


Also etwa so:

Code:

   m_Zoom=D3DXVECTOR3(0,5,10);
   m_Position=Objekt.m_vPosition+m_Zoom;
   m_LookAt=Objekt.RotationVektorZ;
   m_WorldUp=Objekt.RotationVektorY;

//Anschließend wie gewohnt die 3 letzten Vektoren in Viewmatrix umwandeln

_________________
Kein Rückzug! Kein Aufgeben!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 13.05.2005, 08:04    Titel: Antworten mit Zitat

Hallo LeeDiGer,

erstmal danke für deine Antwort.

Wie hast du das in deiner Object-Klasse gelöst? Hast du dort bei der Initialisierung des Objects Richtungsvektoren vergeben, über die du die Rotation machst?
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 13.05.2005, 11:43    Titel: Antworten mit Zitat

Also wenn du wissen willst, wie ich an die 3 Rotationsvektoren rankomm, dann musse das etwa so machen:

Code:

     // Rotationsmatrizen anlegen
    D3DXMatrixRotationX(&RotationMatrixX,m_vRotation.x);
    D3DXMatrixRotationY(&RotationMatrixY,m_vRotation.y);
    D3DXMatrixRotationZ(&RotationMatrixZ,m_vRotation.z);

     // und miteinander multiplizieren
    D3DXMatrixMultiply(&RotationMatrix,&RotationMatrixX,&RotationMatrix);
    D3DXMatrixMultiply(&RotationMatrix,&RotationMatrixY,&RotationMatrix);
    D3DXMatrixMultiply(&RotationMatrix,&RotationMatrixZ,&RotationMatrix);
   

   // Rotationsachsen aus Rotationsmatrix in Vektoren umrechnen
    RotationVektorX.x = RotationMatrix._11;
   RotationVektorX.y = RotationMatrix._12;
   RotationVektorX.z = RotationMatrix._13;

   RotationVektorY.x = RotationMatrix._21;
   RotationVektorY.y = RotationMatrix._22;
   RotationVektorY.z = RotationMatrix._23;

   RotationVektorZ.x = RotationMatrix._31;
   RotationVektorZ.y = RotationMatrix._32;
   RotationVektorZ.z = RotationMatrix._33;


Bevor du für jedes Frame diese Berechnung durchführst, brauchst die folgende Standardwerte:

Code:

    //Standardwerte initialisieren
   D3DXMatrixIdentity(&RotationMatrix);
   RotationVektorX=D3DXVECTOR3(1,0,0);
   RotationVektorY=D3DXVECTOR3(0,1,0);
    RotationVektorZ=D3DXVECTOR3(0,0,1);

_________________
Kein Rückzug! Kein Aufgeben!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
HomeLess_PunkDrummer
JLI Master Trainee


Alter: 36
Anmeldedatum: 28.11.2004
Beiträge: 583
Wohnort: Alter Joghurtbecher an der A4
Medaillen: Keine

BeitragVerfasst am: 13.05.2005, 15:26    Titel: Antworten mit Zitat

Es reichen doch drei Winkel oder ein Quaternion...?
_________________
"Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 13.05.2005, 16:18    Titel: Antworten mit Zitat

Wie meinst du das genau mit den 3 Winkeln?
_________________
Kein Rückzug! Kein Aufgeben!
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
Gehe zu Seite 1, 2, 3  Weiter
Seite 1 von 3

 
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