Как я могу получить доступ к файлам SceneKit, загруженным из Firebase? - xcode


0
  • У меня есть приложение ARKit, которое использует распознавание изображений для запуска файлов SceneKit/3D Object, особенно для художественных выставок.Недавно я начал внедрять Firebase Storage, чтобы уменьшить общий размер загружаемых файлов и, скорее, загружать 3D файлы по требованию для каждой выставки, которую использует пользователь!

Я успешно настроил приложение для загрузки файлов SceneKit в мобильное хранилище, но сейчас я застрял в том, чтобы выяснить, как прочитать файл из определенного загруженного места и продолжить работу с ним в процессе распознавания изображений /AR.

Раньше, когда файлы Scenekit включались в первоначальную загрузку через каталог Scenekit в папке приложения, я читал их так:

   let ShipScene = SCNScene(named: "art.scnassets/ship.scn")

Теперь я обновил его, чтобы прочитать ту же строку, что и URL-адрес загрузки, но распознавание изображений не работает.

Я предполагаю, что моя проблема в том, что он не читает правильное местоположение, или я могу использовать неправильную функцию. Я запустил приложение на свой телефон с помощью TestFlight, но все равно не повезло.

// Downloading from firebase to device URL

  let shipURL = documentsURL.appendingPathComponent("file:///var/mobile/Containers/Data/Application/QZ_Gallery/SceneKitFiles/ship.scn", isDirectory: true)


 let shipDownload = shipRef.write(toFile: shipURL)

 // Attempting to pull the file from the downloaded location

 let ShipScene = SCNScene(named:"file:///var/mobile/Containers/Data/Application/QZ_Gallery/SceneKitFiles/ship.scn" )

*** Мой вопрос в последней строке кода, который я включил. Я пытаюсь убедиться, что я ищу в нужном месте, чтобы получить файлы, которые были загружены, или если используемая функция даже подходит для поиска файлов, хранящихся локально на мобильном устройстве.

Источник
  •  53
  •  1
  • 6 май 2020 2020-05-06 14:14:18

1 ответ

0

Решается, сначала добавив функцию, чтобы найти путь к сцене контейнера, в котором есть все мои сцены, а затем используя путь к сцене при извлечении отдельного файла .scn. Сцена загружается из Firebase Storage (без использования базы данных в реальном времени) и должным образом интегрируется с распознаванием изображений.

      let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!

                  let scenePath = documentsURL.appendingPathComponent("Scenes")
                  if(!FileManager.default.fileExists(atPath: scenePath.absoluteString)) {
                      do {
                          try FileManager.default.createDirectory(atPath: scenePath.absoluteString, withIntermediateDirectories: true, attributes: nil)
                          } catch {
                              print(error.localizedDescription);
                          }
                  }

           // Start Download, writing to a file




        let sceneURL = scenePath.appendingPathComponent("Ship.scn", isDirectory: true)
  • 6 май 2020 2020-05-06 14:14:20