如果我知道一个物体朝向的方向,例如(0,0,1)。最简单的方法是将物体旋转到面对方向向量(1,1,1)?
编辑:
我尝试过这个,但是这个逻辑有问题:
编辑:
我尝试过这个,但是这个逻辑有问题:
var newDir = new THREE.Vector3(1,1,1);
var objectDir= new THREE.Vector3(0, 0, 1);
objectDir.applyQuaternion(object.quaternion); // rotate this vector to object's facing direction
var pos = new THREE.Vector3();
pos.addVectors(newDir, object.position);
var axis = objectDir.cross(newDir).normalize();
var angle = objectDir.angleTo(pos);
object.rotateOnAxis(axis, angle);
lookAt
或rotateOnAxis
可能是你想要的。 - edA-qa mort-ora-ydev67
分支上有一个新的函数Quaternion.setFromUnitVectors()
:var vfrom = new THREE.Vector3( 0, 0, 1 ); var vto = new THREE.Vector3( 1, 1, 1 ).normalize(); object.quaternion.setFromUnitVectors( vfrom, vto );
如果物体的“向上”方向对你很重要,那么使用object.lookAt()
可能是最简单的方法。 - WestLangley