Three.js 如何旋转对象使其面向某个方向?

Three.js 如何旋转对象使其面向某个方向?,three.js,Three.js,如果我知道一个对象所面对的方向,例如(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 dire

如果我知道一个对象所面对的方向,例如(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解决了这个问题:

var newDir = new THREE.Vector3(1, 1, 1);
var pos = new THREE.Vector3();
pos.addVectors(newDir, object.position);
object.lookAt(pos);

看看Object3d上的方法。类似于
lookAt
rotateOnAxis
的东西可能就是你想要的。@edA-qamort-ora-y我现在尝试使用rotateOnAxis,编辑了我的帖子。但它的方向并不正确。您看到代码中有任何缺陷吗?在
dev67
分支上有一个新函数
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()
,这可能是最简单的方法。