Как я могу получить доступ к файлам SceneKit, загруженным из Firebase? - PullRequest
0 голосов
/ 19 октября 2019
  • У меня есть приложение ARKit, которое использует распознавание изображений для запуска файлов объектов SceneKit / 3D, особенно для художественных выставок. Недавно я начал внедрять 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" )

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

1 Ответ

0 голосов
/ 21 октября 2019

Решено, сначала добавив функцию, чтобы найти путь к сцене контейнера, в котором есть все мои сцены, а затем используя путь к сцене при извлечении отдельного файла .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)
...