У меня проблема в моем коде three.js.Выпуск выравнивающих граней в Three.JS из двух отдельных объектов
Я пытаюсь выровнять два объекта, выбирая две грани и поворачивая вторую грань (и объект), чтобы соответствовать нормальному вектору выбранной стороны объекта.
До сих пор у меня есть:
var normalMatrix = new THREE.Matrix3().getNormalMatrix(object.matrixWorld);
var worldNormal = face.normal.clone().applyMatrix3(normalMatrix).normalize();
var normalMatrixRef = new THREE.Matrix3().getNormalMatrix(objectRef.matrixWorld);
var worldNormalRef = faceRef.normal.clone().applyMatrix3(normalMatrixRef).normalize();
где: объект мой объект, который будет вращаться, лицо выбранного лицом этого объекта, ObjectRef является стационарной ссылкой на объект и faceRef нормальный объекта Я хочу соответствовать.
Перед делать
object.lookAt(worldNormalRef);
, я пытаюсь либо
object.up = new THREE.Vector3(0,0,1);
object.up = worldNormal;
object.up = face.normal;
и ни работы.
Любые экземпляры object.up не работают должным образом. Когда я выполняю действие, целевой объект (тот, который нужно повернуть) вращается, но не выравнивает грани. Он произволен, но каким-то образом связан с текущим вращением объектов (т. Е. Иногда он вращается вдоль (0,1,0) или simliar, в других случаях, если я предварительно вращу объект, он просто слегка вращается.
В теории lookAt использует мировой вектор, который мой faceRef есть, и до тех пор, как я установил «вверх» правильно, он должен работать, но это dosen't.
Любые идеи?