我想知道我应该如何从实例化的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实例上有一个空指针异常。
我哪里错了?
答案 0 :(得分:0)
audioEngine
是SCNSceneRenderer
协议的属性,而不是SCNRenderer
类。 由于 SCNScene
符合SCNSceneRenderer
,scene.audioEngine
将有效。
编辑:
由于SCNView
符合SCNSceneRenderer
,gameView.audioEngine
将有效。