【问题标题】:How do you control TrackBallControls rotation in three.js如何在three.js中控制TrackBallControls旋转
【发布时间】:2013-01-31 08:36:23
【问题描述】:

我一直在制作this 应用程序,如果您单击左上角的选项卡,它将显示助手立方体,然后在屏幕上单击并拖动鼠标以使用 trackBallControls 移动相机。如果您将相机旋转到一侧,然后再次单击左上角的选项卡以隐藏助手立方体,它应该会重新聚焦在板上,但它会以奇怪的角度旋转。

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

【问题讨论】:

  • 非常感谢 :),这是我的第一个网站。

标签: javascript controls three.js


【解决方案1】:

没有。 TrackballControls 中没有任何部分限制相机的旋转。

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

就我个人而言,我会按照你说的去做,编写你自己的控件。恕我直言,相机不需要在助手内垂直移动——只需水平移动一圈即可。

无论如何,恭喜!漂亮的应用程序。 :-)

【讨论】:

  • 感谢@WestLangley,我尝试使用轨道控制,但是当我垂直拖动时它似乎不符合我的需要,它通过增加θ角来移动相机(假设物理球极坐标) ),但水平拖动相机只是在其自己的视轴上旋转,而不是实际围绕世界 z 轴(或物理球极坐标中的 phi)旋转。我会按照你的建议做,并推出我自己的控件。再次感谢。
  • 嗯?在 OrbitControls 中,摄像机围绕 controls.center 旋转,而不是“在它自己的视轴上”——至少,这是它应该做的。
  • 如果我将轨道控制中心设置在板的中间,则相机位置在垂直移动(θ角)时会正确更新,但 phi 角不会围绕 z 轴水平移动相机如果这更有意义的话,它只是围绕它的 LookAt 轴旋转的游戏板。所以相机只是旋转而不是平移。对于我缺乏简洁的技术词汇,我深表歉意。无论如何,我会用我自己的控制来解决这个问题,谢谢你的建议。
  • 解决方案只是在我为相机的位置和旋转设置动画后将camera.up重置为新的THREE.Vector3(0,1,0),因为轨迹球控件更新position@ 987654327@ 和up。全部排序。
【解决方案2】:

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

【讨论】:

  • 我可以,但我不想修改控件,因为我不完全理解它的实现,因此我目前正在从头开始编写自己的控件类型,但我是希望有一种简单的方法可以使用为 trackBall 提供的 api。谢谢。
猜你喜欢
  • 1970-01-01
  • 2013-05-24
  • 1970-01-01
  • 2013-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-05
相关资源
最近更新 更多