3DS MAX .DAE to MDL? Встречайте: xlDataConverter (alpha)

» опубликован
Долой унылые mdlvis-анимации! Скорпи обещал что-то вкусное, так вот встречайте xlDataConverter и это только начало =)
Это программа для преобразования Collada (DAE) моделей в Warcraft 3 MDL.
COLLADA — это формат, разработанный для обмена между 3D приложениями. Управляется некоммерческой организацией Khronos Group.
COLLADA использует открытый стандарт XML для обмена форматами, которые в противном случае были бы несовместимы.
COLLADA был задуман как промежуточный формат для переноса файлов. Реализована поддержка таких программ, как Maya (используя ColladaMaya); 3ds Max (при помощи ColladaMax); Poser (v.7.0); Lightwave 3D (version 9.5); Cinema 4D (MAXON); Softimage|XSI; Houdini; MeshLab; CityScape, CityEngine, SketchUp, Blender, modo и Strata 3D. Adobe Photoshop с версии CS3. Игровые движки, такие как Unreal engine, Unity и Torque 3D, также поддерживают этот формат.
— Wikipedia.
Немного иллюстраций, что можно делать:

Что эта детка умеет

  1. Конвертировать геометрию, с мешами, с правильными нормалями, с текстурными координатами;
  2. Конвертировать пути к текстурам и забивать их в материалы/слои;
  3. Конвертировать кости. Нет костей? Наплевать, она создаст для каждого объекта кость в центре и перенесет простую анимацию;
  4. Понимать skin-controllers (контроллеры мяса);
  5. Понимать "веса" костей и переводить их как требуется;
  6. Создавать анимации, правильно считать кадры и fps;
  7. Создавать все виды трансформаций warcraft 3;

Что она пока не умеет

  1. Читать более 1 группы полигонов в объекте, это задача номер 1 для след. версии;
  2. Любые массивы (вершин, нормалей, костей и т.п.) ограничены в 32768 элементов (хотя варкрафт ломается уже на 25к вершинах). Если в вашей модели больше - ждите неожиданностей. Планируется исправить до 2 миллиардов;
  3. Простые цвета вместо текстур пока не работают, планируется в следующих версиях;
  4. Нет источников частиц, возможно, будет в след. версиях;
  5. Модель иногда криво расположена относительно основных осей, это исправляется заданием в кости Root нужных трансформаций;
  6. Читает только 3DS MAX формат вершин;
  7. Читает только матричные преобразования;
  8. Могут быть проблемы с файлами, у которых в пути есть русские символы, да гори в аду ты проклятый iostream;
  9. Использует пока только 1 канал у каждой анимации;
  10. Пока только линейная анимация;
  11. Обратная конвертация, планируется в будущем;
  12. Создает много лишних аним, потом разберемся;
  13. Есть некоторые проблемы с анимацией масштабирования;
  14. Конвертирование Blender DAE анимаций не поддерживается по причине иной структуры матриц трансформаций;

Вот она, вот она программа моей мечты, во-о-от она!

На самом деле не ждите, что эта программа сделает вам чудо, ведь это ещё только alpha версия, всякое случается :D

Как пользоваться?

  1. Создать геометрию, кости, анимации, текстуры на сцене 3DS MAX;
  2. Выбрать Export - .DAE, далее в окошке настроек экспорта обязательно указать ориентацию Z-up;
  3. Перетащить готовую .DAE модель на значок программы, должно появиться окно предупреждений. Если не было ни одного предупреждения, окно закроется и модель можно смотреть в war3me и mdlvis, конвертировать в mdx желательно через mdlvis;
  4. Если есть какие-то предупреждения, читайте, исправляйте в максе, отправляйте сюда итп;
  5. Хотите опции? Они есть. Это аргументы командной строки, включаются они так:
xlDataConverter.exe "model.dae" "model.mdx" опция1 значение1 опция2 значение2
Тоесть перетаскивать модель уже недостаточно, надо задать пути вручную.
» Какие бывают опции (пока на инглише):
        options: name: possible values, first values are default
        (dae to mdl)
            "timeMultiplier":       "1000.0", (real from 1)
                Mdl-relative animation time multiplier (1000 points/second in Warcraft 3 by default);
            "bonesJointsOnly":      "no", "yes"
                "no" if you don't want to convert simple nodes of objects;
            "weightSplitBound":     "0.25", (real from 0 to 1)
                All the bones with the weight less than this value are ignored;
            "invertTexcoordU":      "no", "yes"
                "yes" if you want to invert text coords horizontal;
            "invertTexcoordV":      "yes", "no"
                "yes" if you want to invert text coords vertical (it inverts in warcraft3 by default);
            "convertNodes":         "yes", "no"
                Process nodes information;
            "convertMaterials":     "yes", "no"
                Process materials and textures information;
            "supplementMaterials":  "yes", "no"
                Adds a dummy texture to empty layers and materials without layers;
            "lightOptimize":        "yes", "no"
                Lightweight optimization, removes duplicate vertices 
                but merges different normals of one vertex into single normalized vector. 
                It's recommended to keep it turned on;
            "weedOutSequences":     "yes", "no"
                Removes duplicate and intermediate sequences from list;
Схема работы алгоритма "weedOutSequences":
Еще можно приписать через пробел mode auto, тогда она не будет ждать любой клавиши, если есть варнинги.
Если вписать mode manual, она будет в любом случае ждать любой клавиши в конце.

Скачать

Прикрепляю
  • Само приложение xlDataConverter
  • конвертер кватернионов от Toadcop, пригодится для настройки поворота у костей
  • как бонус модель "Дана танцует сальсу"

Исходный Код / Source (Visual C++)

С вами был ScorpioT1000, пейте коктейль Пина колада.


Просмотров: 18 722



» Лучшие комментарии


Scatman #51 - 5 лет назад (отредактировано ) 1
вот результат для dae из blender: xgm.guru/files/100/85454/comments/152759/img.png
правда, в blender нет возможности указать ориентацию Z-up...
прикреплены файлы
ScorpioT1000 #52 - 5 лет назад 1
Scatman, модель вышли сюда или в лс =)
Scatman #53 - 5 лет назад 0
вот и он. текстур пока нет.
прикреплены файлы
ScorpioT1000 #54 - 5 лет назад 1
Scatman, проверил. Во-первых, у меня почему-то ничего не крашится и конвертится. Другое дело там проблемы с анимками, я добавил небольшой фикс и сейчас попробую исправить один "макс-онли" костыль.
Ориентация кстати верная
Нет, с блендером все равно не получится - там матрицы инвертированы, это опять головная боль на неделю. Прогоняйте через макс.
Кто-то пробовал из макса конверт? Где там вебстер, черт его дери)
Haruhi #55 - 5 лет назад 1
Попробовал сконвертировать обычный кубик - почему-то нет одной вершины и, соответственно, трёх граней.
прикреплены файлы
ScorpioT1000 #56 - 5 лет назад 0
модель прикрепляй
программа ничего не писала в варнингах?
Haruhi #57 - 5 лет назад 0
Нет.
А max, как я и говрил, обыкновенный. Просто куб.
прикреплены файлы
ScorpioT1000 #58 - 5 лет назад (отредактировано ) 0
Я вроде как понял. Посмотрим.
Workaround: попробуй прикрепить к кости
Или попробуй дописать в режиме команд: "lightOptimize no"
Haruhi #59 - 5 лет назад 0
Да, помогло.
ScorpioT1000 #60 - 5 лет назад 0
Что именно?
Haruhi #61 - 5 лет назад 0
lightOptimize no

Вот глянь эту модель, программку с фаталом выбрасывает.
прикреплены файлы
ScorpioT1000 #62 - 5 лет назад 0
Ясно, посмотрю все чуть пожже
Вот глянь эту модель, программку с фаталом выбрасывает.
<float_array id="Marvel__Ultimate_Alliance_13122b18_obj-Normal0-array" count="47214">
я же говорю ограничение сейчас 32 тыщи элементов
не понятно вообще, смысл такое в вар запихивать
Haruhi #63 - 5 лет назад 0
D:
Ну хз, парень засунул, норм (конвертируя obj-3ds-mdx). Т.е. проблема только в этом?
ScorpioT1000 #64 - 5 лет назад 0
Надеюсь, да. Мы это поправим позже.
Сначала про куб посмотрю.
Суть в том, что вар будет фейлиться на таком кол-ве вершин, если не при 1, то при нескольких моделях точно.
Насчет ограничения - начали писать в 2009 году, тогда еще все делали лоуполи модели, как Кет сейчас (не в обиду) и это считалось нормальным, а дальше уже разросся по всей программе этот короткий тип данных ) пофиксить можно за час-два.
Haruhi #65 - 5 лет назад 0
И тут много элементов?
прикреплены файлы
WebSter #66 - 5 лет назад 0
Интересно) заценим.
Нет костей? Наплевать, она создаст для каждого объекта кость в центре и перенесет простую анимацию;
fail
КК вроде сконвертились, но все оказались в нулевом кадре.
конвертер кватернионов от Toadcop, пригодится для настройки поворота у костей
Опа, полезная вещь) Она градусы конвертит с той же ориентацией, что задается в висе?
прикреплены файлы
ScorpioT1000 #67 - 5 лет назад 0
Скоро займусь.
WebSter, получалось чтото с костями конвертить? Ты ведь этим занимался, в целом конвертер был сделан для тех кто создает модели персонажей в максе.
Про конвертер в кватернионы, там можно выбрать, но изначально выбрана варкрафтовая ориентация.
WebSter #68 - 5 лет назад 0
ScorpioT1000, не-а, не работает, та же фигня + геометрия портится. Посмотри еще вот такую модельку рабочего, было б круто, если б она экспортировалась)
прикреплены файлы
JaBeN_Симфер #69 - 5 лет назад 0
А можно с моей моделькой попробовать? А то я пока не разобрался в ваших наворотах))
прикреплены файлы
beril #70 - 5 лет назад 0
А с blendera можно будет конвертить ? (в будущем)
ScorpioT1000 #71 - 5 лет назад (отредактировано ) 0
Сейчас работаю над ошибками.
Кубик уже пофиксил.
Brutalus:
lightOptimize no

Вот глянь эту модель, программку с фаталом выбрасывает.
Макс тоже ругается на косяки с joints
While reading or writing a file the following notifications have been raised.
-ERROR: Failed to read array in <source>: #Marvel__Ultimate_Alliance_13122b18_objController-Joints
-Warning: Extra node is not supported in node
-ERROR: Library not found: #Marvel__Ultimate_Alliance_13122b18_objController
-Warning: Extra node is not supported in node visual_scene
У тебя сама модель убитая, а у меня FCollada выпадает при различных проверках и обращениях на несуществующие узлы.
И тут много элементов?
Здесь так же:
While reading or writing a file the following notifications have been raised.
-ERROR: Failed to read array in <source>: #Mesh_0460Controller-Joints
-Warning: Extra node is not supported in node
-ERROR: Library not found: #Mesh_0460Controller
-Warning: Extra node is not supported in node visual_scene
Исправляй модель в максе, только потом конвертируй.
WebSter, вроде с фиксом кубика пофиксилась и геометрия у работника, щас работаю над анимками.
Что-то пока нет продвижений, позже еще попробую...
Tiodor #72 - 5 лет назад 1
покажи нам уже готовые нормальные модели
ScorpioT1000 #73 - 5 лет назад 0
Tiodor, я одну выложил же
ScorpioT1000 #74 - 5 лет назад 0
slayer demon #75 - 5 лет назад 0
ещё б плюс к этой программе плагин,или исправление какое-нибудь для mdlvis,которое исправляло бы коверканье нормалей у моделей,тогда бы совсем хорошо стало.
ScorpioT1000 #76 - 4 года назад 0
вот это будет попроще сделать:
Audes #77 - 3 года назад -2
Проект остановился?
ScorpioT1000 #78 - 3 года назад (отредактировано ) 0
Collada давно не поддерживается, разрабы закрылись, да и варкрафт умер. Для старкрафта уже много тулз, так что юзайте =)
Ну и вот ещё можно попробовать xgm.guru/p/wc3/mdx-3ds-max-importer-exporter
Dr.Vatson #79 - 2 года назад 0
пожизненный лайк за вторую программулину,без нее моделировать бы я не мог,т.к. что мдлвис,что модел эдитор убивают вектора поворота у костей
ScorpioT1000 #80 - 2 года назад 0
Dr.Vatson, хоть кому-то пригодилось. Только в какой-то момент она путает матрицы, особо полагаться на нее не стоит
Андреич #81 - 2 года назад 0
вопрос к пользователям макса...
делаю модельку с анимами в блендере, экспортирую в .fbx, открываю в максе. всё норм, анимы есть, воспроизводятся... после экспортирую из макса в .dae и анимы пропадают...
как правильно экспортнуть модельку с анимами из макса в .dae..?
ENAleksey #82 - 2 года назад 0
Андреич, а зачем конвертировать в .dae, если можно сразу из макса в .mdx конвертнуть, даже с анимациями? Вот NeoDex.
Андреич #83 - 2 года назад 0
ENAleksey:
Андреич, а зачем конвертировать в .dae, если можно сразу из макса в .mdx конвертнуть, даже с анимациями? Вот NeoDex.
я просто динозавр, который только узнал о существовании этой тулы...
ScorpioT1000 #84 - 2 года назад (отредактировано ) 0
Андреич, надо просто забыть об mdx, dae и всём, что с ними связано) не тот век
Андреич #85 - 2 года назад (отредактировано ) 0
ScorpioT1000:
Андреич, надо просто забыть об mdx, dae и всём, что с ними связано) не тот век
не вижу ничего плохого в том, чтоб некоторые модельки конвертнуть в варик...
хотя, если мне не удастся найти способ без создания анимаций с нуля - забью...

адо просто забыть об mdx, dae и всём, что с ними связано
upd: забил...
darkowlom #86 - 2 года назад 2
Андреич, из макса комфортно можно конвертить при помощи NeoDex, своеобразная альтернатива SC2 ArtTools, только для варкрафта
Хех, провтыкал что Алексей уже написал об этом)
Андреич #87 - 2 года назад 0
darkowlom, у меня он отказывается конвертить даже геометрию...
не говоря уже об анимации...
не, возможно, если всё делать изначально в максе то там другой результат будет...
но конвертированный из блендера .фбх он не экспортит...
хотя подозреваю, что просто надо кое-что подправить...
ENAleksey #88 - 2 года назад 0
Андреич, давно уже с этим не работал, но помню, что там геометрию нужно конвертировать в editable mesh, без этого не выходе получается пустая модель. По настройке анимаций есть две статьи на хайве, но при конвертации модели, в которой все анимации в одном файле, ни каких проблем не должно возникнуть.
ScorpioT1000 #89 - 2 года назад (отредактировано ) 4
Дело в том, что на формат COLLADA разработчики забили еще в 2008 году. Он поддерживается максом для старых редакторов и игр, которые все еще развиваются и работают только с коллада. Современные же игры всё чаще юзают FBX.
С другой стороны, коллада умеет очень многие вещи, т.е. хранить целиком сцены или проекты в одном файле. Там неплохой уровень абстракции, есть понятие "библиотека", которая содержит в себе "коллекции". Это касается не только геометрии и анимации, но так же материалов. Кроме того, все параметры тоже могут быть анимированы.
Если надо, я могу выложить сурсы этой тулы, если есть знакомые лоулевел геймдевы, может, что-то накрутят.
Мне лично не интересно ковыряться в варкрафте.
Ладно бы там только с анимацией были косяки, там ведь ещё текстуры неверно натягиваются на нормали (по устаревшей схеме), из-за чего постоянные косяки с освещением.

Выложил исходный код.

Вообще, кому интересно ковырять MDL, там есть хороший парсер формата MDL, загоняющий файл в структуры C++. После этого можно хоть в 3DS, хоть куда конвертировать - вопрос написания конвертера.
Андреич #90 - 2 года назад 0
ENAleksey, с мешем разобрался, но при конверте в редактируемый меш, приходиться заново крепить к костям...
а вот с анимацией до сих по беда...
в mdx конвертит, правильно её называет, времени анимации указывает... но анимка пустая...
ScorpioT1000 #91 - 2 года назад 0
Андреич, а ты у анимки пробовал границы указать другие? Может, кадры есть, а анимка не на тот диапазон указывает
ENAleksey #92 - 2 года назад 0
Андреич, у меня всё нормально было, когда я конвертировал .smd модели из Mount&Blade, анимации корректно извлекались (проблема была лишь в том, что все анимации были в своих файлах, приходилось в максе собирать их и прибавлять значение для старого таймкода каждой анимации). Скинь свой .fbx файл, точно не помню как я раньше делал, посмотрю - вспомню.
Андреич #93 - 2 года назад 0
ENAleksey, вот... простая тестовая моделька без текстур с одной анимкой...
Кстати, нет ли способа конвертить в редактируемый меш без отвязки от костей (я делал через collapse)...

ScorpioT1000:
Андреич, а ты у анимки пробовал границы указать другие? Может, кадры есть, а анимка не на тот диапазон указывает
щас попробую сделать...

upd: есть подвижки...
добавив в modifier list "mesh select" смог экспортнуть модельку с анимками и привязанными костями...
все равно есть проблемка высотой анимации...
щас попытаюсь объяснить поподробней...
когда просто импортируешь модель в макс там 3 объекта...
сузанная (сам меш), Armature (в форме куба) и одна кость...
если сразу же проиграть анимацию, она нормально воспроизводиться, в точности также, как я её делал в блендере...
но если удалить armature то анимация останется, но будет уже немного другой... повороты (rotation) будут также воспроизводиться.. но перемещения (translation) будут как-будто бы обрублены... то есть сдвигаться совсем чуть-чуть...
в данном случае сюзанна будет подниматься вверх совсем немного...
пока что удалось экспортировать только такую "неполную анимацию..."
прикреплены файлы
ENAleksey #94 - 2 года назад 0
Андреич, да, совсем забыл об отвязке костей при применении модификатора Edit Mesh, в этом и была вторая проблема с которой я сталкивался, приходилось вручную прикреплять их обратно (но позднее я, вроде бы, начал делать по-другому, но всё-равно были какие-то проблемы).
Андреич:
добавив в modifier list "mesh select" смог экспортнуть модельку с анимками и привязанными костями...
Эх, если бы раньше узнал, столько времени бы сэкономило...
Андреич:
пока что удалось экспортировать только такую "неполную анимацию..."
Да, у меня раньше так же получалось, потом решил просто добавлять Edit Mesh и прикреплять кости самостоятельно.
Хотя нет, это происходило тогда, когда я поворачивал меш с закрепленным костями на 180 градусов.
Андреич #95 - 2 года назад (отредактировано ) 2
при помощи функции неодекса vertex animation converter таки удалось конвертнуть нормальную анимацию...
опять же не без проблем...
  • это заняло секунд 30 даже для простого меша с одной единственной простой анимкой и одной костью...
  • при экспорте создаёт много лишних костей и дублирует меш, хотя это не сильно увеличивает размер получаемой модельки...
  • дублированный меш привязан к старым костям и воспроизводит всё ту же неполную анимацию...
сейчас попробую, может можно как-то удалить второй меш...

upd: таки удалось экспортнуть модель без лишних костей, мешей с исходной анимацией...
побаловался скининном в animation tools неодекса... при чём есть такой прикол...
что при экспорте в mdx мдлвис всё отлично открывает, но магос закрываетя с ошибкой...
при эспорте в mdl, магос модель открывает, когда пытаешься проиграть анимации меш исчезает...
поэтому приходиться экспортировать в mdl, затем через магос в mdx и тогда всё работает...
неодекс ты упорот..!

однако надо сейчас испробовать экспорт с нормальной моделькой с текстурой и хотя бы 2 анимациями...
upd: с нормальной моделькой не работает...
на выходе ужасный скиннинг, соответственно корявая анимация...
и почему-то только пол модели... (изначально делалась с помощью mirrora но при экспорте в .фбх его уже не было, но обе половинки модели всё равно юзают одинаковую развёртку...)
в общем вот такая жопонька...
кажется, что проще свою игру написать, чем заставить неодекс нормально конвертить анимки в блендера..(
ScorpioT1000 #96 - 2 года назад 2
Андреич, именно поэтому я, например, на Кампанию Джека забил в свое время. Это всё уже отсталые технологии. Лучше найди геймдев проект и присоединись к ним)
Андреич #97 - 2 года назад 0
Лучше найди геймдев проект и присоединись к ним)
и своих идей для воплощения хватает..)