Как загрузить модель SCN или glTF во время выполнения в приложении ARKit? - PullRequest
1 голос
/ 22 января 2020

Каков наилучший способ загрузки 3d-модели с URL-адреса внутри iOS во время выполнения. Я пробовал этот .scn и .gtlf импортер моделей.

Я использую эту платформу https://github.com/prolificinteractive/SamMitiAR-iOS Я загружаю модель следующим образом:

let virtualObjectGLTFNode = SamMitiVirtualObject(gltfUrl: URL(string: 
   "https://raw.githubusercontent.com/KhronosGroup/glTF-Sample- 
    Models/master/2.0/Duck/glTF-Embedded/Duck.gltf")!, allowedAlignments: 
   [.horizontal])
virtualObjectGLTFNode.name = "Duck"

virtualObjectGLTFNode.setAnimationForVirtualObjectRemoving { (node, completed) in
    SceneKitAnimator.animateWithDuration(duration: 0.35 / 2, 
                                   timingFunction: .easeIn, 
                                       animations: {
        let transform = SCNMatrix4MakeScale(0.01, 0.01, 0.01)
        node.contentNode?.transform = transform
        }, completion: completed)
    }
return virtualObjectGLTFNode

Как и выше, я загружаю разные URL-адреса с удаленного сервера, пожалуйста, укажите мне, как я могу загрузить 3d-модели с удаленного сервера. В каком формате я хочу получить URL-адрес.

Ответы [ 2 ]

1 голос
/ 22 января 2020

Похоже, что URL-загрузчик не работает в SamMitiAR фреймворке. Там написано Работа в процессе в разделе Placing and Removing Virtual Objects.

Чтобы узнать, как динамически загрузить модель в приложение ARKit (когда модель недоступна во время компиляции). время), прочитайте эту статью (извините, код Objective- C):

Если вы хотите узнать, как использовать различные подходы при работе с url, пожалуйста, прочитайте следующие сообщения SO:

Для дополнительного чтения используйте документацию Apple:

0 голосов
/ 23 января 2020

Я могу объяснить, что я сделал, что работает сейчас. Я думаю, что мы также попробовали .gltf и .scn и ничего не получили, поэтому мы пришли к такому выводу:

  1. Получить папку, содержащую файл Collada (.dae) и все текстуры.

  2. Как уже упоминалось @AndyFedo, мы прошли через это решение . Если у вас нет файла во время выполнения локально, то вы должны go через этот шаг.

  3. После преобразования необработанной папки Collada в нужную, объясненную на этой странице, с помощью Из copySceneKitAssets я заархивировал новую папку и поместил ее на сервер

  4. Затем вызовите API, сохраните папку zip на устройстве, разархивируйте папку и найдите файл с помощью. Dae файл и получить путь к этому файлу. Я назвал его modelUrl.

  5. let virtualObject = SamMitiVirtualObject (referenceNode: SCNReferenceNode.init (url: modelUrl as URL)! 1025 *

    Это должно сработать.

...