Equirectangular映射球面上的Three.js轨道控制 - 保持位置

时间:2017-05-24 04:43:44

标签: three.js rotation

我已经使用three.js将一个equirectangular图像映射到一个球体上,将相机放在球体的中间,并使用OrbitControls来处理缩放和放大等内容。转动。

这一切都很有效,直到我想以编程方式调整相机正在看的东西(我{t = {1}}),最终改变了相机的位置。这里的问题是,在旋转之后,您将旋转出球体。仅通过调整camera.targetcamera.rotation来实现此目的的正确方法是什么。我可以删除camera.zoom,但不完全理解轮换应该如何工作,并且也对其他选项开放。

1 个答案:

答案 0 :(得分:4)

如果您在全景中心使用OrbitControls,则应将controls.target留在原点,并将相机位置设置为靠近原点:

camera.position.set( 0, 0, 1 );

通过设置

controls.enablePan = false;
controls.enableZoom = false;

相机始终与原点保持1的距离,即在单位球面上。

然后,要查看( x, y, z ),您可以通过编程方式设置相机的位置,如下所示:

camera.position.set( x, y, z, ).normalize().negate();

这样,当相机查看目标(原点)时,它也会自动查看( x, y, z )

three.js r.85