Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在three.js中控制轨迹球控制旋转_Javascript_Controls_Three.js - Fatal编程技术网

Javascript 如何在three.js中控制轨迹球控制旋转

Javascript 如何在three.js中控制轨迹球控制旋转,javascript,controls,three.js,Javascript,Controls,Three.js,我一直在制作应用程序,如果你点击左上角的标签,它将显示助手立方体,然后点击并拖动鼠标在屏幕上移动带有轨迹球控件的相机。如果将相机旋转到一边,然后再次单击左上角的选项卡以隐藏助手立方体,它应该会返回到对焦板上,但会以奇数角度旋转 trackBallControls api中是否有允许摄像机旋转的部分?目前,我将相机设置回中心和零旋转的动画,但在旋转动画完成后,轨迹球控件再次接管并将其对齐,这是不需要的,并且我无法从控件api中看到任何明显的控制旋转的方法。您可以修改this.rotateCamer

我一直在制作应用程序,如果你点击左上角的标签,它将显示助手立方体,然后点击并拖动鼠标在屏幕上移动带有轨迹球控件的相机。如果将相机旋转到一边,然后再次单击左上角的选项卡以隐藏助手立方体,它应该会返回到对焦板上,但会以奇数角度旋转


trackBallControls api中是否有允许摄像机旋转的部分?目前,我将相机设置回中心和零旋转的动画,但在旋转动画完成后,轨迹球控件再次接管并将其对齐,这是不需要的,并且我无法从控件api中看到任何明显的控制旋转的方法。

您可以修改
this.rotateCamera()的代码
TrackballControls.js中的

否。TrackballControls
中没有约束相机旋转的部分

TrackballControls
对于您来说确实是一个错误的控件。这就是你不喜欢它的原因。试试
OrbitControls
,这将使拼图保持“正面朝上”——而且代码很容易理解

就我个人而言,我会照你说的做,编写你自己的控件。嗯,摄像机不需要在助手内垂直移动,只需要在水平方向上绕一圈


无论如何,祝贺你!好看的应用程序::-)

非常感谢:),这是我有史以来的第一个网站。我可以,但我不想修改控件,因为我不完全了解它的实现,出于这个原因,我目前正在从头开始编写我自己类型的控件,但我希望有一个简单的方法来使用为trackBall提供的api来完成它。Thank.Thank@WestLangley,我尝试过使用轨道控制,但当我垂直拖动它时,它似乎不符合我的需要。它通过增加θ角(假设物理球形极坐标)来移动相机,但水平拖动相机时,相机只是绕着自己的观察轴旋转,而不是绕着世界z轴(或物理学中的phi球形极坐标)旋转。我会照你的建议做,自己控制。再次谢谢你,嗯?在OrbitControls中,camra围绕
控件旋转。居中
,而不是“在它自己的观察轴上”——至少,这是它应该做的。如果我使orbit控件居中于板的中间,垂直移动时摄像机的位置会正确更新(θ角)但是phi角度不会绕游戏板的z轴水平移动相机,它只是绕其注视轴旋转,如果这更有意义的话。所以相机只是旋转而不是平移。我为自己缺乏简明的技术词汇而道歉。无论如何,我会用我自己的控制来解决这个问题,谢谢你的建议。解决方法就是在我设置了摄像机的位置和旋转的动画后,将
摄像机.up
重置为新的3.Vector3(0,1,0),因为轨迹球控制更新
位置
旋转
up
。都分类好了。