Kamera "am Rande einer Kugel bewegen"

Mika

Mitglied
Hallo Community,

Eines vorweg: Falls das Thema nicht in dieses Unterforum passt, bitte verschieben!
Wie schaffe ich es, eine Kamera so zu bewegen, dass sich sich "um" ein Objekt dreht und die ganze Zeit daraufschaut? Man kann sich das so verstellen: Ein bestimmtes Objekt ist der Mittelpunkt einer Kugel, an deren Rande sich eine Kamera bewegt. Diese muss IMMER auf dieses Objekt schauen. Gegeben sind folgende Werte:
- Ausgangskameraposition
- Ausgangskamera-"Look"-Vektor (bzw. Rotation)
- Mittelpunkt, um den sich die Kamera drehen soll
-> Radius der Kugel errechnet sich aus der Kameraposition und dem Mittelpunkt, da die Kamera sich ja am "Rande" entlang bewegen soll.
- Winkel, um die sich die Kamera drehen soll

Hier ein Bild zur Veranschaulichung:
Unbenannt.png

Gibt es dazu vielleicht ein Tutorial bzw. kennt sich damit jemand aus?
 

Mika

Mitglied
Danke für deine Antwort! Ich habe bereits einen Code geschrieben, der allerdings nur ansatzweise funktioniert (nur auf einer Ebene):

Java:
// Abstand zwischen der Rotationsachse und der Kamera
Vector3d vecDistance = new Vector3d(targetXPos, targetYPos, targetZPos).subtract(camera.getPositionVec);
// Dieser Vektor wird jetzt gedreht (mit Hilfe einer Rotationsmatrix)
vecDistance = vecDistance.multiplyMatrix(Matrix.getRotationMatrixX(alpha)).multiplyMatrix(Matrix.getRotationMatrixY(beta));
// Das Ergebnis ist die Summe aus "vecDistance" und der Rotationsachse
Vector3d result = new Vector3d(targetXPos, targetYPos, targetZPos).add(vecDistance);
// Setze die Kamera zur neuen Position
camera.setPosition(result);

// Jetzt wird die Kamera noch so rotiert, dass sie zum Zielobjekt bzw. zur Rotationsachse schaut:
Vector3d v = camera.getPosition().subtract(targetXPos, targetYPos, targetZPos).normalize();
double distance = Math.sqrt(v.x * v.x + v.y * v.y);
double xRot = distance == 0 ? 0.0 : Math.asin(v.y / distance);
double yRot = Math.atan2(v.x, v.z);

camera.xRot = Math.toDegrees(-xRot);
camera.yRot = Math.toDegrees(-yRot);

So, diesen Code benutze ich bis jetzt (ich hoffe man kann anhand der Variablennamen und Methodennamen gut erkennen, was ich berechne). Wenn ich die Kamera jetzt allerdings um den Winkel α und um den Winkel β um ein Objekt drehen möchte, dann flimmert der Bildschirm bzw. die Kamera springt ganz schnell von z.B -9 zu +9.
Rotiere ich die Kamera aber nur um die y-Achse, funktioniert der Code perfekt. Es scheint irgendetwas mit der x-Rotation nicht zu stimmen, aber ich komme einfach nicht drauf.
Hat irgendjemand eine Idee, an was das liegen könnte?

PS: Die Vektor bzw. Matrixmethoden funktionieren perfekt.
 

Androbin

Bekanntes Mitglied
Ohne mir jetzt deinen Code genauer angesehen zuhaben:
Müsste es nicht funktionieren, wenn du "xRot" so berechnest, wie "yRot"?
Java:
double xRot = Math.atan2( v.y, v.z );
double yRot = Math.atan2( v.x, v.z );
 

Mika

Mitglied
Ich habe es jetzt. Du hast Recht xRot wird ebenfalls mit der atan2-Funktion der Math-Klasse berechnet - Man darf sich niemals auf irgendwelche Posts verlassen xD). Und ich hatte noch einen Fehler (nur falls es jemanden interessiert):
Man muss von der Kameraposition die Rotationsachsenposition abziehen, nicht andersherum (in meinem Code Zeile 3).

Trotzdem danke für deine Hilfe!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
8u3631984 Kamera Stream Bereiche ausgrauen Spiele- und Multimedia-Programmierung 3
P Sich bewegende Kamera Spiele- und Multimedia-Programmierung 12
S LWJGL Kamera Problem - Alles verzerrt Spiele- und Multimedia-Programmierung 4
S LWJGL Kamera Koordinaten invertiert. Spiele- und Multimedia-Programmierung 2
F LWJGL Problem mit Erstellen eines Objekts und der Kamera Spiele- und Multimedia-Programmierung 5
S LWJGL Kamera Frage Spiele- und Multimedia-Programmierung 2
B j3d Kamera Rotation durch Tastendruck Spiele- und Multimedia-Programmierung 12
M Problem mit Kamera (glMultMatrix (OpenGL/ LWJGL)/ Quaternionen) Spiele- und Multimedia-Programmierung 5
B Video von einer IP kamera Spiele- und Multimedia-Programmierung 5
J [JOGL] Kamera zentrieren über Achse Spiele- und Multimedia-Programmierung 4
"Er" Kamera rotation in Java3D Spiele- und Multimedia-Programmierung 2
S mikroskop-kamera fuer jmf Spiele- und Multimedia-Programmierung 3
V Java3D: automatisches Bewegen der Kamera Spiele- und Multimedia-Programmierung 19
J Kamera ausrichten Spiele- und Multimedia-Programmierung 2
J j3d, kamera auf sphere, sowie kameraflüge Spiele- und Multimedia-Programmierung 21
A Sichtvektor der "Kamera" Spiele- und Multimedia-Programmierung 2
A JAVA3D und die "Kamera" Spiele- und Multimedia-Programmierung 6
W "Kamera"-Position Spiele- und Multimedia-Programmierung 24
Tr3kk3r Kamera nur um x und y, nicht um z achse rotieren Spiele- und Multimedia-Programmierung 2
G Wie kann ich die Kamera / View Position ausgeben? Spiele- und Multimedia-Programmierung 3
I Zweite Kamera in einem SimpleUniverse Spiele- und Multimedia-Programmierung 6
A Am Rande des Universums Spiele- und Multimedia-Programmierung 2
YangLee Ausgabe von einer Bewegung bei mehrzeiligen Strings Spiele- und Multimedia-Programmierung 1
E relevanter bereich einer isometrischen karte zeichnen (AffineTransform) Spiele- und Multimedia-Programmierung 0
M Audio Track einer Musik CD abspielen mittels vlcj-Bibliothek Spiele- und Multimedia-Programmierung 0
Meeresgott LWJGL 3 Problem mit einer Texture Spiele- und Multimedia-Programmierung 4
D Programmierung einer Tor-Anzeige Spiele- und Multimedia-Programmierung 8
C Optimale Wegberechnung einer KI Spiele- und Multimedia-Programmierung 6
T Pong Hilfe bei einer Website Spiele- und Multimedia-Programmierung 4
R Einfärben von Gemeinden auf einer Karte Spiele- und Multimedia-Programmierung 14
S ECS: "deep copy" einer Entity-Vorlage Spiele- und Multimedia-Programmierung 9
R Aufruf einer render-Methode Spiele- und Multimedia-Programmierung 12
E A-Stern Algorithmus Problem und Implementierung einer Map Spiele- und Multimedia-Programmierung 6
J Frage zum Einlesen einer .wav in ein byte Array Spiele- und Multimedia-Programmierung 3
J Spielfiguren laufen lassen auf einer html Tabelle mit Hilfe von Servlets Spiele- und Multimedia-Programmierung 2
T Alle Referenzen zu einer Klasse aus Java Bytecode ersetzt, JVM sucht trotzdem diese Klasse Spiele- und Multimedia-Programmierung 1
B Den KeyListener in einer JavaFXML Application benutzen Spiele- und Multimedia-Programmierung 2
gamebreiti Index eines Elements einer ArrayList abfragen Spiele- und Multimedia-Programmierung 1
F Das sag mir einer Java ist plattform unabhänig ! Spiele- und Multimedia-Programmierung 10
M Scrolling einer 2D Map Spiele- und Multimedia-Programmierung 8
J In einer While-Schleife auf Event warten Spiele- und Multimedia-Programmierung 3
TheSorm Collision an einer bestimmten Seite eine Rectangles abfragen Spiele- und Multimedia-Programmierung 3
windl Frage zu Airplay und zur Mitarbeit bei einer Mediaanlage Spiele- und Multimedia-Programmierung 0
A Aufbau einer JOGL Anwendung Spiele- und Multimedia-Programmierung 12
L Werte aus einer .yml Datei lesen Spiele- und Multimedia-Programmierung 9
H Java3D - Textur aufs innere einer Sphere mappen Spiele- und Multimedia-Programmierung 9
F Download und Update einer Java-Anwendung Spiele- und Multimedia-Programmierung 10
D Problem beim bewegen einer Figur Spiele- und Multimedia-Programmierung 2
W Java3D: Eckkoordinaten einer Box herausfinden Spiele- und Multimedia-Programmierung 18
W Rotation aller Objekte einer 3D-Szene Spiele- und Multimedia-Programmierung 8
2 Ein Zufallsweg bzw. Weg in einer 2dim Matrix finden. Spiele- und Multimedia-Programmierung 21
aze Schnittmenge zwischen Linie und einer Area wegschneiden Spiele- und Multimedia-Programmierung 3
A Bild einer Webcam auffangen Spiele- und Multimedia-Programmierung 20
G Ballerkennung aus einer Bilddatei Spiele- und Multimedia-Programmierung 24
B Generierung einer Wertetabelle aus einem Bild Spiele- und Multimedia-Programmierung 3
D Problem beim Öffnen einer PHP für eine Highscore Spiele- und Multimedia-Programmierung 5
M Realisierung einer Sichtweise in Java2D Spiele- und Multimedia-Programmierung 3
B String zu Objekt einer eigenen Klasse casten Spiele- und Multimedia-Programmierung 13
H Screenshot einer Graphics2D Anwendung erstellen Spiele- und Multimedia-Programmierung 6
F Simulation einer Magnetischen Flasche Spiele- und Multimedia-Programmierung 17
F Meine Aufgabe: Client-Server am Beispiel einer Implementation eines Tic-Tac-Toe Netzwerkspieles Spiele- und Multimedia-Programmierung 7
J Fehlverhalten einer Spielfigur Spiele- und Multimedia-Programmierung 7
N Jogl Probleme mit dem Buffer beim laden einer Textur Spiele- und Multimedia-Programmierung 2
M Das Frequenzspektrum einer WAV/MP3-Datei anzeigen Spiele- und Multimedia-Programmierung 6
M Rechteck erkennung innerhalb einer Matix Spiele- und Multimedia-Programmierung 4
S Problem beim laden eines Bildes in einer Methode Spiele- und Multimedia-Programmierung 14
E Pinball Abprall an einer schrägen Bande Spiele- und Multimedia-Programmierung 19
0x7F800000 weiß einer wozu ANTLR beim build von JOGL verwendet wird? Spiele- und Multimedia-Programmierung 3
E Hilfe bei einer GUI Programmierung mit Graph Spiele- und Multimedia-Programmierung 30
A Tutorial für die Entwicklung einer Fussball-KI gesucht Spiele- und Multimedia-Programmierung 7
S Rotation relativ zur Rotation einer anderen Transform Group Spiele- und Multimedia-Programmierung 3
A Screenshots von einer Scene erstellen Spiele- und Multimedia-Programmierung 5
G Land aus einer Weltkarte selektieren Spiele- und Multimedia-Programmierung 10
D Kräftesimulation auf einer 2D-Oberfläche Spiele- und Multimedia-Programmierung 5
T Geschwindigkeit einer Animation aendern Spiele- und Multimedia-Programmierung 6
G Ermitteln eines Punktes in einer anderen TransformGroup Spiele- und Multimedia-Programmierung 2
N Background in Java3D ähnlich einer Skybox erzeugen Spiele- und Multimedia-Programmierung 5
H zB Punkte darstellen und mit einer Linier verbinden Spiele- und Multimedia-Programmierung 5
F Darstellung einer tierischen Zelle Spiele- und Multimedia-Programmierung 3
S Text an einer Seite eines Cubes Spiele- und Multimedia-Programmierung 7
F Das SPiel ruckelt nach einer Zeit Spiele- und Multimedia-Programmierung 19
D wieder einer von anfang an. Spiele- und Multimedia-Programmierung 4
M Darstellung einer schwingenden Membran? Spiele- und Multimedia-Programmierung 23
raptorrs Teile einer CAD-Assembly Gruppe in JAVA animieren? Spiele- und Multimedia-Programmierung 3
K Beschriftung von Punkten in einer "Punktwolke" Spiele- und Multimedia-Programmierung 2
S Zur Laufzeit auf die Methode einer anderen Klasse zugreifen Spiele- und Multimedia-Programmierung 5
K Klick in der nähe einer Strecke Spiele- und Multimedia-Programmierung 14

Ähnliche Java Themen

Neue Themen


Oben