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

ich

Frischling

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

1

22.01.2007, 17:30

3rd Person Perspektive

Hallo,
ich benutze die TriBase-Engine und würde gerne eine 3rd Person Camera einbauen... so wie bei Gothic II oder ähnlichem. Ich habe die Variablen:
m_v CameraPos, m_fCameraRot, m_fCameraUpDown und bei der Render und der Move Funktion noch vCameraDir... Kann man es damit schaffen, das die Cam immer hinter der Person bleibt?

Thx,
Ich

2

22.01.2007, 18:25

hi,

eigentlich must du nur den KameraDir Vektor verlängern und dann dort dein Objekt setzen und rendern und das in jedem frame.

V3Objekt = V3CamDir + V3s(0.0f,0.0f 10.0f)

so in etwa muss dann doie Addition aussewhen um den Ort deiner Spielfigur zu finden.

ChrisJ

Alter Hase

Beiträge: 487

Wohnort: Schweich

Beruf: Schüler

  • Private Nachricht senden

3

22.01.2007, 20:35

Wäre es nicht besser die Kamera hinter das Objekt zu stellen, als das Objekt vor die Kamera?
Vielleicht lieg ich falsch, aber kann die blosse Vektoraddition nicht zu flaschen Ergebnisen führen? Abhängig vom Bezugssystem. Man muss die Kamera ja relativ zum Objekt bewegen.

4

22.01.2007, 21:00

Zitat von »"ChrisJ"«

Wäre es nicht besser die Kamera hinter das Objekt zu stellen, als das Objekt vor die Kamera?


Ja klar sonst sehen Drehungen etwas komisch aus.

rklaffehn

Treue Seele

Beiträge: 267

Wohnort: Braunschweig

  • Private Nachricht senden

5

23.01.2007, 12:46

Richtig, für eine derartige Perspektive hängt man die Kamera an der Figur auf.

Dazu muss man wissen, wo der Kopf (oder das Guckorgan) ist. Nennen wir den Punkt mal K. Ausserdem braucht man die Blickrichtung B der Figur.

Der einfachste Fall ist nun, die Kamera direkt hinter die Figur zu setzen. Allerdings würde ich sie dann nicht mehr als Position mit zwei Winkeln beschreiben, sondern als Kamera mit Augpunkt, Blick- und Oben-Richtung.

CameraPos = K - Abstand * B
CameraLookAt = K

Das positioniert die Kamera "Abstand" Einheiten hinter dem Kopf der Figur und benutzt die gleiche Blickrichtung wie die Figur. Das ist aber noch nicht ganz so schön, weil man die Kamera normalerweise etwas oberhalb der Figur platziert, damit man sich besser orientieren kann.

CameraPos = K - Abstand * B + Hoehe * y

Was hier für die Kameradefinition noch fehlt, ist die Richtung "CameraSky," die man sich mit dem Kreuzprodukt berechnen kann.

CameraSky = ((K - CameraPos) cross y) cross (K - CameraPos)

Kann aber sein, dass das jetzt nach unten zeigt, aber das sieht mal leicht, wenn das Bild auf dem Kopf steht. (bin eben zu Faul, mir das zu überlegen :)) Ausserdem kann man so den Kopf nicht kippen, was du aber mit fCameraRot (vermutlich um y) und fCameraUpDown auch nicht kannst.

Gruss,
Rainer
God is real... unless declared integer.
http://www.boincstats.com/signature/user_967277_banner.gif

Werbeanzeige