【问题标题】:SceneKit and using a custom camera classSceneKit 并使用自定义相机类
【发布时间】:2019-06-01 04:56:32
【问题描述】:

我正在尝试创建一个自定义 Camera 类,以便在 SceneKit 的所有级别中重用。

我已经定义了 cameraNode 设置sceneView使用cameraNode pointOfView

定义类:

类 GameCamera:SCNCamera {

let cameraNodeHorizontal: SCNNode!

override init() {
    cameraNodeHorizontal = SCNScene(named: "/GameAssets.scnassets/Camera.scn")?.rootNode.childNode(withName: "GameCamera", recursively: true)

    super.init()
}

func setup(scnView: SCNView) {
    scnView.scene?.rootNode.addChildNode(cameraNodeHorizontal)
    scnView.pointOfView = cameraNodeHorizontal
}

}

ViewController 内部:

private var camera = GameCamera()

private func loadCamera() {
    camera.setup(scnView: self.scnView)
}

场景从我定义的默认 pointOfView 渲染。

想知道是否有人可以提供帮助?

【问题讨论】:

    标签: scenekit pointofview


    【解决方案1】:

    我不使用 .scn - 只是一个基本类,如下所示:

    var cameraEye = SCNNode()
    var cameraFocus = SCNNode()
    
    init()
    {
        cameraEye.name = "Camera Eye"
        cameraFocus.name = "Camera Focus"
    
        cameraFocus.isHidden = true
        cameraFocus.position  =  SCNVector3(x: 0, y: 0, z: 0)
    
        cameraEye.camera = SCNCamera()
        cameraEye.constraints = []
        cameraEye.position = SCNVector3(x: 0, y: 15, z: 0.1)
    
        let vConstraint = SCNLookAtConstraint(target: cameraFocus)
        vConstraint.isGimbalLockEnabled = true
        cameraEye.constraints = [vConstraint]
    }
    
    // Add camera and focus nodes to your Scenekit nodes
    
    gameNodes.addChildNode(camera.cameraEye)
    gameNodes.addChildNode(camera.cameraFocus)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-21
      • 2017-08-28
      • 2016-02-24
      • 2016-11-25
      相关资源
      最近更新 更多