【问题标题】:How to reset SceneKit pointOfView camera如何重置 SceneKit pointOfView 相机
【发布时间】:2019-03-25 19:55:04
【问题描述】:

我是SceneKit 的新手。试图弄清楚,如何将pointOfView 相机重置为原始缩放/位置,以便覆盖场景中的所有节点?

【问题讨论】:

    标签: swift scenekit pointofview


    【解决方案1】:
    @IBOutlet weak var sceneKitView: SCNView! //Your SCNView
    
    var myCamera:SCNNode!  //An object to hold your scene's camera
    

    在 viewDidLoad 中,使用你的相机名称加载它:

    myCamera:SCNNode = scene.rootNode.childNode(withName: "sceneCamera", recursively: true)!
    // sceneCamera is my camera node's name in .scn file
    
    sceneKitView.allowsCameraControl = true //Allow camera control
    

    当你想重置它时:

    sceneKitView.allowsCameraControl = false
    sceneKitView.pointOfView = myCamera
    

    继续编码......... :)

    【讨论】:

      【解决方案2】:

      您可以在SCNCameraController 上使用frameNodes(_:) 方法放置一个摄像头,这样一组节点就会变得可见。

      【讨论】:

      • 这是一个简单的好主意。但是self.sceneView.defaultCameraController.frameNodes(self.scene.rootNode.childNodes) 只是没有生效。
      【解决方案3】:

      只需将默认相机位置和方向设置为所需值即可。使用以下代码:

      func resetCameraToDefaultPosition() {
      
          sceneView.pointOfView?.position = SCNVector3(x: 5, y: 0, z: 5)
          sceneView.pointOfView?.orientation = SCNVector4(x: 0, y: 1, z: 0, w: .pi/4)
      }
      

      另外,正如 @mnuages 建议的那样,您可以使用 defaultCameraController 实例属性来框定场景中具有 3D 几何的所有节点:

      func resetCameraToDefaultPosition() {
      
          sceneView.defaultCameraController.frameNodes([coneNode, sphereNode, cubeNode])
      }
      

      但更好的方法是创建一个新相机。 Here's what Apple documentation says:

      使用具有分配给其相机属性的 SCNCamera 实例的节点来查看场景。节点提供虚拟摄像机的位置和方向,摄像机对象提供视野、焦点等渲染参数。

      let cameraNode = SCNNode()
      cameraNode.position = SCNVector3(x: CGFloat, y: CGFloat, z: CGFloat)
      cameraNode.rotation = SCNVector4(x: CGFloat, y: CGFloat, z: CGFloat, w: CGFloat)
      
      let camera = SCNCamera()
      camera.focalLength = 24
      cameraNode.camera = camera
      

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-06-21
        • 2017-08-28
        • 2016-02-24
        • 2017-06-15
        • 2019-10-20
        • 2016-05-07
        • 2018-03-11
        相关资源
        最近更新 更多