【发布时间】:2016-06-09 23:51:26
【问题描述】:
我正在尝试制作用于构建模型的 3D 查看器。我们已经加载了模型,并试图与模型进行某种交互。因此,我们使用 OrbiControls 来旋转、平移和缩放模型。
我们希望在查看器中具有这样的行为:当用户单击并拖动(因此旋转)时,旋转中心位于用户单击的建筑物的点。
我认为这样更改 OrbitControl 的目标是明智的:
control.target.set(newX, newY, newZ);
但是,我在 OrbitControl.js 文件的源代码中发现,当控件更新时,
camera.lookAt()
函数被调用,导致相机跳转到一个新的位置。
有没有办法解决这个问题?我已经尝试了几个小时,但似乎没有任何效果。
尝试更改 target0,然后在控件上调用 reset()。 还尝试将相机改回旧位置(这可能是它的完成方式,但我可能尝试过不好。
【问题讨论】:
-
你解决了吗? :)
-
不,我实际上没有
-
如果您仍然感兴趣,我想我可以为您解决这个问题,但我只是想了解您的预期结果。如果用户单击建筑物的一侧,您希望控件的中心点成为被单击的网格上最近的点吗?还是被点击的建筑物网格的中心点?是哪一个,还是我误解了?
-
嗨@MartinJoiner,感谢您的回复。预期的结果是轨道控件的旋转中心是与拖动事件鼠标向下的第一个面的交点。所以用户点击并拖动,那个点击交点应该成为旋转目标,而不改变相机的目标。目前,相机的目标是旋转中心
标签: javascript three.js perspectivecamera orbital-mechanics