Me he quedado con objetos giratorios en TRES.js. Mi situación se ve así. Hago clic en la superficie y detecto qué triángulo es. Luego, obtengo el vector normal de mis triángulos seleccionados y el vector normal para mi piso y quiero rotar el objeto para que el triángulo seleccionado quede en el piso. Pero siempre que calculo el cuaternión a partir de mi vector normal del piso y el vector normal del triángulo y trato de aplicarlo a mi objeto, esa rotación es completamente incorrecta.
let triangleNormal: Vector3 = new Vector3(); triangle.getNormal(triangleNormal); console.log('Triangle normal', triangleNormal); const normals = floor.geometry.getAttribute('normal'); const floorNormal = new Vector3(); floorNormal.fromBufferAttribute(normals, i); const quaternion = new THREE.Quaternion(); quaternion.setFromUnitVectors(floorNormal, triangleNormal); targetObject.applyQuaternion(quaternion);¿Alguien tiene una idea de lo que estoy haciendo mal?