【发布时间】:2014-11-07 18:31:28
【问题描述】:
我在正交场景中使用 THREE.PerspectiveCamera。这是因为 THREE.OrthogonalCamera 在某些类型的交互中表现不佳。我也在使用 THREE 的 TrackballControls。到目前为止,缩放和平移场景对用户来说都非常有用,但现在我意识到我需要以编程方式将对象移动到视图中,并且尝试设置相机的 x 位置并不仅仅改变相机的 x 位置 - 它适用透视也是,我不想要。
我想在俯视 Z 轴(在地图上)的同时,沿 X 轴和 Y 轴(如平移地图)在 2D 平面上移动透视相机。
对于 THREE.PerspectiveCamera,设置“camera.position.x += 1000”将相机沿 x 轴移动 1000,但还会通过旋转相机将透视应用于视图,并导致 2D 场景看起来倾斜。我注意到相机的旋转和四元数值发生了变化。
在 (0,0,5000) 处的初始 camera.position 如下所示:
然后设置camera.position.x = 1000,如下所示:
在这个 SO 问题中提到了这个问题:Moving camera on a perspective map,我认为在这个 SO 问题中提到了它:Three.js & OrbitControls.js - pan camera parallel to ground plane (like Google Earth)。
我不擅长矩阵和 3D 投影,但我知道解决方案嵌入在他们的工作中。我也知道,当我当前拖动地图时,它正在正确平移 - so the solution may also be embedded in the panning code in THREE.TrackballControls,但我无法理解。
有人可以帮我用 THREE.PerspectiveCamera 实现非透视“平移”吗?
【问题讨论】:
-
您不需要将相机目标移动与相机位置相同的量吗?
-
我明白了……有道理,我会尝试并告诉你
-
等等,你的意思是旋转目标吗?因为相机旋转了
-
不,我的意思是平移,而不是旋转,但也许可以为您的问题创建一个小提琴以更好地说明它。
标签: three.js perspectivecamera