我有我的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,othertimes如果我预先旋转的对象,它只是旋转的轻微位。
理论上的lookAt采用了世界矢量这我faceRef是,只要我设置了“向上”正确的,它应该工作,但忽略了最低。
有任何想法吗?