【问题标题】:How do I prevent OrbitControls' autorotate from taking an elliptical path?如何防止 OrbitControls 的自动旋转采用椭圆路径?
【发布时间】:2016-06-06 19:19:59
【问题描述】:

我正在使用 Three.js 和来自 mrdoob 的 repo 的 OrbitControls.js。在场景的初始渲染期间,我将PerspectiveCamera 的位置设置为camera.position.set(500, 1500, 2000);。然后,当我完成所有网格的渲染后,我通过调用controls.autoRotate 开始旋转相机。 controls 定义为 controls = new THREE.OrbitControls(camera, renderer.domElement);。现在,我的相机沿着 z 轴和 x 轴以一个非常极端的省略号移动。它还在不断地查看中心点:camera.lookAt(new THREE.Vector3(0, 0, 1000));。如何让我的相机围绕我的中间点 (0, 0, 1000) 旋转整齐的圆圈?

【问题讨论】:

  • (2)controls.center = vect,controls.target = obj。 (1)旋转将固定为父对象旋转。
  • 你能再详细一点吗?

标签: three.js


【解决方案1】:

如果您想修复以某个位置为中心的轨道控制:

`controls.center.set(0,0,0);` // to fixed pos / vector

controls autorotate 将围绕 controls.center/target 在零 Y 轴上运行。旋转半径是相机到controls.center的距离。

如果您在 Y 轴(上下)os 上的半径不为零,请检查控件父对象旋转(场景或其他)。

当您使用控件控制相机时,相机位置和旋转在每一帧中设置,您无法通过代码更改它。将在下一帧立即被覆盖。

如果你想改变轨道控制中心外的摄像机视图,请尝试创建第二个摄像机并在渲染中切换。

【讨论】:

  • 这帮助我找到了答案。 OrbitControls 的 API 似乎发生了变化。我只需要设置 controls.target.set(0, 0, 1000); 并按预期旋转。
  • @Martin controls.targetVector3
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多