SceneKit并使用自定义相机类

时间:2019-01-06 05:38:26

标签: scenekit pointofview

我正在尝试创建一个自定义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渲染,而不是我定义的那个。

想知道是否有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我不使用.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)