Согласно WWDC 2013 What's new in SceneKit целевых геометрий Морферы может содержаться в файле .dae:Как загружать объекты SCNMorpher из контроллеров морфинга Collade .dae в SceneKit?
.Все морфинг информации и анимации могут быть загружены из файла DAE или вы можете создать все программно «
У меня есть файл collada .dae, который содержит контроллеры морфинга. Файл был создан экспортером Collada от Blender, с выбранным «Include Shape Keys». Это преобразует ключи формы Blender в контроллеры морфологии Collada. Когда я проверяю полученный файл, я могу видеть ключи формы, перечисленные после основной геометрии в <library_geometries>
. выглядеть следующим образом:
<geometry id="Octopus-mesh_morph_Rest" name="Rest">
<mesh>
<source id="Octopus-mesh_morph_Rest-positions">
где Rest
это имя ключа формы. Затем этот заголовок следует за геометрией для ключа формы/морфинга.
Ведь геометрия определяется, есть <library_controllers>
:
<library_controllers>
<controller id="Octopus-morph" name="Octopus-morph">
<morph source="#Octopus-mesh" method="NORMALIZED">
<source id="Octopus-targets">
<IDREF_array id="Octopus-targets-array" count="1">Octopus-mesh_morph_Rest</IDREF_array>
<technique_common>
<accessor source="#Octopus-targets-array" count="1" stride="1">
<param name="IDREF" type="IDREF"/>
</accessor>
</technique_common>
</source>
<source id="Octopus-weights">
<float_array id="Octopus-weights-array" count="1">0</float_array>
<technique_common>
<accessor source="#Octopus-weights-array" count="1" stride="1">
<param name="MORPH_WEIGHT" type="float"/>
</accessor>
</technique_common>
</source>
<targets>
<input semantic="MORPH_TARGET" source="#Octopus-targets"/>
<input semantic="MORPH_WEIGHT" source="#Octopus-weights"/>
</targets>
</morph>
</controller>
</library_controllers>
Как я могу получить доступ к этим трансформироваться контроллеры изнутри SceneKit? В редакторе сценариев Xcode нет признаков того, что контроллеры морфинга были распознаны, например, нажатие на воспроизведение ничего не делает, папка анимаций пуста, и кроме базовой геометрии нет дополнительных геометрий.
Когда я загружаю узел, он не имеет прикрепленного объекта morpher
и никаких кнопок анимации. Я попытался найти дерево для записей с именем «Отдых», но ничего не существует.
let collada = SCNScene(named: "octopus.dae", inDirectory: "art.scnassets", options: nil)
let octopus = collada?.rootNode.childNodeWithName("Octopus", recursively: true)
octopus?.position = SCNVector3(0,-2,0)
print(octopus?.morpher?.animationKeys) //nil
print(octopus?.animationKeys) //Optional([])
Кому-нибудь удалось загрузить цели SCNMorpher из контроллеров морфинга файла Collada .dae? Может быть, это проблема с экспортером Blender .dae? Ответы Objective-C, а также приветствие Swift. Благодарю. не
EDIT
Я также попытался использовать NSBundle
загрузить .dae и размещение .dae как внутри, так и вне папки art.scnassets
, чтобы увидеть, если это имеет значение, но до сих пор нет кости:
let collada = NSBundle.mainBundle().URLForResource("octopus", withExtension: "dae")!
let sceneSource = SCNSceneSource(URL: collada, options: [
SCNSceneSourceAnimationImportPolicyKey : SCNSceneSourceAnimationImportPolicyDoNotPlay
])
let octopusDae = sceneSource?.entryWithIdentifier("Octopus", withClass: SCNNode.self)
//let deform = sceneSource?.entryWithIdentifier("Rest", withClass: SCNGeometry.self)
print(sceneSource?.entriesPassingTest(){(entry, id, stop) in return id.containsString("Rest") })
print(octopusDae!.morpher)
print(octopusDae!.animationKeys)
EDIT 2
мне удалось получить эту работу с .obj файлов, экономя каждую форму ключ в виде отдельного файла .obj. Но мне бы очень хотелось, чтобы эта работа работала с файлами Blade .dae, так как это сделало бы итеративную разработку и работало бы с моделями с большим количеством клавиш формы, что намного проще (плюс, есть некоторые странные причуды для работы с файлами Blender .obj в SceneKit , например, все координаты текстуры, по-видимому, перевернуты вертикально). Вся необходимая геометрия находится в файле .dae. Я просто не могу заставить SceneKit увидеть его.
Эй, Джон, БОЛЬШАЯ РАБОТА. Это действительно решило мою проблему. Я узнал, что размер файла моей модели был значительно увеличен (от 5 до 100 мб). У моей модели много ключей формы для мимики (около 50, я думаю). Действительно ли добавление контроллеров экземпляров оказывает такое большое влияние на размер файла? –
Джон, вы имеете в виду, что Blend с арматурой и shapekeys на самом деле не будет работать или правильно переводиться при использовании вашего инструмента? Я пробовал и не получал исправленного dae с shapekeys. – user2153553