Re: Leichter Zugriff auf DirectX durch Kapselung
20. Jun 2005, 18:20
Ja genau, es gibt die KameraPosition und die KameraBlickrichtung (Direction). Position + Direction = LookAt. Zusätzlich gibt es noch den Up-Vektor, der sagt wo oben ist (wenn man z.B. kopfüber hängt, zeigt der nach unten).
Achtung:
1. Wie oben aufgeführt muss man in xorDX8 noch zwischen Kamera und Kameramann unterscheiden. Position etc beziehen sich auf den Kameramann und sollten mit MoveHoriz, -vert, -forward, RotateHoriz, -vert, -around, MoveTo, SetPosition, SetDirection etc gesteuert werden. Benutzt man stattdessen Move, Rotate etc bezieht sich dies lediglich auf das Verhältnis zwischen Kameramann und Kamera, was normalerweise unnötig ist. Direction etc bleiben dabei unangetastet. Das macht nur Sinn, wenn ich den Kameramann wie Kamera dirigieren will, aber er die Kamera permanent verdreht halten soll oder dergleichen... (Man kann somit die gleichen Befehle auf zwei Kameras loslassen, wobei die eine aber nach hinten und die andere nach vorne guckt. Glaub ich jedenfalls.)
2. Ein weiterer Punkt ist inwiefern ich MoveHoriz ausführen will, d.h. soll die Horizontale Bewegung parallel zur Koordinaten-XY-Ebene passieren (xorDXcamID), oder möchte ich mich horizontal zur in der (geneigten) Blickebene bewegen (camHuman, Bsp. man läuft auf einer schrägen Wand, dann heißt horizontal parallel zur Wand, nicht zum Erdboden), oder heißt horizontal senkrecht zum Up-Vektor der Kamera.... Diesen Parameter kann man bei MoveHoriz übergeben. xorDXcamHuman spiegelt menschliches Verhalten wieder.
3. Der Unterschied zu FreeCam. Bei der FreeCam wird der UpVektor mit gedreht. So kann ein Flugzeug ein Looping fliegen. Eine normale Kamera, deren UpVektor kerzengrade nach oben zeigt, kann nie ganz direkt nach unten/oben gucken und so auch keine Loopings.
xor
|