Quiero rotar un hueso para que esté alineado con un Vector3 (directionToTarget), tengo:
const directionToTarget = new THREE.Vector3(random, random, random); //pseudocode randoms directionToTarget.normalize(); var Hand2worldQ = new THREE.Quaternion(); this._anchor['LeftHandIndex1'].getWorldQuaternion(Hand2worldQ); // gets Lefthand bone quaternion this._mesh.skeleton.bones[ 0 ].quaternion.set( SomeFunctionThatMakesVecintoQuarternion(directionToTarget ); // this._mesh.skeleton.bones inherits Hand2worldQ/LeftHand rotationSomeFunctionThatMakesVec3intoQuarternion(directionToTarget) es lo que necesito
Object3D comienza mirando hacia abajo en el eje 0, 0, 1 . Puede usar el método Object3D.lookAt() para hacer que este objeto apunte hacia su vector de destino. Luego puede extraer esa rotación y usarla para cualquier otra cosa que necesite:
// Initialize an abstract object looking towards 0, 0, 1 const object3D = new THREE.Object3D(); // Rotate it so it looks towards the target xyz coordinates object3D.lookAt(randomX, randomY, randomZ); // This will now have the final rotation const myQuaternion = object3D.quaternion; console.log(myQuaternion);