Ich habe viel über diese zwei Steuerelemente gelesen und verwende derzeit TrackballControls.
Ich muss ein Objekt entlang aller drei Achsen drehen (beide Steuerelemente tun das schon), aber Ich muss auch manchmal eine neue Kameraposition / Rotation von Hand einstellen . Und das funktioniert nicht wirklich.
Meine Abhilfe ist es deaktiviere die Trackball-Steuerung, Nimm das Quaternions-Objekt der neuen Position, Wende diese auf camera.up an und dann die Kamera aktivieren
Aber wie gesagt, das funktioniert nicht wirklich stabil.
Ich habe gelesen, dass OrbitControls eine bessere Lösung für eine solche Aufgabe sein könnte. Aber OrbitControls hat eine "Grenze" für die vertikale Drehung von Objekten und ich muss meine Objekte ohne Grenzen drehen.
Meine Fragen sind also:
1. Welches Steuerungssystem ist für meine Aufgabe besser geeignet
2. Wenn es Trackball ist - wie würden Sie manuell eine neue Kameraposition und -rotation einstellen? Und wenn es Orbit ist - gibt es eine Möglichkeit, dieses vertikale Rotationslimit zu deaktivieren?
Vielen Dank !!
Grüße - Misa
Zunächst drehen TrackballControls
und OrbitControls
die Kamera , nicht die Objekte.
Zweitens erzwingt OrbitControls
die Kamera up
direction, und TrackballControls
lässt die Kamera auf dem Kopf stehend drehen.
TrackballControls
hat eine reset()
-Methode, die die target
(Drehzentrum), die Kamera position
und die Kamera up
vector auf ihre ursprünglichen Einstellungen zurücksetzt.
Der obige Code wird den ursprünglichen position
, target
und up
Vektor wiederherstellen. Sie können diese auch ändern, wenn Sie möchten, bevor Sie controls.reset()
aufrufen.
Lesen Sie den Funktionscode reset()
, damit Sie verstehen, was er tut.
EDIT: OrbitControls
hat jetzt auch eine reset()
Methode. Überprüfen Sie den Quellcode.
drei.js r.82
Um TrackballControls zu zwingen, sich nur horizontal zu drehen, finden Sie die Implementierung der Funktion getMouseProjectionOnBall
und fügen Sie eine einzelne Zeile hinzu:
Ich arbeite immer noch daran, den Winkel in einem Bereich zu begrenzen, anstatt ihn zu deaktivieren ...
Tags und Links three.js