我应该使用视野或相机的z位置来放大/缩小吗?

时间:2014-10-31 12:10:21

标签: three.js perspectivecamera

我有一个大的2D圆形平面,我一直在使用相机的Z位置(一个PerspectiveCamera)放大和缩小(TrackballControls)。

我最近将camera.fov添加到我的DAT GUI控件中以便使用它,并发现我可以使用0到180的范围完全放大和缩小我的场景。

我应该使用哪种方法?为什么?

编辑:

有多种方法可以使物体离相机越来越远:

  • 移动对象的位置(对象太多,所以不要使用它 一)
  • 移动相机的位置
  • 更改相机的fov属性
  • 更改相机的缩放属性

为了能够使用鼠标滚轮平滑地滚动进出包含大几何(数百万个顶点)的场景,我有理由不应该或者应该使用上面的方法之一其他人?

3 个答案:

答案 0 :(得分:1)

好吧,如果你改变了摄像机的位置,你根本就没有缩放,你只是将它移近或远离。

使用Field of View变量,您正在缩放,但如果达到极值,这通常与失真有关。

因此,这取决于您的应用程序所需。如果失真是可以的,你真的需要“缩放”的感觉,你应该去相机的FoV变量。如果你需要避免失真并想要放大,你最好沿着“相机的外观矢量”移动。然后,您可以决定是否在“缩放”时移动摄像机目标,或者如果您正在减慢摄像机移动速度,如果它接近其目标,也就是焦点。只需使用适合您用例的内容即可。

也许有些有趣的东西:

http://blog.tartiflop.com/2008/08/understanding-zoom-focus-and-field-of-view-in-papervision3d/

答案 1 :(得分:1)

有两种放大/缩小方法。您可以将相机移近/远离物体,也可以将物体移近或远离相机。您选择哪一个取决于您还想做什么。因此,如果你在一个城市,并且你想要更接近汽车,那么你就不会移动城市。 但如果您正在检查事物(不同型号),那么移动相机可能会更好。 (也许不是很好的例子)。

答案 2 :(得分:0)

  • 移动相机的位置=最佳选项,因为它更兼容 与互动
  • 更改相机的fov属性=最佳选项if 你想要真正意义上的“缩放”,但不会播放 以及TrackballControls
  • 更改相机的缩放属性= 实际上会影响fov值