我使用THREE.PerspectiveCamera在正交场景中使用。这是因为THREE.OrthogonalCamera对某些类型的交互并不公平。我也使用了THREE的TrackballControls。到目前为止,缩放和平移场景对用户来说都很有用,但现在我已经意识到我需要以编程方式将对象移动到视图中,并尝试设置相机的位置并不会改变相机的位置 - 它也适用于我不想要的视角。
我想在俯视Z轴(在地图上)的同时沿X轴和Y轴移动我的透视相机(如平移地图)。
对于THREE.PerspectiveCamera,设置" camera.position.x + = 1000"将相机沿x轴移动1000,但也通过旋转相机将视角应用于视图,并使2D场景看起来歪斜。我注意到相机的旋转和四元数值已经改变。
初始camera.position at(0,0,5000)如下所示:
然后设置camera.position.x = 1000,如下所示:
在这个问题中提到了这个问题:Moving camera on a perspective map,我认为在这个问题中提到了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?