在SceneKit中放大和缩小场景的正确方法是什么?
因此,当我在场景中启用标准摄像机控制并进行捏合时,场景变得越来越小。捏真的是什么?
是否改变了整个场景的规模?它是否将相机移近?
我想以编程方式实现相同的效果。
我应该怎样做才能获得同样的效果?
答案 0 :(得分:4)
当您捏住相机的视野(xFox
和yFov
属性)时,它们会发生变化。改变视野并不是最好的缩放方式,因为它可以大大改变视角。
将相机移近物体是一个很好的解决方案。
另请注意"免费相机"行为适用于3D查看器(例如Preview.app),但在任何其他应用程序中都会很快变得令人沮丧。此时您可能想要实现自己的相机控制器。
答案 1 :(得分:0)
在任何给定点,相机都有一个空间位置,它与每个世界轴相比,每个轴都有一个旋转,要放大和缩小,你必须将相机移动到+ z / -z轴方向。
沿着Cameras自己的Z / -Z轴。
答案 2 :(得分:0)
对于那些在OSX上的人,我在我的SCNView子类中使用了它:
override func scrollWheel(theEvent: NSEvent) {
let cam = pointOfView!.camera
cam!.xFov = cam!.xFov - Double(theEvent.deltaY)
cam!.yFov = cam!.yFov - Double(theEvent.deltaY)
}
有两个(次要的)问题可以通过一些额外的代码来解决。一个是值可以变为负值,此时图像从里到外翻转。另一个是,如果真的旋转滚轮,鼠标加速会导致缩放级别过快。对这两个方面的限制都是一个好主意,但在我的应用中,行为很好,因为它在上面。