JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Kameradrehung

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 24.07.2004, 15:06    Titel: Kameradrehung Antworten mit Zitat

Nein ich bin nicht blöd und hab auch schon ein bischen Ahnung von 3D.
Ich möchte jetzt einen Kameraschwenk einbauen. Ich hab eine LookAt und die Kameraposition. Iwe kann ich die Kamera jetzt um eine gewisse Grahtzahl drehen? Also den LookAt um die Kameraposition drehen?
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 24.07.2004, 20:24    Titel: Antworten mit Zitat

Ist LookAt nicht dieser Vektor, den du am Anfang bei der Initialisierung übergibst?

Kannst du den nicht einfach ändern? Dann sollte man mit Sinus/Kosinus/Tangenz den Winkel berechnen können.

PS: Hast du nicht das Buch? Da steht das eigentlich alles beschrieben. AFAIK geht das auch mit einfacher Grad-Angabe. Wie wenn du ein normales Objekt drehst, erstellst du da eben eine Matrix.
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 24.07.2004, 22:07    Titel: Antworten mit Zitat

naja, eine einfache Drehung hab ich ja auch schon gehabt.. Da hatte ich die Kameraposition und die position wo die hinschaut hab ich per Sinus und Cosinus berechnet. Nur jetzt hab ich schon beide Punkte, und muss also den einen um den anderen drehen. Aber ich schau noch mal genauer nach.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 25.07.2004, 10:48    Titel: Antworten mit Zitat

Ok ich hab also eine Formel gefunden:
Code:

   NewVector.x=(NewVector.x * cosf(m_fIntroCounter))+(NewVector.z(-sinf(m_fIntroCounter)));

Fehler: Ausdruck ergibt keine Funktion

NewVector ist eine Klasse mit 3 floats für einen Vector. m_fIntroCounter gibt den Winkel an der sich ahlt immer mal wieder verändert.
Aber was ist daran den jetzt falsch? Ich hab die Formle sehr gewissenhaft in Quelltext umgesetzt.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 26.07.2004, 11:52    Titel: Antworten mit Zitat

Hast du auch die nötigen Header eingebunden?
Wenn mich nicht alles täuscht, muss man für sin, cos und tan den Header <math> einbinden.
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 27.07.2004, 15:08    Titel: Antworten mit Zitat

ich hab mir damals diese funktion gebastelt:
Code:

MLE_API void mleRotateVecAroundPoint(D3DXVECTOR3 vRotPoint, D3DXVECTOR3* vDestPoint, float fAngle, float fOnX, float fOnY, float fOnZ)
{
   D3DXVECTOR3 vNewPos;

   // richtungsvektor der beiden punkte bestimmen
   D3DXVECTOR3 vTemp;
   vTemp.x = vDestPoint->x - vRotPoint.x;
   vTemp.y = vDestPoint->y - vRotPoint.y;
   vTemp.z = vDestPoint->z - vRotPoint.z;
   
   float fCosTheta = cosf(fAngle * MLE_TORAD);
   float fSinTheta = sinf(fAngle * MLE_TORAD);

   vNewPos.x  = (fCosTheta + (1 - fCosTheta) * fOnX * fOnX) * vTemp.x;
   vNewPos.x += ((1 - fCosTheta) * fOnX * fOnY - fOnZ * fSinTheta) * vTemp.y;
   vNewPos.x += ((1 - fCosTheta) * fOnX * fOnZ + fOnY * fSinTheta) * vTemp.z;
   
   vNewPos.y  = ((1 - fCosTheta) * fOnX * fOnY + fOnZ * fSinTheta) * vTemp.x;
   vNewPos.y += (fCosTheta + (1 - fCosTheta) * fOnY * fOnY) * vTemp.y;
   vNewPos.y += ((1 - fCosTheta) * fOnY * fOnZ - fOnX * fSinTheta) * vTemp.z;

   vNewPos.z  = ((1 - fCosTheta) * fOnX * fOnZ - fOnY * fSinTheta) * vTemp.x;
   vNewPos.z += ((1 - fCosTheta) * fOnY * fOnZ + fOnX * fSinTheta) * vTemp.y;
   vNewPos.z += (fCosTheta + (1 - fCosTheta) * fOnZ * fOnZ) * vTemp.z;

   vDestPoint->x = vRotPoint.x + vNewPos.x;
   vDestPoint->y = vRotPoint.y + vNewPos.y;
   vDestPoint->z = vRotPoint.z + vNewPos.z;
}

über die floats wird entschieden um welche achse gedreht wird...entweder 0.0 oder 1.0 übergeben.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 27.07.2004, 15:24    Titel: Antworten mit Zitat

ok, Problem ghat sich gelöst. Ich hatte in der Formle ien "+" vergessen. Nun geht es.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 27.07.2004, 15:40    Titel: Antworten mit Zitat

kannst ja dann auch mal deine funktion posten wenn sie fertig ist. dann können wir mal vergleichen und schauen welche besser ist (in bezug auf performance, ...). würd mich interessieren.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 27.07.2004, 15:43    Titel: Antworten mit Zitat

meine natürlich:
Laughing
Code:

Vector3 NewVector=LookAt-CameraPosition;//Richtungvektor errechnen
   //den Richtugnsvektor drehen
   float fFactor=3.5f;
   NewVector.x=(NewVector.x * cosf(m_fIntroCounter/fFactor*D3DX_PI))+(NewVector.z*(-sinf(m_fIntroCounter/fFactor*D3DX_PI)));
   NewVector.z=(NewVector.x*sinf(m_fIntroCounter/fFactor*D3DX_PI))+(NewVector.z*cosf(m_fIntroCounter/fFactor*D3DX_PI));
   
   LookAt=NewVector+CameraPosition;//Und den neuen LookAt mit dem Richtungsvekzotr bestimmen

_________________
https://jonathank.de/games/
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 -> 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