Loved KisKa писал(а):
86051451Немного тыкал эту версию и пихал ее в godot (используя официальные билды движка от esotericsoftware с встроенным Spine Runtimes).
Пробовал запустить две модельки из примеров этой версии Spine, что тут на раздаче валяется. Как уже и писали - есть намеренный софтлок на модели из этой версии, но это решается заменой внутри *.spine-json > "spine":"3.8.75" на "spine":"4.1.23-beta". Я использовал экспорт в json, изменив тип файла на spine-json.
Хотя судя по всему версия spine godot не хочет поддерживать анимацию цветности или что-то в этом роде. Я не особо пытался разобраться, но судя по логу из ошибки при попытке завести одну из моделей делаю такой вывод (возможно в новой версии spine называет это внутри json файла как-то по иному, я не знаю.) Но вот другую модельку из примеров удалось заставить работать в целом без проблем.
Хотя заметил что сам godot для spine немного более баганый и не делает всю работу по экспорту моделек в проект. Приходится в ручную создавать ресурс SpineSkeletonDataResource и добавлять в него .atlas и .spine-json.
Возможно еще есть проблемы со скинами, но это судя по модели из официальных примеров. Пока не много тестил, возможно потом еще потыкаюсь.
А так мало ли кому полезно будет.
Как там в юнити дела обстоят я не знаю, но факт что есть лок на версию - это правда, хотя я и не нашел где именно оно находится и как работает.
Эксперементируя с JSON файлами из 3.8 и 4.2 я нашел ряд переименованных атрибутов, которые после простого search & replace фиксят все кроме блока анимации. Удалив в блоке анимации все кроме одной, я получил корректно загруженный и рабочий пример Spineboy Pro экспортированный из 3.8.75 в Godot с райнтаймом 4.2.
Таким образом обойти софтлок явно можно!!! 
В анимациях же все сложнее... Во первых там сменился формат хранения данных curve. Вместо нескольких отдельных переменных (curve, с2, с3, с4 ) стал одноименный массив (curve: [...] ). Причем пока не понимаю, как быть в ситуации когда заданы не все точки кривой (из серии заданы только с2 и с4, пропустив начальную и 3-ю точку). В примерах Spine 4.2 везде всегда заданы все точки и там бывают варианты с 8 значениями, когда в 3.8.75 только из 4-х (но это явно не проблема). Попробую покрутить кривые в Spine и сделать доп. экспорты, чтобы понять что там вообще за значения он сохраняет и как обрабатывать это при конвертации.
Второй момент с "deform" блоком анимаций. Судя по всему начальная структура теперь называется "attachments", а сами значения обернуты внутри в тот самый deform. Это можно переделать пересобрав JSON.
Возможно будут еще какие-то проблемы, но пока это все что я нашел на примере Spineboy Pro.
В итоге на днях попробую запилить скрипт для автоматической переборки и конвертации JSON файлов, напишу тут по результатам.
silverfrost писал(а):
86589459В итоге на днях попробую запилить скрипт для автоматической переборки и конвертации JSON файлов, напишу тут по результатам.
Сначала о хорошем. Я написал рабочий конвертер на Python и скомпилировал его в исполняемый exe файл через Auto PY to EXE. Исходный код, exe-шник, а также тестовые файлы Spineboy в json из 3.8 и 4.2 по ссылке в архиве:
https://mega.nz/folder/m09CASLA#ibm0vZtyqnbuI2WCF859qQ
Процесс работы выглядит так:
1) делаете export вашего проекта из Spine с настройками по умолчанию (т.е. формат файла .json)
2) копируете exe или py скрипт в папку экспорта и запускаете там (для запуска скрипта в командной строке CMD открываете эту папку и выполняете: py spine-converter.py)
3) если все ок, то получаете на выходе новый файл с расширением .spine-json
4) импортируете новый файл в ваш движок с Spine рантаймом 4.2
Теперь о плохом. Анимации воспроизводятся немного неточно и не всегда корректно. К сожалению, между 3.8 и 4.2 разрабы зачем-то изменили формат хранения данных в кривых curves с % значений на абсолютные с привязкой ко времени. В прошлом сообщении я сильно поторопился написав "это явно не проблема", т.к. это стало основной проблемой при написании конвертера. Я отчаянно пытался понять какие формулы они использовали для конвертации, но не во всех случаях мне это удалось.
Лучше всего конвертируются кривые анимации цвета (там только 1 последнее значение из 16 иногда чуть-чуть отличается). Хуже всего дела обстоят с rotation. В тестовом примере в анимации ходьбы руки вращаются дёрганно и в другом направлении. Анимации кривых в scale/shear/translate тоже не точные, но значения рассчитанные мной довольно близки к тем, что выдает спайн в 4.2. Собственно процесс написания у меня был такой - смотрим все кадры анимации в 3.8 и сравниваем с тем что выдал экспорт из 4.2. Правим формулы расчета, запускаем конвертер и смотрим что посчиталось. Повторяем, пока все значения кривой в каждом кадре конвертера не совпадут или хотя бы не будут достаточно близкими к экспорту из 4.2.
Если кто-то сможет улучшить мои формулы, то прошу сообщить их в треде или выложить следующую версию исходного кода конвертера. Также если вы столкнетесь с ошибками, то можете прислать мне ваш файл json и я попробую доработать код, чтобы их исправить.
Если не доверяете моему exe-шнику (как и должны), то вы можете самостоятельно скомпилить py файл, это делается очень легко:
1) ставим Python (
https://www.python.org/downloads/release/python-3125/, у меня правда была версия 3.10.6)
2) запускаем командную строку CMD
3) ставим Auto PY to EXE выполонив команду:
pip install auto-py-to-exe
4) далее в том же окне выполняем команду:
auto-py-to-exe
5) в открывшемся окне выбираем в поле Script Location выбираем py файл конвертера, кликаем OneFile, разворачиваем Settings и задаем Output directory (куда сохранится exe) и жмем кнопку внизу Convert .py to .exe
6)
profit получаем свой exe для конвертации
В целом текущий вариант достаточен для проверки подходит ли Spine под ваш workflow с вашим движком. Удивлен, что пришлось убить неделю на это, когда по хорошему у них должен быть человеческий Trial с возможностью экспорта и тестирования. Ведь лицензию по любому придется покупать, если выпускать коммерческий проект.