Objekt an einer bestimmten Achse in Three.js drehen - auch außerhalb des Netzes

Versuchen, ein Objekt um eine beliebige Achse zu drehen.

Zum Beispiel wie ein Türscharnier (am Rand des Objekts) oder ein Planet um die Sonne (außerhalb des Objekts).

Das Problem scheint die Achse zu definieren. Der folgende Einheitsvektor führt dazu, dass die Achse auf dem Ursprung (der Mitte) des Objekts verbleibt und somit mit der Standarddrehung identisch ist:

object2.rotateOnAxis(new THREE.Vector3(1,0,0), 0.01);
// same as
object1.rotation.x += 0.01;

Siehe Codebeispiel: JSFiddle

BEARBEITEN Auf der Suche nach einer Möglichkeit, sich um einen Drehpunkt zu drehen, ohne verschachtelte Kinder zu verwenden. Das Drehen des Elternteils eines Kindes bietet eine einfache Möglichkeit, den Drehpunkt des Kindes zu manipulieren, das Ändern des Drehpunkts ist jedoch nicht möglich.

Beispiel unten: Wenn Sie den Würfel in einer Bewegung von Abbildung 8 drehen möchten, können Sie dies mit dieser Methode erreichen, indem Sie das übergeordnete Element ändern. Man muss jedoch sicherstellen, dass die Position und Ausrichtung des neuen Elternteils genau so konfiguriert ist, dass das Kind nahtlos zwischen den Elternteilen wechselt, und dass komplexe Bewegungen, die sich nicht wiederholen oder in einer Schleife ablaufen, sehr kompliziert sind. Stattdessen möchte ich (und ich werde den Fragentitel umschreiben) ein Objekt um eine bestimmte Achse drehen, ohne das Objekt zu verwenden, das sich an einer beliebigen Stelle in der Szene befindet, auch außerhalb des Netzes des Objekts.

Siehe Codebeispiel:JSFiddle mit Pivots

Antworten auf die Frage(2)

Ihre Antwort auf die Frage