| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen | 
	
	
		| Autor | Nachricht | 
	
		| Jonathan_Klein Living Legend
 
  
 Alter: 38
 Anmeldedatum: 17.02.2003
 Beiträge: 3433
 Wohnort: Siegerland
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 24.07.2004, 15:06    Titel: Kameradrehung |   |  
				| 
 |  
				| 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 |  | 
	
		|  | 
	
		| The Lord of Programming Living Legend
 
  
 Alter: 38
 Anmeldedatum: 14.03.2003
 Beiträge: 3122
 
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 24.07.2004, 20:24    Titel: |   |  
				| 
 |  
				| 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 |  | 
	
		|  | 
	
		| Jonathan_Klein Living Legend
 
  
 Alter: 38
 Anmeldedatum: 17.02.2003
 Beiträge: 3433
 Wohnort: Siegerland
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 24.07.2004, 22:07    Titel: |   |  
				| 
 |  
				| 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 |  | 
	
		|  | 
	
		| Jonathan_Klein Living Legend
 
  
 Alter: 38
 Anmeldedatum: 17.02.2003
 Beiträge: 3433
 Wohnort: Siegerland
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 25.07.2004, 10:48    Titel: |   |  
				| 
 |  
				| 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 |  | 
	
		|  | 
	
		| The Lord of Programming Living Legend
 
  
 Alter: 38
 Anmeldedatum: 14.03.2003
 Beiträge: 3122
 
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 26.07.2004, 11:52    Titel: |   |  
				| 
 |  
				| 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 |  | 
	
		|  | 
	
		| Chewie Super JLI'ler
 
 
 
 Anmeldedatum: 17.07.2003
 Beiträge: 382
 
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 27.07.2004, 15:08    Titel: |   |  
				| 
 |  
				| 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 |  | 
	
		|  | 
	
		| Jonathan_Klein Living Legend
 
  
 Alter: 38
 Anmeldedatum: 17.02.2003
 Beiträge: 3433
 Wohnort: Siegerland
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 27.07.2004, 15:24    Titel: |   |  
				| 
 |  
				| ok, Problem ghat sich gelöst. Ich hatte in der Formle ien "+" vergessen. Nun geht es. _________________
 https://jonathank.de/games/
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Chewie Super JLI'ler
 
 
 
 Anmeldedatum: 17.07.2003
 Beiträge: 382
 
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 27.07.2004, 15:40    Titel: |   |  
				| 
 |  
				| 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 |  | 
	
		|  | 
	
		| Jonathan_Klein Living Legend
 
  
 Alter: 38
 Anmeldedatum: 17.02.2003
 Beiträge: 3433
 Wohnort: Siegerland
 Medaillen: Keine
 
 
 | 
			
				|  Verfasst am: 27.07.2004, 15:43    Titel: |   |  
				| 
 |  
				| meine natürlich: 
    	  | 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 |  | 
	
		|  | 
	
		|  |