我已经使用three.js
将一个equirectangular图像映射到一个球体上,将相机放在球体的中间,并使用OrbitControls
来处理缩放和放大等内容。转动。
这一切都很有效,直到我想以编程方式调整相机正在看的东西(我{t = {1}}),最终改变了相机的位置。这里的问题是,在旋转之后,您将旋转出球体。仅通过调整camera.target
和camera.rotation
来实现此目的的正确方法是什么。我可以删除camera.zoom
,但不完全理解轮换应该如何工作,并且也对其他选项开放。
答案 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