3D-модель неправильно загружается в Scenekit - PullRequest
0 голосов
/ 26 мая 2018

Поэтому я приобрел 3D-модель автомобиля для отображения в моем приложении ARKIT. Папка состояла из разных форматов моделей и одного изображения.

Я перетащил файл .dae в свой проект.Это структура файла.

enter image description here

Однако при добавлении в сцену ось полностью отключается и загружается неправильно.Он не загружал полную модель с текстурами, а загружался выше меня.

См. Пример:

enter image description here

Затем я решил загрузить файл .Blender в Blender и снова выполнить экспорткак файл colada .dae.

enter image description here

Это был результат при добавлении в мой проект.

enter image description here

enter image description here

При загрузке его в реальном мире появляется половина машины, где ястоял в смехотворно большом масштабе.

Я пробовал проект с отдельной моделью, и он работал нормально.У кого-нибудь есть идеи, как я могу работать с 3D-моделью для правильной загрузки в мое приложение?

1 Ответ

0 голосов
/ 31 мая 2018

У меня возникли проблемы с масштабированием приобретенных моделей.Вы не должны публиковать ссылки, но они слишком большие для вставки - я следовал этому руководству, чтобы уменьшить размеры моделей и повернуть их в нужное положение в блендере перед экспортом.

https://jibransyed.wordpress.com/2014/06/05/how-to-correct-scale-and-rotation-of-static-blender-models-for-unity/

На большинстве моделей я использую это для загрузки:

func loadCollada(sceneName: String, objName: String) -> SCNNode
    {
        let vScene = SCNScene(named: sceneName)!
        let gObject = vScene.rootNode.childNode(withName: objName, 
 recursively: true)!
        return gObject
      }

На некоторых более крупных моделях мне пришлось сделать это следующим образом:

func collada2SCNNode(filepath: String) -> SCNNode
{
    let returnNode = SCNNode()
    let scene = SCNScene(named: filepath)
    for vNode in (scene?.rootNode.childNodes)!
    {
        returnNode.addChildNode(vNode)
    }
    return returnNode
}

Затем установите Y UP: scntool --convert fighter0.dae - отформатировать c3d - output out.dae --force-y-up --force-interleaved --look-for-pvrtc-image

...