Camera 使用轨道控制时,THREE.JS相机旋转丢失

Camera 使用轨道控制时,THREE.JS相机旋转丢失,camera,three.js,rotation,controls,orbit,Camera,Three.js,Rotation,Controls,Orbit,为了让你了解情况,假设我有一台照相机 camera = new THREE.PerspectiveCamera(); camera.position.set(1,1,1); camera.lookAt(scene.position); camera.rotation.set(Math.PI/2, 0 ,0) // <=== this is lost when the orbit control move 问题是,当我通过在单击时拖动鼠标或缩放来使用“动态观察”控件时,相机旋转会丢失 我

为了让你了解情况,假设我有一台照相机

camera = new THREE.PerspectiveCamera();
camera.position.set(1,1,1);
camera.lookAt(scene.position);
camera.rotation.set(Math.PI/2, 0 ,0) // <=== this is lost when the orbit control move 
问题是,当我通过在单击时拖动鼠标或缩放来使用“动态观察”控件时,相机旋转会丢失

我尝试使用控件。update(),但不起作用

编辑

这里是一个链接,用于

var摄像机;
var场景;
变量控制;
var渲染器;
函数init(){
场景=新的三个。场景();
renderer=new THREE.WebGLRenderer({
阿尔法:是的,
反别名:对
});
renderer.setSize(window.innerWidth、window.innerHeight);
document.body.appendChild(renderer.doElement);
摄像头=新的三个透视摄像头(45,window.innerWidth/window.innerHeight,0.11000);
摄像机位置设置(0,0,5);
场景。添加(摄影机);
添加(新的三个环境光(0xffffff,0.6));
var light1=新的三半球灯光(0xffffbb,0x080820,0.7)
场景。添加(light1);
var light2=新的三聚光灯(0xffffff,0.5);
灯光2.位置设置(4、7、23);
场景。添加(light2);
var light3=新的三聚光灯(0xffffff,0.5);
灯3.位置.设置(4,7,-23);
//场景。添加(light3);
var geometry=新的3.BoxGeometry(2,1,1);
var material=新的3.0网格LambertMaterial({
颜色:0x00ffff
});
var cube=新的三个网格(几何体、材质);
场景.添加(立方体);
控件=新的三个.轨道控件(摄影机、渲染器.doElement);
}
函数animate(){
请求动画帧(动画);
渲染器。渲染(场景、摄影机);
}
document.getElementById('button')。onclick=function(){
//控制台日志(“位置”);
//控制台日志(摄像机位置);
//控制台日志(“旋转”);
//控制台.日志(摄像机.旋转);
相机旋转设置(0,0,1.57);
//相机位置设置(-0.041,1.9,-1.21);
}
init();
制作动画()


更改旋转
您可以切换到第二个摄像头,如2pha所说,或者您可以设置
控件。enableRotate=false

您可能需要设置
控件。target
,而不是旋转相机。如果你发了一个帖子,帮助会容易得多you@2pha下面是一个JSFIDLE的链接:我不确定您想要实现什么。如果使用动态观察控件,为什么要旋转摄影机?很抱歉,我应该要求您在这里附加一个片段,而不是一个指向JSFIDDLE的链接。基本上,在我的原始应用程序中,我有一个3D脚部网格。有时我只需要点击一下,就可以看到后脚掌的垂直视图。所以我应用了相机旋转。但是当我使用“动态观察控制”移动相机时,相机旋转会跳到原来的值。你不能添加第二个相机并在两者之间切换吗?
controls = new THREE.OrbitControls(camera, renderer.domElement);