Ленивая переменная для воспроизведения звука при обнаружении эталонного изображения

Я хочу воспроизвести отдельные аудиофайлы из эталонных изображений.

Могу ли я использовать lazy var для загрузки аудиофайла, а затем использовать

func getNode(withImageName name: String) 

для запуска, какой звук воспроизводить?


person skynard    schedule 02.08.2020    source источник


Ответы (1)


Да, можно.

Если вы хотите знать, как использовать SceneKit positional audio, прочтите это опубликовать.

Если вы используете RealityKit positional audio в своем приложении, прочтите этот пост .


Посмотрим, как может выглядеть ваш код для lazy var:

 lazy var geoAndAudioNode: SCNNode = {
    
    guard let scene: SCNScene = SCNScene(named: "pixar.usdz"),
          let node: SCNNode = scene.rootNode.childNode(withName: "model", 
                                                    recursively: true)
    else { return SCNNode() }
    
    let myPath = Bundle.main.path(forResource: "audio", ofType: "mp3")
    let myURL = URL(fileURLWithPath: myPath!)
    let mySource = SCNAudioSource(url: myURL)!
    
    let audioNode = SCNNode()
    let player = SCNAudioPlayer(source: mySource)
    node.addChildNode(audioNode)
    audioNode.addAudioPlayer(player)
    
    return node
}()

А вот как ваш код может выглядеть внутри renderer метода:

extension ViewController: ARSCNViewDelegate {
    
    func renderer(_ renderer: SCNSceneRenderer,
                 didAdd node: SCNNode,
                  for anchor: ARAnchor) {
        
        guard let imageAnchor = anchor as? ARImageAnchor,
              let imageName = imageAnchor.referenceImage.name
        else { return }
                    
        let geometryNode = retrieveNode(name: imageName)
        node.addChildNode(geometryNode)
    }
    
    func retrieveNode(name: String) -> SCNNode {
        
        var node = SCNNode()
        
        switch name {
            case "geoAndAudioImage": node = geoAndAudioNode
            default: break
        }
        return node
    }
}
person Andy Fedoroff    schedule 05.08.2020
comment
Я смог наткнуться на него с похожим кодом и некоторыми учебными пособиями. Есть чему поучиться, и сообщения тоже будут полезны. - person skynard; 07.08.2020
comment
Стоит ли мне прокомментировать пост для позиционного звука Scenekit здесь или сначала нажать на пост, а затем прокомментировать? - person skynard; 10.08.2020
comment
Тебе решать)) - person Andy Fedoroff; 10.08.2020
comment
Пробуем код из вашего поста в сценарии позиционного аудио. Получение потока 1: фатальная ошибка: неожиданно обнаружено nil при разворачивании необязательного значения в строке - person skynard; 10.08.2020
comment
let myURL = URL (fileURLWithPath: myPath!) Похоже, он не может найти звук, хотя я загрузил аудиофайл, который воспроизводится в других проектах, которые я создал. - person skynard; 10.08.2020
comment
Может быть, ваш аудиоформат не читается внутри SceneKit? - person Andy Fedoroff; 10.08.2020
comment
Читается. Я использую его в другом экземпляре и отлично играет. Я не использовал пакет раньше для воспроизведения звука, но он моно. имена файлов кажутся правильными. - person skynard; 10.08.2020
comment
let myPath = Bundle.main.path (forResource: приветствие Марии, молитва моно, ofType: mp3) let myURL = URL (fileURLWithPath: myPath!) let mySource = SCNAudioSource (url: myURL)! - person skynard; 10.08.2020
comment
Отправьте мне этот файл через ресурс FilesSharing. Я это проверю. - person Andy Fedoroff; 10.08.2020
comment
Не знаю, куда загрузить файл. Я предполагаю, что это не PasteBin? - person skynard; 10.08.2020
comment
Позвольте нам продолжить это обсуждение в чате. - person skynard; 11.08.2020
comment
dropmefiles.com - person Andy Fedoroff; 11.08.2020
comment
Спасибо, расскажу о результате. - person Andy Fedoroff; 11.08.2020
comment
Спасибо!! Avaudiomixing выглядит как отличный инструмент для реального управления звуком. Надеюсь, он соответствует этому. - person skynard; 11.08.2020
comment
AURemoteIO.cpp: 1590: Начало: сбой AUIOClient_StartIO (561015905) 2020-08-11 16: 28: 52.940425-0700 проводной звук [1267: 753773] [avae] AVAEInternal.h: 109 [AVAudioEngineGraph.mm:1544:Start: ( err = PerformCommand (* ioNode, kAUStartIO, NULL, 0)): ошибка 561015905 - person skynard; 12.08.2020
comment
Я вижу, как сфера движется, но звук не воспроизводится - person skynard; 12.08.2020
comment
Я установил звук на 0,0, прошу прощения за такую ​​глупость. новобранец. - person skynard; 12.08.2020