从实例化的SCNScene获取SCNRenderer

时间:2015-12-01 10:20:14

标签: swift scenekit

我想知道我应该如何从实例化的SceneKit场景中提取SCNRenderer。我正在尝试获取位于SCNRenderer中的AVAudioEngine,以便我可以将音频过滤器应用于我的节点。

以下是覆盖相关代码的覆盖didFinishLaunching部分:

override func awakeFromNib() {
    // create a new scene
    let scene = SCNScene()
    // create and add a camera to the scene
    let cameraNode = SCNNode()
    cameraNode.camera = SCNCamera()
    scene.rootNode.addChildNode(cameraNode)
    // place the camera
    cameraNode.position = SCNVector3(x: 0, y: 0, z: 15)
    // set the scene to the view
    self.gameView!.scene = scene
    gameView.delegate = self
}

如果有人可以给我一个指针,我会非常感激,因为我能够在位置上运行声音,但现在我仍然坚持使用AVEngine图来做类似的事情:

AVAudioInput> AVAudioUnitDistortion> AVAudioOutput并开始做一些有趣的混音。

编辑:

这就是我对引擎的想法:

    distortion = AVAudioUnitDistortion()

    let URL = NSURL(fileURLWithPath: dataPath+"/welcome.aiff")
            if(NSFileManager.defaultManager().fileExistsAtPath(dataPath+"/welcome.aiff")){
                            let source = SCNAudioSource(URL: URL)!
                source.volume = 30.0
                source.reverbBlend = 50.0
                source.rate = 0.9
                let clip = SCNAudioPlayer(source: source)
                engine = clip.audioNode!.engine
                distortion.loadFactoryPreset(AVAudioUnitDistortionPreset.SpeechRadioTower)
                engine.attachNode(distortion)
                engine.connect(clip.audioNode!, to: distortion, format: nil)
                engine.connect(self.distortion, to: engine.outputNode, format: nil)
                return clip

但我现在在失真AVAudioUnitDistortion实例上有一个空指针异常。

我哪里错了?

1 个答案:

答案 0 :(得分:0)

audioEngineSCNSceneRenderer协议的属性,而不是SCNRenderer类。 由于SCNScene符合SCNSceneRendererscene.audioEngine将有效。

编辑: 由于SCNView符合SCNSceneRenderergameView.audioEngine将有效。