放大和缩小场景?

时间:2015-01-19 23:58:24

标签: scenekit

在SceneKit中放大和缩小场景的正确方法是什么?

因此,当我在场景中启用标准摄像机控制并进行捏合时,场景变得越来越小。捏真的是什么?

是否改变了整个场景的规模?它是否将相机移近?

我想以编程方式实现相同的效果。

我应该怎样做才能获得同样的效果?

3 个答案:

答案 0 :(得分:4)

当您捏住相机的视野(xFoxyFov属性)时,它们会发生变化。改变视野并不是最好的缩放方式,因为它可以大大改变视角。

将相机移近物体是一个很好的解决方案。

另请注意"免费相机"行为适用于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)
}

有两个(次要的)问题可以通过一些额外的代码来解决。一个是值可以变为负值,此时图像从里到外翻转。另一个是,如果真的旋转滚轮,鼠标加速会导致缩放级别过快。对这两个方面的限制都是一个好主意,但在我的应用中,行为很好,因为它在上面。