Javascript 如何查找对象相对于摄影机的旋转
我很难计算出一个物体相对于摄像机的角度,我正试图用一个摄像机对一艘宇宙飞船进行编码。我的相机跟在船的后面,但相机的旋转有时有点偏离,以下是我的相机代码:Javascript 如何查找对象相对于摄影机的旋转,javascript,three.js,rotation,Javascript,Three.js,Rotation,我很难计算出一个物体相对于摄像机的角度,我正试图用一个摄像机对一艘宇宙飞船进行编码。我的相机跟在船的后面,但相机的旋转有时有点偏离,以下是我的相机代码: var focalpoint = new THREE.Vector3( actor.position.x, actor.position.y, actor.position.z + 14 ); //move camera closer to the object if it gets too far away var
var focalpoint = new THREE.Vector3(
actor.position.x,
actor.position.y,
actor.position.z + 14
);
//move camera closer to the object if it gets too far away
var calculatedDistance = distance(camera.position, actor.position);
var cameraTolerance = calculatedDistance - this.cameradistance.min;
var closingvelocity = cameraTolerance * 0.02;
if(calculatedDistance > this.cameradistance.max)cameravelocity.z = -closingvelocity;
if(calculatedDistance < this.cameradistance.min)cameravelocity.z = closingvelocity;
//slow down the camera
if(calculatedDistance < this.cameradistance.max && calculatedDistance > this.cameradistance.min){
cameravelocity.z = 0;
}
camera.translateX( cameravelocity.x );
camera.translateY( cameravelocity.y );
camera.translateZ( cameravelocity.z );
camera.lookAt(focalpoint);
camera.rotation.z = 0;
var focalpoint=new THREE.Vector3(
演员.position.x,
演员,位置,y,
演员。位置。z+14
);
//如果摄影机离对象太远,请将其移近
var calculatedDistance=距离(摄像机位置、演员位置);
var cameraTolerance=计算距离-this.camerRadiance.min;
var closingvelocity=cameraTolerance*0.02;
如果(calculatedDistance>this.CameradInstance.max)cameravelocity.z=-closingvelocity;
如果(计算距离this.camerRadiance.min){
cameravelocity.z=0;
}
camera.translateX(cameravelocity.x);
camera.translateY(cameravelocity.y);
camera.translateZ(cameravelocity.z);
摄像机。注视(焦点);
摄像机旋转z=0;
现在我需要限制宇宙飞船(演员)的旋转,这样它就不会开始朝着相机飞去,并解决相机翻转的问题。因此,我需要找出如何找到演员相对于相机的旋转,我完全不知道从哪里开始计算,甚至不知道如何计算。通过反转目标的旋转,然后像这样乘以,找到了答案:
var rotationOffset=actor.quaternion.clone().inverse();
var rotation=camera.quaternion.clone().multiply(rotationOffset)代码>我做了更多的挖掘,结果发现lookAt函数引起了一些麻烦。看来我前面还有很多数学问题。