Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

FSA

Community-Fossil

  • »FSA« ist der Autor dieses Themas
  • Private Nachricht senden

11

06.06.2012, 14:54

Leider ist das Problem noch nicht behoben :( Wenn ich auf der X/Z Achse in den positiven Bereich mit der Kamera gehe, dann dreht sie sich einfach wo anders hin und ist ungefähr 30° zu weit nach rechts gedreht. Woran kann das liegen?

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

12

06.06.2012, 14:56

Vermutlich stimmt was mit deiner Berechnung nicht :P

FSA

Community-Fossil

  • »FSA« ist der Autor dieses Themas
  • Private Nachricht senden

13

06.06.2012, 16:43

^^ So 'ne Idee hatte ich auch schon :D Ich weiß aber nicht was. Kann es auch daran liegen wie ich meine Blickrichtung der Kamera ausrechne? Wenn ja:

C-/C++-Quelltext

1
m_vCameraDir = Vector3( sinf(m_fCameraAngleX) * cosf(m_fCameraAngleY), m_fCameraAngleY, cosf(m_fCameraAngleX) * cosf(m_fCameraAngleY) );

Wenn nein hier nochmal die Rechnung wie ich alles berechne:

C-/C++-Quelltext

1
2
3
4
Vector3 V(0.0f);
V = m_ObjectHandler->GetSelectedObjectPosition() - m_Camera->GetCameraPos();
vRot.x = atan2f(sqrtf(V.x*V.x + V.y*V.y + V.z*V.z),V.z) - m_Camera->GetCameraAngleX();
vRot.y = atan2f(V.y, V.x) - m_Camera->GetCameraAngleY();

Also wenn ihr einen Fehler findet gerne sagen :) Ich habe übrigens schon beides bei vRot.x probiert(acos,atan2)
Grüße

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

14

06.06.2012, 16:54

Also ich weiß nicht genau was deine Winkel da repräsentieren und was für ein Koordinatensystem du verwendest, aber ich würde mal sagen dass beide Berechnungen falsch sind.
Und zwar schonmal aus einem ganz simplen Grund: Der Winkel der Rotation um eine Achse kann doch schon rein logisch betrachtet nicht von Koordinaten entlang dieser Achse abhängig sein ;)

Was genau tut die Länge des gesamten Vektors bei vRot.x? Und Wieso V.y und V.x bei vRot.y?

Abgesehen davon würde ich nicht die alten C Funktionen wie sinf() etc. verwenden, sondern besser <cmath> und std::sin() etc.

FSA

Community-Fossil

  • »FSA« ist der Autor dieses Themas
  • Private Nachricht senden

15

06.06.2012, 17:01

Also laut Wikipedia:
§ \theta = \arccos{\frac{z}{\sqrt{x^2 + y^2 + z^2}}} §
§ \varphi = atan2(y,x) §

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

16

06.06.2012, 17:04

arccos ist aber was anderes als atan2 und schau dir mal an was in dem Wikipedia Artikel für ein Koordinatensystem verwendet wird ;)

Am besten malst du dir das Ganze einfach mal in deinem Koordinatensystem auf, zeichnest die Winkel ein die du haben willst und überlegst dir dann wie du sie ausrechnen kannst.

FSA

Community-Fossil

  • »FSA« ist der Autor dieses Themas
  • Private Nachricht senden

17

06.06.2012, 17:09

Zitat von »"FSA"«


Ich habe übrigens schon beides bei vRot.x probiert(acos,atan2)

Bei Wikipedia wird das kartesische Koordinatensystem benutzt. Genau wie bei mir.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

18

06.06.2012, 17:30

Du solltest besser nachdenken als probieren ;)

Und dass es ein kartesisches Koordinatensystem ist, ist klar. Ich mein eher, welche Achsen dort in welche Richtungen zeigen.

FSA

Community-Fossil

  • »FSA« ist der Autor dieses Themas
  • Private Nachricht senden

19

06.06.2012, 17:47

Könnte es sein, dass ich statt V.z (-V.z) benutzen muss? :P

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

FSA

Community-Fossil

  • »FSA« ist der Autor dieses Themas
  • Private Nachricht senden

20

06.06.2012, 17:52

Nein irgendwie nicht ^^

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Werbeanzeige