在three.js中旋转相机无法正常工作

未来蛋糕

我有以下代码在Three.js场景中使相机绕X轴旋转:

var cameraOrginX = 0, cameraOrginY = 0, cameraOrginZ = 0;
var cameraEndX = 0, cameraEndY = 0, cameraEndZ = 1000;
var angle = 0;

function init(){
     camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 1, 10000 );
     camera.position.set(0,0,1000);

     //ROTATE THE CAMERA
     var radians = angle * Math.PI / 180.0;

     cameraEndY = Math.cos(radians) * (cameraEndY-cameraOrginY) - Math.sin(radians) * (cameraEndZ-cameraOrginZ) + cameraOrginY;
     cameraEndZ = Math.sin(radians) * (cameraEndY-cameraOrginY) + Math.cos(radians) * (cameraEndZ-cameraOrginZ) + cameraOrginZ;
     //

     //CAMERA NEW POS
     camera.position.x = cameraOrginX + cameraEndX;
     camera.position.y = cameraOrginY + cameraEndY;
     camera.position.z = cameraOrginZ + cameraEndZ;
     console.log(camera.position.y + "   " + camera.position.z);
}

当我将角度变量设置为0时,我的相机位置为x = 0,y = 0,z = 1000;这就是期望并且是好的。

但是当我将角度更改为90度时,例如,我的位置更改为x = 0 y = -1000 z = -999,99999;而您希望位置为x = 0,y = -1000,z = 0;

为什么会这样呢?有人可以向我解释我在做什么错:)

除了0以外的所有角度都给我怪异的位置:(

如果需要更多代码或jsfidle,请问我:)

Rasheduzzaman Sourov
cameraEndY = Math.cos(radians) * (cameraEndY-cameraOrginY) - Math.sin(radians) * (cameraEndZ-cameraOrginZ) + cameraOrginY;
cameraEndZ = Math.sin(radians) * (cameraEndY-cameraOrginY) + Math.cos(radians) * (cameraEndZ-cameraOrginZ) + cameraOrginZ;

您无法cameraEndYcameraEndZ计算中使用因为它已被更新。你应该使用旧的yz这个坐标rotation计算,而不是更新的。请改用以下内容-

var cosTheta = Math.cos(radians);
var sinTheta = Math.sin(radians);

var a = cosTheta * (cameraEndY-cameraOrginY);
var b = sinTheta * (cameraEndZ-cameraOrginZ);
var c = sinTheta * (cameraEndY-cameraOrginY);
var d = cosTheta * (cameraEndZ-cameraOrginZ);


cameraEndY = a - b + cameraOrginY;
cameraEndZ = c + d + cameraOrginZ; 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

three.js在平面上旋转相机

来自分类Dev

Three.js:在MeshFaceMaterial中使用cubeMaterials和不透明度-THREE.DoubleSide无法正常工作吗?

来自分类Dev

Three.js将相机旋转到特定位置

来自分类Dev

Three.js,从Collada导入的相机无法查看对象场景

来自分类Dev

旋转相机后,Three.js Skybox似乎坏了

来自分类Dev

THREE.meshphongmaterial无法正常工作-黑色

来自分类Dev

Three.js相机旋转错误

来自分类Dev

three.js中旋转或惯用的方向

来自分类Dev

THREE.js OrbitControls无法正常工作

来自分类Dev

Three.js相机外观无法正常工作

来自分类Dev

无法使Three.js相机向上

来自分类Dev

Three.JS通过移动设备围绕对象旋转相机

来自分类Dev

three.js-如何围绕lookAt(object)和相机位置之间的线旋转相机

来自分类Dev

为什么Three.js中的DirectionalLight无法正常工作?

来自分类Dev

当对象旋转时Three.js旋转相机

来自分类Dev

Three.js相机的理解

来自分类Dev

THREE.SpriteCanvasMaterial无法正常工作

来自分类Dev

Three.js:在MeshFaceMaterial中使用cubeMaterials和不透明度-THREE.DoubleSide无法正常工作吗?

来自分类Dev

3d法线贴图在Three.js中无法正常工作

来自分类Dev

如何在three.js(r66)中旋转对象而不使用控制相机的轨迹球

来自分类Dev

Three.js旋转相机以外的所有物体

来自分类Dev

Three.js旋转

来自分类Dev

旋转相机后,Three.js Skybox似乎坏了

来自分类Dev

three.js渲染到纹理Alpha无法正常工作

来自分类Dev

Three.js-相机旋转和TransformControls

来自分类Dev

Three.js相机外观无法正常工作

来自分类Dev

使用Three.js在本地轴上旋转相机X

来自分类Dev

在three.js中旋转对象

来自分类Dev

在球体上旋转玩家相机(javascript/three.js)

Related 相关文章

热门标签

归档