Seite 1 von 1

Kreisbahn im 3D Raum berechnen (Kamera und Entity)

Verfasst: 26.05.2013 16:17
von Makke
Hallo,

ich habe folgendes vor. Mit der 3D Engine von Purebasic will ich ein Entity direkt vor der Kamera immer anzeigen. Durch bewegen der Maus (Rechts-Links und Rauf-Runter) wird die Kamera geschwenkt (rotiert), dabei soll das Entity immer an der gleichen Stelle vor der Kamera angezeigt werden. Das versuche ich über eine Kreisbahnberechnung zu lösen, hier der Code:

Code: Alles auswählen

cpradiusz = Player\pos\z - Player\cam\z ;=4000
cpradiusy = Player\pos\y - Player\cam\y ;=0
cpradiusx = Player\pos\x - Player\cam\x ;=0

; Player\camangle\x + y + z sind Winkelangaben 0-359 Grad; x = Rauf oder Runter, y = Links oder Rechts

RotateCamera(#Cam_Main, Player\camangle\x, Player\camangle\y, 0, #PB_Absolute)
  
Player\pos\x = CameraX(#Cam_Main) + (cpradiusz * Sin(Radian(Player\camangle\y)))
Player\pos\y = CameraY(#Cam_Main) + (cpradiusz * Sin(Radian(Player\camangle\x)))
player\pos\z = CameraZ(#Cam_Main) + (cpradiusz * Cos(Radian(Player\camangle\x)) * Cos(Radian(Player\camangle\y)))
Alle Variablen sind Floats. Wenn ich die Maus nur rechts oder links oder oben oder unten bewege funktioniert das auch wunderbar. Wenn ich aber nach links und unten schwenke funktioniert das nicht mehr. Ich bin ratlos und würde mich über Hilfe freuen.

Ich habe auch schon mit der Kameraposition und dem Richtungsvektor (CameraDirectionX()) rumprobiert, evtl. ließe sich das darüber lösen, aber ich habe bisher nur rumprobiert.

Danke schonmal für alle Hinweise.

Re: Kreisbahn im 3D Raum berechnen (Kamera und Entity)

Verfasst: 26.05.2013 17:52
von STARGÅTE
Sowas musst du garnicht selbst berechnen, du kannst einfach ein Node erstellen, in welches du die Camera und das Entity einbindest.
Danach rotierst du einfach das Node (als wäre es die Camera) und das Entity kommt mit.

Re: Kreisbahn im 3D Raum berechnen (Kamera und Entity)

Verfasst: 27.05.2013 16:42
von Makke
@Stargate:

1. Danke für diese wirklich gute und einfache Lösung
2. Gut das Du mein Gesicht beim lesen Deines Beitrages gesehen hast, also nochmal danke