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 грузит
По мере разработки буду дописывать новости в комментарии и кидать ссылки на них сюда.
От сообщества счел бы необычайно полезным поделиться исходниками рабочих конвертеров, если такие завалялись в кармане.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
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, про виски я шутил =)
Рад был помочь, самому было интересно.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.