Anstiegswinkel / 3DMath / "Look At"

Einstiegsfragen, Mathematik, Physik, künstliche Intelligenz, Engine Design
Antworten
AyJayKay
Beiträge: 88
Registriert: 01.05.2012, 20:13

Anstiegswinkel / 3DMath / "Look At"

Beitrag von AyJayKay »

Hi :) ,
Kurz vorneweg: Ich wollte mich ein wenig mit dem bekannten "Look At" Befehl aus so mancher Engine beschäftigen und bin zum Schluss gekommen, dass es irgentwie schwieriger ist, als ich dachte :roll:

Falls jemand auf anhieb weiß wie "Look At" funktioniert oder wo ich die gängigste Erklärung finde, geht das auch, statt einer Problemlösung :D

Ich würde die Kamera nach den relativen Koordinaten des Ziels zur Kamera drehen, nachdem ich diese selbstverständlich durch eine Rechnung gewurstet hätte.

Code: Alles auswählen

Kameradrehung y-Achse = tan^(-1) von ( relarive x-Koordinate / relative z-Koordinate )
... klappt nur bei 0º < Winkel < 90º, weil das ganze bei Minus- oder Nullwerten Fehlerhaft ist. (logischer Weise ;) )

Nun könnte ich wohl einen Rattenschwanz aus if-then schreiben um die vier möglichen Varianten (4 Quadranten des Koordinatensystems) plus das Null-Problem zu lösen, fände dies aber nicht sehr elegant.
:?: :arrow: :idea:

Wer ist in Mathe weiter als 10. (Abi folgt in kürze) oder hat den Denkfehler gefunden? 8-)

Vielen Dank schon einmal,
yours ayjaykay
"Es gibt 10 Arten von Menschen, die die Binär verstehen und die die es nicht tun."
"Hier gibts Code zum Auskommentieren. Wo ist der Praktikant? Hmpf, so müssen sich Lehrer beim Kontrollieren von Arbeiten fühlen..."
simbad
Establishment
Beiträge: 132
Registriert: 14.12.2011, 14:30

Re: Anstiegswinkel / 3DMath / "Look At"

Beitrag von simbad »

Die Povray Docu ist ganz gut. Schau da mal nach.
Benutzeravatar
B.G.Michi
Establishment
Beiträge: 163
Registriert: 07.03.2006, 20:38
Alter Benutzername: B.G.Michi
Kontaktdaten:

Re: Anstiegswinkel / 3DMath / "Look At"

Beitrag von B.G.Michi »

auch einen Blick Wert:
http://en.wikipedia.org/wiki/Atan2

mfg JFF_B.G.Michi
AyJayKay
Beiträge: 88
Registriert: 01.05.2012, 20:13

Re: Anstiegswinkel / 3DMath / "Look At"

Beitrag von AyJayKay »

Ok, danke.
Ich wüede sagen atan2 ist die Antwort, aber ich werde mir den Tipp von simbad auch mal zu Gemüte führen... man lernt ja nie aus XD
"Es gibt 10 Arten von Menschen, die die Binär verstehen und die die es nicht tun."
"Hier gibts Code zum Auskommentieren. Wo ist der Praktikant? Hmpf, so müssen sich Lehrer beim Kontrollieren von Arbeiten fühlen..."
Benutzeravatar
dot
Establishment
Beiträge: 1734
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Anstiegswinkel / 3DMath / "Look At"

Beitrag von dot »

Antwort: Die Differenz zwischen LookAt und Kameraposition beschreibt die Richtung der z-Achse der Kamera. Zusammen mit dem Up-Vektor kann man über das Kreuzprodukt daraus die Richtung der x-Achse und aus der nun bekannten x und z Achse über ein weiteres Kreuzprodukt die y-Achse bestimmen. Aus diesen drei Basisvektoren kann man dann direkt die entsprechende View-Matrix bauen.

Meiner Erfahrung nach ist man praktisch immer gerade dabei etwas grundlegend falsch zu machen, wenn man versucht von Vektoren auf irgendwelche Winkel zurückzurechnen (was normalerweise nichtmal eindeutig möglich ist), nur um daraus dann wieder Vektoren zu machen...
Stephan Theisgen
Beiträge: 94
Registriert: 29.07.2003, 11:13

Re: Anstiegswinkel / 3DMath / "Look At"

Beitrag von Stephan Theisgen »

Dot schreibt es zwar implziet mit: "diesen dre BASISvektoren".
Aber vor dem Zusammenbauen der Matrix --> normalisieren der Vektoren nicht vergessen...
AyJayKay
Beiträge: 88
Registriert: 01.05.2012, 20:13

Re: Anstiegswinkel / 3DMath / "Look At"

Beitrag von AyJayKay »

(by the way: Ich hab mich in die Winkelrechnung verliebt und gar nicht daran gedacht das iwi anders zu machen :D )
dot hat geschrieben:Die Differenz zwischen LookAt und Kameraposition beschreibt die Richtung der z-Achse der Kamera. Zusammen mit dem Up-Vektor kann man über das Kreuzprodukt daraus die Richtung der x-Achse und aus der nun bekannten x und z Achse über ein weiteres Kreuzprodukt die y-Achse bestimmen.
so?
...
:?:
Sei mir nicht böse. Das hört sich gut an.... und ich würde es gerne verstehen.
Die Differenz aus zwei Positionen verstehe ich so: (x|y|z) - (x|y|z). Und ab hier sehe ich nicht mehr durch...
Ich suche ja nicht nach "relativen" Koordinaten oder Vektoren sondern ich möchte ein Objekt so ausrichten, dass es auf eine anderes zeigt. Und ich weiß nicht wie das ohne Winkel möglich ist. :?

bitte um Erhellung :roll: :D
"Es gibt 10 Arten von Menschen, die die Binär verstehen und die die es nicht tun."
"Hier gibts Code zum Auskommentieren. Wo ist der Praktikant? Hmpf, so müssen sich Lehrer beim Kontrollieren von Arbeiten fühlen..."
Benutzeravatar
dot
Establishment
Beiträge: 1734
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Anstiegswinkel / 3DMath / "Look At"

Beitrag von dot »

Die Differenz zweier Punkte ist ein Vektor, der vom einen Punkt zum anderen zeigt. Die Differenz von LookAt und Kameraposition ist damit also ein Vektor, der von der Kamera in Richtung LookAt zeigt ;)
AyJayKay
Beiträge: 88
Registriert: 01.05.2012, 20:13

Re: Anstiegswinkel / 3DMath / "Look At"

Beitrag von AyJayKay »

Ja, Ok, soweit komme ich mit aber bekomme ich mit diesem Vektor als "relative z-Achse" auch heraus, wie ich die Kamera drehen muss?
"Es gibt 10 Arten von Menschen, die die Binär verstehen und die die es nicht tun."
"Hier gibts Code zum Auskommentieren. Wo ist der Praktikant? Hmpf, so müssen sich Lehrer beim Kontrollieren von Arbeiten fühlen..."
Benutzeravatar
dot
Establishment
Beiträge: 1734
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Anstiegswinkel / 3DMath / "Look At"

Beitrag von dot »

Viel besser, du verwendest direkt diesen Vektor um die Kamera auszurichten, indem du einfach sagst, dass dieser Vektor jetzt die z-Achse der Kamera ist ;)
AyJayKay
Beiträge: 88
Registriert: 01.05.2012, 20:13

Re: Anstiegswinkel / 3DMath / "Look At"

Beitrag von AyJayKay »

Klar. Das leuchtet ein. Danke, das bringt mich auf Ideen... :)

Cool. Aber wie siehts aus wenn ich nur die Möglichkeiten Position und Rotation für ein Objekt habe. (Wie in mancher Engine, eben.) ?
"Es gibt 10 Arten von Menschen, die die Binär verstehen und die die es nicht tun."
"Hier gibts Code zum Auskommentieren. Wo ist der Praktikant? Hmpf, so müssen sich Lehrer beim Kontrollieren von Arbeiten fühlen..."
Benutzeravatar
dot
Establishment
Beiträge: 1734
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Anstiegswinkel / 3DMath / "Look At"

Beitrag von dot »

Was genau meinst du damit?
AyJayKay
Beiträge: 88
Registriert: 01.05.2012, 20:13

Re: Anstiegswinkel / 3DMath / "Look At"

Beitrag von AyJayKay »

Naja, den Vektor als z-Achse verwenden hab ich verstanden.

Wenn ich jedoch zu einem Objekt nur die beiden Angaben "Position" (als Vector3) und "Rotation" (als Vector3 in Grad) habe, wie es in diversen Engines der fall ist, dann will ich wieder von Vektoren zu Winkeln... (oder nicht?)
"Es gibt 10 Arten von Menschen, die die Binär verstehen und die die es nicht tun."
"Hier gibts Code zum Auskommentieren. Wo ist der Praktikant? Hmpf, so müssen sich Lehrer beim Kontrollieren von Arbeiten fühlen..."
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: Anstiegswinkel / 3DMath / "Look At"

Beitrag von eXile »

AyJayKay hat geschrieben:Wenn ich jedoch zu einem Objekt nur die beiden Angaben "Position" (als Vector3) und "Rotation" (als Vector3 in Grad) habe, wie es in diversen Engines der fall ist, dann will ich wieder von Vektoren zu Winkeln... (oder nicht?)
Nein, willst du nicht. Du schmeißt einfach die Rotation weg, und nimmst nur die Position und \($v_\text{up} = (1, 0, 0)^T$\) für die LookAt-Matrix.

Das, was dot vorhin gesagt hat, findest du übrigens auch noch in der MSDN.
Benutzeravatar
dot
Establishment
Beiträge: 1734
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Anstiegswinkel / 3DMath / "Look At"

Beitrag von dot »

Also eine Engine die Position und Eulerwinkel als einzige Möglichkeit bietet, würd ich ganz sicher einfach nicht verwenden ;)
AyJayKay
Beiträge: 88
Registriert: 01.05.2012, 20:13

Re: Anstiegswinkel / 3DMath / "Look At"

Beitrag von AyJayKay »

Ok, Vielen Dank! (trotzdem auch wegen der Winkelrechnung :) )
"Es gibt 10 Arten von Menschen, die die Binär verstehen und die die es nicht tun."
"Hier gibts Code zum Auskommentieren. Wo ist der Praktikant? Hmpf, so müssen sich Lehrer beim Kontrollieren von Arbeiten fühlen..."
Antworten