【发布时间】:2014-10-03 18:57:16
【问题描述】:
我正在开发一个使用 OrbitControls.js 的简单 Three.js 演示。
我想更改 OrbitControls 中的平移行为。目前,当您平移相机时,它会在垂直于观察方向的平面中移动相机。我想改变它,使相机与地平面保持恒定距离并平行移动。 Google 地球使用类似的控制设置。
编辑:我应该首先提到这个细节,但我也希望您单击并开始拖动的点在整个拖动过程中保持在光标的正下方。鼠标移动和用户期望在屏幕上发生的事情之间需要有牢固的联系。否则,当我尝试在场景中移动时感觉好像我在“滑倒”。
谁能给我一个关于如何做到这一点的高级解释(使用或不使用 OrbitControls.js)?
【问题讨论】:
-
您的“地平面”实际上是平面(例如平面,还是高度可变)?
-
实际上是平的。它只是一个位于 (0,0,0) 的无限平面,向上向量为 (0,1,0)。
-
哦,所以你只想在世界 X/Z 方向上平移,保持相机在一个固定的 Y 位置?
-
正确。只有当我围绕目标点旋转相机或将相机推向目标点时,Y 位置才会改变。
-
正确。但我不确定我们对“旋转相机”的定义是否相同。当您旋转时,相机会围绕目标点(通常在平面上)旋转并始终转向查看该目标点。
标签: three.js