我有一个大的二维圆平面,我一直在使用相机的Z位置(透视相机)放大和缩小(TrackballControls也有)。
我最近将camera.fov添加到我的DAT GUI控件中,用它来玩,发现我可以使用0到180的视野范围来完全放大和缩小我的场景。
我应该使用哪种方法,为什么?
编辑:
有多种方法可以让物体看起来离相机越来越近:
- 移动对象的位置(对象太多,所以不使用一)
- 移动相机的位置
- 更改相机的fov属性
- 更改相机的缩放属性
为了能够使用鼠标滚轮在包含大型几何体(数百万个顶点)的场景中平滑滚动,是否有理由不应该或应该使用上述方法之一而不是其他方法?
好吧,如果你改变相机的位置,你根本没有缩放,你只是把它移得更近或更远。
使用"视野"变量进行缩放,但如果达到极值,这通常与失真有关。
因此,这取决于您的应用程序需要什么。如果失真是可以的,并且你真的需要"放大"的感觉,你应该选择相机的FoV变量。如果您需要避免失真并希望放大,您应该更好地沿着"相机的lookAt矢量"移动。然后,你可以决定是在"缩放"时移动相机目标,还是在相机靠近目标(也称为焦点)时放慢相机移动速度。只需使用适合您的用例的内容。
也许有一些有趣的东西:
http://blog.tartiflop.com/2008/08/understanding-zoom-focus-and-field-of-view-in-papervision3d/
放大/缩小有两种方法。将摄影机移近/移远到对象,或者将对象移近/移动远到摄影机。你选择哪一个只取决于你想做什么。所以,如果你在一个城市,你想看得离汽车更近,那么你不会移动这个城市。但如果你正在检查东西(不同的型号),那么最好移动相机。(也许不是很好的例子)。
- 移动相机的位置=最佳选项,因为它更兼容具有交互
- 更改相机的fov属性=如果你想"放大"这个词的真正含义,尽管不起作用与TrackballControls配合良好
- 更改相机的缩放属性=实际上会影响fov值