如何防止SceneKit在设备旋转时改变相机的FOV位置?

问题描述 投票:0回答:1

在没有任何代码处理旋转或改变任何东西的情况下,当我的设备从纵向旋转到横向时,在SceneKit视图中加载并居中的模型会改变透视、缩放和拉伸。

ViewController有一个SceneKit视图,它固定在父视图的顶部、底部和侧面。即使在旋转时也能确认坚持。

需要的设备是iPhone SE到12.9的iPad Pro。

在iPad上,这种视觉问题大大减少,但在iPhone上,变形和缩放以及透视变化是惊人的明显。

我不知道如何嵌入照片,否则我会向你展示,但如果模型是正面和中心,并且在纵向iPhone上是1英寸乘1英寸的正方形,当你旋转到横向时,它变成了0.25英寸垂直0.5英寸水平。

这里是设置场景的代码。

        let scene = SCNScene()
        let shipScene = SCNScene(named: "merchant.scn")

        guard let shipNode = shipScene?.rootNode.childNode(withName: "merchant", recursively: true)
        else
        {
            fatalError("ShipModel is not found!")
        }

        self.shipNode = shipNode
        self.shipNode?.position = SCNVector3(x:0, y:0, z:0)
        scene.rootNode.addChildNode(self.shipNode!)

        let lightNode = SCNNode()
        lightNode.light = SCNLight()
        lightNode.light?.type = .omni
        lightNode.position = SCNVector3(x:0, y:2, z:10)

        let cameraNode = SCNNode()
        self.cameraNode = cameraNode
        self.cameraNode?.camera = SCNCamera()
        self.cameraNode?.position = SCNVector3(x:0, y:0, z:8)
        self.cameraNode?.addChildNode(lightNode)

        scene.rootNode.addChildNode(self.cameraNode!)
        self.sceneKitView?.scene = scene
        self.sceneKitView?.showsStatistics = false
        self.sceneKitView?.backgroundColor = #colorLiteral(red: 0.08822073042, green: 0.08822073042, blue: 0.08822073042, alpha: 1)
        self.sceneKitView?.allowsCameraControl = false

类中没有发生其他事情,但拉伸、缩放和透视变化发生在设备旋转时。

它们在iPhone上更严重,但在iPad上大大减少。

camera rotation scenekit fieldofview
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.