WIP - Warcraft 3 To Unity Converter

Добавлен , опубликован
Здравия желаю.
В данном ресурсе я хотел бы делиться с вами прогрессом по написанию одной наработки, которая очень кстати придет к нашему сообществу.
Данная наработка позволяет конвертировать модели из Warcraft 3 и полноценно использовать их в движке Unity. Огромное спасибо за данную идею хотел бы отдать юзеру alexprey, который поделился ссылками на исходники формата mdx и своими соображениями по этому поводу.
Итак, в базе нашего сайта хранится огромное количество моделей этого формата.
Грех было бы их не использовать. Работу над наработкой я начал довольно-таки давно, однако недавно один из наших пользователей NilasAran_39 начал выкладывать модельки на тему Age Of Empires, чем вызвал во мне бурю негодования (мы ж тоже хотим, что нам вымирающий варкрафт!). Но вместо того чтобы высказывать претензии автору моделей, (мол, клепай тут нам fbx!) я решил пойти другим путем и закончить начатую когда-то работу.
Ну и вот что мы имеем сейчас
Собственно мы можем конвертировать модельки.
Особо сложного в этом нет ничего, почти все было взято с чужой наработки. Местами подменил код на нативный код юнити там, где похожие штуки уже были написаны, местами обрезал код.
Применил матрицу (стандартная ориентация W3 - XZY вместо привычной нам XYZ). И вуаля.
Изначально перенос данных планировалось сделать тупо "перетащи в папку проекта и используй". Однако в новой юньке что-то поменялось и приходится использовать отдельное окошко (надеюсь временно), в которое мы перетаскиваем наши модельки.
Но, есть огромные но

НО

  • Но пока что я не смог преобразовать текстурки в blp.
  • Пока что - не разбирался с анимациями.
  • И пока что не прикрутил использование варкрафтовского mpq.
Я испробовал целых 3 конвертера в blp, однако все эти не подошли - были заточены под формат World Of Warcraft. Но поиски продолжаются.

Планируемые фичи

Тут я думаю вполне понятно, что хотелось бы добавить. В идеале набор таков:
  • Поиск и использование нативных архивов варкрафта
  • Конвертирование текстур в формат PNG/DDS в один клик
  • Конвертирование моделей в формат, понятный юнити в один клик (с набором анимаций и зависимостями от текстур)
  • Возможно, встраивание наработки как "превьювера моделей" на наш сайт.

Чейнджлог

Начало работы над blp
Небольшой прогресс - гемор, но blp грузит
По мере разработки буду дописывать новости в комментарии и кидать ссылки на них сюда.
От сообщества счел бы необычайно полезным поделиться исходниками рабочих конвертеров, если такие завалялись в кармане.
`
ОЖИДАНИЕ РЕКЛАМЫ...
27
Делаю тихонько blp, что-то даже выходит, пришлось немножко потрудиться правда.
Однако не всё так гладко как хотелось бы. Вот пример иконки, которую я взял отсюда.
Вот такая она в оригинале:
А вот так она читается у меня:
И так любое blp - чутка смещается и с линиями
Загруженные файлы
29
Extravert, mip-map levels учитываешь? Я читал, что blp - это формат из jpg картинок, только собранных в кучку с сохранением mipmap слоев
Вдруг поможет
27
Да я тоже за мипмапы подумал.
Но пришел в тупик.
Решил вывести все мипмапы от картинки друг под другом и вот что получил:
Здесь можно наблюдать, что бага то характерна в принципе для промежутка.
Если бы это было дело за мипмапом, то картинка бы наблюдалась такая на разных участках, наверное, чтобы можно было это как-то сложить. Но цветная полоса строго в определенном месте на всех мипмапах.
Поправь меня если я не прав или можно предложить что-то тут с ними сделать
Еще есть предположение что это каналы и их надо свапать
Загруженные файлы
29
Extravert, ну кст да, как вариант, но судя по той ссылке что я тебе скинул там два возможных формата стандартный bmp или jpg
26
хорошая вещь задумана. про blp - если UV карта присутствует в конверте, то для меня уже нет проблемы, можно и ручками все текстуры переконвертить. гораздо больше жу норм конверт аним
4
Самый лучший конвертер для blp - BlpLab. Способен сконвертировать как один файл, так и всю папку.
Загруженные файлы
34
Extravert, спроси у hanabishi, он вроде в свое время писал какой то популярный конвертер в blp (может и blplab) не помню уже.
27
очень забавно себя ведет вся эта штука.
Если сохранять это на диск, то все работает отменно. Или в битмап - нормально. Но если использовать Texture2D - то вот так, косяками. Опытным путем выяснил, что формат хранения данных в этом случае сохранения становится DXT1, что очень странно, потому что подгружая как DXT1 вручную выходит просто шум (однако - не вылетает с еррором, то есть по факту байты то подходят туда).
В общем пошел через заднее место и сделал по вот такой логике:
  • считать байты
  • сохранить на диск
  • считать текстуру
  • пересохранить в пнг (в том формате каналы не переворачиваются :()
  • перевернуть каналы
  • сохранить
Я понятия не имею, что такого нужно сделать, чтобы он сразу считал нормально.
Впринципе это работает, хоть и жопно получилось. Минус только в том, что я немного теряю в качестве концепции - это тупо для редактора, реал-тайм подхватить не получится, ибо требует сохранения в базу ассетов.
Пофикшено!
Решили-таки проблему как создавать текстурку в памяти.
Всё оказалось очень тривиально, самое странное что я убежден что я так уже пробовал делать, может правда пробовал что-то очень близкое к этому, но не это.
За решение проблемы спасибо пользователю MF, с меня бутылка виски
Загруженные файлы
21
Хм, а по поводу этого с Blizzard не возникнет конфликта, мол вы их ресурсы в создании своей игры используете?
29
Локен, читай внимательнее
Итак, в базе нашего сайта хранится огромное количество моделей этого формата.
Эта штука лишь конвертер, остальное за конечными юзерами
23
Extravert, про виски я шутил =)
Рад был помочь, самому было интересно.
29
Extravert, теперь разбор анимашек :3
или не?
Тут немного нарыл в помощь
27
alexprey, пока отошел, делать редактор логики свой тот. Ну на самом деле с ГУИшкой дерева там маюсь, оно и тут тоже пригодится для MPQ читалки.
я видел этот CrystalMPQ, с него BLP и слизал
Вообще анимашки я пока отложу
  • Сначала на повестке приклеить MPQ-читалку
  • Потом файл настроек, в которых хранить штуки аля путь к варкрафту, папку сохранения и так далее + ГУИ окошко чтобы все это было просто заполнять.
  • Потом извлечение текстурок из папки с моделькой (и если там не все достать их из MPQ) присобачить
  • Сделать фильтрацию по текстуркам, чтобы 20 раз не создавать одинаковые
  • Сделать создание материалов и геймобъектов, чтобы префаб можно было готовый на сцену перетаскивать
  • Затем анимашки
29
Extravert, согласен, я бы с радостью помог, но я не особо шарю как там все это работает
23
alexprey, я тож не шарил. Все что нужно:
  1. Читаешь спецификацию.
  2. Фигачишь реализации.
34
Кстати да, можно же реализовать превьювер. Который будет отображать и уже залитые в базу модели
23
H, как в скайпе заметил Extravert, для этого понадобится как минимум залить на сайт все MPQ файлы варика, как минимум.
34
MF, это не проблема, ну по крайней мере не техническая. Надо будет только ватермарк близзард наложить сверху превьюхи из стандартных текстур и моделей
27
как минимум залить
Если реализовывать отображение текстур, разумеется. Еще можно без текстур сделать просто полигон-мод, как на картинке-превью в этой статье
29
H, на самом деле там не только залить и все будет работать, там очень много проблем, такие как передача параметров в превьювер, способ заливки модели на сайт
34
alexprey:
H, на самом деле там не только залить и все будет работать, там очень много проблем, такие как передача параметров в превьювер, способ заливки модели на сайт
ну я про те модели которые просто в mdx заливают (не в архиве). Из них можно получить все нужные пути (актуально для стандартных текстур), и нестандартные имена (для юзерский текстур которые должны лежать рядом с самой моделью)
Чтобы оставить комментарий, пожалуйста, войдите на сайт.