代码之家  ›  专栏  ›  技术社区  ›  Kashif Richard Brightwell

如何重置场景视点相机

  •  2
  • Kashif Richard Brightwell  · 技术社区  · 6 年前

    SceneKit . 想知道,我怎样才能重置 pointOfView 相机到它原来的缩放/位置,这样它将覆盖场景中的所有节点?

    2 回复  |  直到 6 年前
        1
  •  1
  •   mnuages    6 年前

    你可以使用 frameNodes(_:) 方法打开 SCNCameraController

        2
  •  1
  •   Andy Jazz    6 年前

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

    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)
    }
    

    同时,作为 @语言 建议,你可以用 defaultCameraController “实例”属性在场景中用三维几何体框显所有节点:

    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
    

    希望这有帮助。