JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

hallo allerseits

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Gast









BeitragVerfasst am: 07.11.2002, 18:47    Titel: hallo allerseits Antworten mit Zitat

hi!

Ich habe mich am kapitel 24 versucht, in der Hoffnung, bei
Code:
D3DMatrixLookAtLH(&ViewMatrix,
                             &D3DVECTOR3(...),
                             &D3DVECTOR3(...),
                             &D3DVECTOR3(...));

den zweiten VECTOR so zu verändern, dass ich mit den Links-/Rechts-
Pfeiltasten die Blickrichtung ändern kann. Mein Code bei Render() sieht also folgendermaßen aus:
Code:
 D3DXMATRIX ViewMatrix;
    // Kamera verschieben
    D3DXMatrixLookAtLH(&ViewMatrix,
                       &D3DXVECTOR3( 0.0f,  0.0f,  -10.0f),
                       &D3DXVECTOR3( 0.0f,  0.0f,  0.0f),
                       &D3DXVECTOR3( 0.0f,  1.0f,  0.0f));

    D3DXMATRIX TransView;
    D3DXMATRIX ChangeView;

    D3DXMatrixTranslation(&TransView,0.0f,CameraY,CameraZ);
    D3DXMatrixTranslation(&ChangeView,CameraX,0.0f,0.0f);

    D3DXMatrixMultiply(&ViewMatrix,&ChangeView,&TransView);

    lpD3DDevice->SetTransform(D3DTS_VIEW,&ViewMatrix);


Leider funzt 's net. Kann mir jemand weiterhelfen? Sad
Nach oben
Jörg
JLI MVP
JLI MVP



Anmeldedatum: 19.07.2002
Beiträge: 182
Wohnort: Siegen/NRW
Medaillen: Keine

BeitragVerfasst am: 07.11.2002, 21:03    Titel: Antworten mit Zitat

Probier mal so:
Code:

    D3DXMATRIX ViewMatrix;
    // Kamera verschieben
    D3DXMatrixLookAtLH(&ViewMatrix,
                       &D3DXVECTOR3( 0.0f,  0.0f,  -10.0f),
                       &D3DXVECTOR3( 0.0f,  0.0f,  0.0f),
                       &D3DXVECTOR3( 0.0f,  1.0f,  0.0f));

    D3DXMATRIX TransView;

    D3DXMatrixTranslation(&TransView,CameraX,CameraY,CameraZ);

    D3DXMatrixMultiply(&ViewMatrix,&ViewMatrix,&TransView);

    lpD3DDevice->SetTransform(D3DTS_VIEW,&ViewMatrix);

In deinem Code wird die ViewMatrix nämlich komplett überschrieben, anstatt nur transformiert zu werden.
_________________
www.messiahzone.de.vu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Gast









BeitragVerfasst am: 09.11.2002, 15:49    Titel: THX! aber... Antworten mit Zitat

Danke! Aber so war des ja auch auf der CD. Ich wollt aber versuchen den zweiten D3DVECTOR3(...) zu ändern, sodass ich die BLICKRICHTUNG der Kamera ändern kann. Deshalb ja auch
Code:
 D3DXMATRIX ChangeMatrix;

ciao!
Nach oben
Jörg
JLI MVP
JLI MVP



Anmeldedatum: 19.07.2002
Beiträge: 182
Wohnort: Siegen/NRW
Medaillen: Keine

BeitragVerfasst am: 09.11.2002, 17:40    Titel: Antworten mit Zitat

meinst du mit Blickrichtung, dass du die Kamera auch drehen willst, oder wie muss ich das verstehen?
_________________
www.messiahzone.de.vu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
under_construction
Junior JLI'ler


Alter: 35
Anmeldedatum: 12.11.2002
Beiträge: 52

Medaillen: Keine

BeitragVerfasst am: 12.11.2002, 16:45    Titel: RE: Blickrichtung Antworten mit Zitat

JA! Ganz genau so meint ich des. Das man also mit der Kamera in verschiedene Richtungen gucken kann und net nur Schritte nach links und rechts machen kann
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jörg
JLI MVP
JLI MVP



Anmeldedatum: 19.07.2002
Beiträge: 182
Wohnort: Siegen/NRW
Medaillen: Keine

BeitragVerfasst am: 12.11.2002, 18:03    Titel: Antworten mit Zitat

Das kannst du z.B. machen, indem du die ViewMatrix hinterher einfach mit einer Rotationsmatrix multiplizierst, die du mit D3DXMatrixRotationYawPitchRoll() erstellen kannst. Um dich dann noch Egoshooter-mäßig zu bewegen musst du noch den Bewegungsvektor an die Rotation anpassen.

Pseudocode:
Code:

//am anfang einmal ViewMatrix und Rotation initialisieren
    D3DXMatrixLookAtLH(&InitViewMatrix,
                       &D3DXVECTOR3( 0.0f,  0.0f,  -10.0f),
                       &D3DXVECTOR3( 0.0f,  0.0f,  0.0f),
                       &D3DXVECTOR3( 0.0f,  1.0f,  0.0f));
    D3DXMATRIX ViewMatrix=InitViewMatrix;
    float fYaw=0.0f; //rotation um y-achse
    float fPitch=0.0f; //rotation um x-achse
    float fRoll=0.0f; //rotation um z-achse
    D3DXMATRIX matRot;
    D3DXMatrixIdentity(&matRot);
    D3DXVECTOR3 vPos=D3DXVECTOR3(0,0,0); //position der kamera

//in jedem frame:
    ViewMatrix=InitViewMatrix * matRot;
    ViewMatrix._41=vPos.x;  //position
    ViewMatrix._42=vPos.y;
    ViewMatrix._43=vPos.z;

    d3dDevice->SetTransform(D3DTS_VIEW,&ViewMatrix);

Die Funktion, die deine Camera Rotiert:
Code:

void RotateCam(float x, float y, float z)
{
    fYaw+=y;
    fPitch+=x;
    fRoll+=z;
    D3DXMatrixRotationYawPitchRoll(&matRot,fYaw,fPitch,fRoll);
}

Die Funktion, die deine Camera bewegt, sollte in etwa so aussehen:
Code:

void MoveCamera(D3DXVECTOR3 vMove)
{
    D3DXMatrixInverse(&matRot,NULL,&matRot);  //du musst (glaube ich) die inverse Rotationsmatrix nehmen
    D3DXVec3TransformCoord(&vMore,&matRot); //bewegung an rotation anpassen
    D3DXMatrixInverse(&matRot,NULL,&matRot);

    vPos+=vMove;  //position anpassen
}


Ich habe den code nicht getestet, die Benutzung geschieht daher auf eigene Gefahr. Wink
_________________
www.messiahzone.de.vu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik 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