Включая текстуры при экспорте из Blender в COLLADA/.формат dae для использования в SceneKit

Я могу экспортировать сетки, созданные в Blender для использования в SceneKit, используя COLLADA/.формат dae-однако текстуры не отображаются на устройстве iOS.

кроме того, предварительный просмотр в OS X не откроет файл COLLADA, экспортированный из Blender, - но предварительный просмотр боковой панели тут показать сетку. Какие варианты необходимы при экспорте, чтобы сделать эту работу?

3 ответов


сначала создайте папку scnassets (не обязательно, но полезно)

  1. создать папку на рабочем столе и дать ему расширение ".scnassets"

  2. положите колладу(.файл DAE) вместе с любыми текстурами, которые вы будете использовать в ней.

  3. перетащите папку в свой проект и сохраните как копию, как обычно.

  4. нажмите на папку scnassets, и вы увидите флажок (если не проверить) для преобразования в ось" y " вверх.

назначение текстур вашей модели сцены

  1. нажмите на свой collada(.dae) файл внутри вашего проекта в xcode.

  2. вы должны увидеть свою сцену и на ее левой стороне список камер, огней, материалов и тому подобное. Это ваша елка.

  3. откройте вкладку материалы и нажмите на один из Ваших материалов.

  4. на правой стороне в окне осмотра щелкните на синем шарике сформировал значок (материальный контролер) для просмотра диффузного, зеркальности, и такого этого одного материала.

  5. нажмите на вкладку diffuse, и когда она откроется, у вас должна быть опция цветов и текстур в вашем проекте. Выберите текстуру, которую вы использовали на своей модели в 3d-программе. Пока вы UV правильно развернули их в своей 3D-программе, они должны применяться мгновенно в пределах вашего вида сцены.

что делать, если я хочу изменить свой материал после загрузки моей сцены? Рад, что вы спросили!

для этого мы должны использовать метод entryWithIdentifier класса SCNSceneSource. Я собираюсь использовать swift здесь, потому что это потрясающе! Вот и мы...

  1. получить url вашей сцены(.Дэ) вроде так...

    let url = NSBundle.mainBundle().URLForResource("YourFolder.scnassets/yourScene", withExtension "dae")
    
  2. теперь давайте поместим этот url в использовать...

    let source = SCNSceneSource(URL: url, options: nil)
    
  3. нажать на свой .dae и под графиком сцены-это список элементов, одним из которых является ваша геометрия. Он будет иметь чайник тройника только справа от него, что означает так. Здесь мы будем использовать его название. Допустим, ваша геометрия называется Geo. Используйте его так...

    let yourGeometry = source.entryWithIdentifier("Geo", withClass: SCNGeometry.self) as SCNGeometry
    
  4. теперь у нас есть источник, подключенный к SCNNode под названием yourGeomerty. Позволяет создать новый материал с UIColor как так...

    let newMaterial = SCNMaterial()
    newMaterial.diffuse.contents = UIColor.redColor()
    
  5. в конце концов мы переключим вне старый материал с newMaterial как так...

    yourGeometry.geometry.replaceMaterialAtIndex(0, withMaterial: newMaterial)
    

поиграйте с ним и другими индексами, если у вас есть более одного материала. Можно также использовать класс UIImage для использования другой текстуры вместо цвета.

совет Если вы хотите добавить или удалить что-то из папки scnassets, перейдите в папку проекта, чтобы сделать это, а не xcode. Этот мне потребовалось время, чтобы понять, так что я думал, что избавлю всех от проблем.


файлы Collada не встраивают текстуры, у них есть только ссылки на них. Убедитесь, что ваши текстуры доступны из файла collada, когда вы открываете его в Preview, и обязательно включите текстуры в пакет приложений при создании приложения.


3 вещи, которые я должен сделать, чтобы заставить его работать.

  1. убедитесь, что изображения упакованы в.blend file (это опция в УФ-редакторе)

  2. при экспорте, файл не будет автоматически включать УФ или материалы. существует флажок для включения УФ и материалов в DAE. Я тоже скучал по этому, когда делал это.

  3. Это вам нужно только если вы ставили на игровой площадке. В Дэ не совсем applized, но я смог использовать их scntool в инструментах разработчика для экспорта dae. вот пример командной строки, которую я использовал.

./scntool --convert ~ / документы / искусство/BlenderArt / tableandappleUV.dae --format c3d --output ~ / Documents / Table5.Дэ

обратите внимание на формат c3d. используйте это, и ваша игровая площадка теперь также может распознать dae. (Еще одно примечание: если вы хотите использовать dae на игровой площадке, вам нужно поместить в папку ресурсов площадка)