HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Моделирование > [Тутор] Md5 2 mdl (smd)
Конвертинг Id Tech-овских Md5 под формат GoldSrc., Source и P2Mdl.
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
APAMk2
Новичок

Дата регистрации: Sep 2023
Проживает: Бобруйск, Беларусь
Сообщений: 29
Возраст: 17

Рейтинг



Exclamation [Тутор] Md5 2 mdl (smd)

Итак... Вы ностальгатор, или быть может хотите попробовать ради интереса? Не суть.

У некоторых из нас может быть нужда перевести модель формата Md5 в формат, понятный халфе/ксашу, скажем вам нужна моделька из Q1/2, если из Q1 модель вы можете попробовать взять, то вот с Q2 ситуация намного печальнее - формат Md2, повершинная анимация, никто ничего под халфу не конвертировал, закачаешься. Если мы не можем взять модель напрямую из Q2 - возьмём из Ремастеров, в них ситуация намного, НАМНОГО лучше - Md5 и скелетная анимация.

Воды итак навалил уже немало, так что к делу.

Подготовка:
ВАЖНО! В ГАЙДЕ НЕ БУДЕТ ОБЪЯСНЯТСЯ КАК ВСКРЫТЬ РЕСУРСЫ, НЕ МАЛЕНЬКИЕ, QUARK САМИ ДОЛЖНЫ УМЕТЬ СКАЧАТЬ!

Нам нужны следующие тулзы:
Noesis - Тык
Компилятор Paranoia 2 - Тык
Любой граф. редактор способный сохранить адекватный файл .tga (Я использую GIMP).
(Опционально) Просмотрщик моделей Paranoia 2 - Тык

Этап 1:
1 - Открываем Noesis, открываем папку с нужной нам моделью в проводнике (Я для примера взял v_machn из Q2 Remastered).
2 - Из проводника в Noesis перетаскиваем файл *.md5mesh, это геометрия модели, после этого перетаскиваем *.md5anim (набор анимаций) и текстуру (в моём случае skin.png), от всех сообщений программы - отказываемся.
3 - После того, как мы убедились что наша модель работоспособна - переходим в меню File->Export from Preview, выставляем настройки:
Main output type - .smd
Additional texture output - .tga (по факту ни на что не влияет)
Additional animation output - .smd
Flip UV's - ☑
4 - Переименовываем файл с анимациями в anims.smd, trisout.smd во что угодно, лишь-бы оно не мешало в процессе (я переименовал в конечное имя модели, v_machn)
5 - Создаём папку, распаковываем в неё P2Studiomdl, копируем туда файлы которые мы переименовали.
6 - Открываем текстуру в граф. редакторе, если есть возможность изменить режим изображения - меняем на RGB (P2Studiomdl может и скушает индексированную текстуру, но может и не съесть, будем на бить упреждение).
7 - Сохраняем текстуру в формате .tga, копируем в ту-же папку что и предыдущие файлы.
8 - Открываем .smd с геометрией, убеждаемся что название текстуры в развёртке совпадает с именем нашей текстуры, если нет - Ctrl+H, заменить текущее имя на имя нашей текстуры(без формата).
9 - Скачиваем .qc файл из аттача, копируем в ту-же папку, открываем, в $body studio вместо нынешнего значения пишем имя нашего файла с геометрией, без формата.
10 - Вместо текущих $sequence - добавляем свои, можно открыть модель в Blender и уже оттуда посчитать кадры, а можно подсмотреть в исходниках Q2 Remastered.
Формат: $sequence "ИМЯ_АНИМАЦИИ" "anims.smd" frame ПЕРВЫЙ_КАДР ПОСЛЕДНИЙ_КАДР fps 10
11 - сохраняем файл, теперь второй этап.

Этап 2:
1 - Запускаем в нашей папке командную строку (написать cmd вместо пути в проводнике и нажать enter, либо открыть командную строку и перейти по нужному пути).
2 - Пишем studiomdl.exe ИМЯ_НАШЕГО_QC.qc
3 - Ждём компиляции.
4 - Проверяем результат в P2MV.

(Фейко)Luma-текстура:
В Q2 Remastered на некоторое оружие были добавлены Luma-текстуры, это текстуры одинакового с оригинальной текстурой размера, которые содержат лишь те участки, которые должны иметь свечение в игре, сейчас мы закостыляем этот эффект без имплементации Luma-текстурирования.

1 - Сохраните Luma-текстуру в TGA, добавив чёрный фон.
2 - Открываем .smd файл с геометрией, копируем UV-карту основной текстуры, изменяем имя текстуры для которой создана карта на любое (Я использую skin_luma), вставляем нашу доп. карту в самый низ файла перед строкой end, сохраняем.
3 - Переходим в наш .qc файл, вставляем после $freecoords и перед $body studio новые строки:

code:
$texrendermode skin_luma.tga additive $texrendermode skin_luma.tga fullbright

Этими строками мы указываем компилятору, что новая текстура прозрачна и не подвержена влиянию освещения.
3 - Компилируем модель, радуемся костылю.

В аттаче прилагаю пару готовых моделей и их исходники, а также qc-файл (За оригинальный файл, на базе которого он слеплен - спасибо ДМ).

Возможно, туториал будет дополнятся, по мере нахождения новой информации, здравая критика и дополнения приветствуются.

Добавлено 02-11-2023 в 23:51:

Залил мелкую демонстрацию на ютуб: https://youtu.be/k5H589sw0Hg

Вложение: md5tomdltutor.zip (970.2 кб)
Этот файл был скачан 46 раз.

Сообщить модератору | | IP: Записан
Сообщение: 217066

Старое сообщение 02-11-2023 19:51
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



У параноевского компилятора к сожалению есть один баг, а именно - некорректное смещение кадров эвентов на случай, если мы не будем дробить smd-файл анимации на отдельные секвенции, а для простоты и удобства укажем для каждой секвенции один и тот же файл (из ку1 и ку2 ремастеред нам достанется именно что один гигантский smd со всеми кадрами), но с разными их диапазонами.

Если кто-то не понял о чём речь - не беда, вот пояснительный пример из qc

C++ Source Code:
1
$sequence "swim" "anims.smd" frame 39 56 fps 10 loop ACT_SWIM 1 { event 1 1 }
2
$sequence "pain" "anims.smd" frame 57 65 fps 10 ACT_BIG_FLINCH 1
3
$sequence "death" "anims.smd" frame 18 38 fps 10 ACT_DIESIMPLE 1
4
$sequence "attack" "anims.smd" frame 0 17 fps 10 ACT_MELEE_ATTACK1 1 { event 2 3 } { event 2 9 } { event 2 15 }

как видите источником для всех секвенций служит один и тот же файл anims.smd но диапазоны кадров везде разные. Теперь собственно, в чём заключается баг. А баг заключается в том, что когда к такой анимации указываешь эвент, то номер кадра логично указывать уже в локальном диапазоне, а не мучительно вычислять сколько там надо отсчитать с начала. Вот только это не работает. Ладно, мы не гордые и посчитаем смещение в кадрах. Снова облом - и это не сработает. Баг потому что.
А эти эвенты между прочим являются частью ИИ и монстр без них нормально работать не будет. И тут только такое решение, чтобы резать anims.smd на файлики с соответствующими кадрами. Впрочем я сделал исправление для studiomdl, завтра выложу, если не забуду.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 217067

Старое сообщение 02-11-2023 19:52
-
Chyvachok
Житель форума

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 1844

Рейтинг



Есть другой вариант импорта моделей МД5, если есть 3ДС Макс, можно через МД5 импортер от автора Umodel переносить: https://www.gildor.org/downloads

Там все просто, импортировал модель, анимацию, сохранил в смд.

Сообщить модератору | | IP: Записан
Сообщение: 217070

Старое сообщение 03-11-2023 08:20
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Выложил обновлённый компилятор в соответствующей теме.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 217085

Старое сообщение 03-11-2023 14:29
-
APAMk2
Новичок

Дата регистрации: Sep 2023
Проживает: Бобруйск, Беларусь
Сообщений: 29
Возраст: 17

Рейтинг



Монстры, векторы передвижения:
Когда вы попробуете перенести монстра - внезапно обнаружите что он тупит на одном месте и не двигается ни на юнит, но как так? Анимация ведь есть, "я даже ACT_WALK к ней прикрутил"! И вот тут уже начинается "Халф-Лайф это Квейк, но другой", хоть у типичного обывалы в голове и отложено что "Халява" сделана на модифицированном движке Квейка, нововведений явно было много, поэтому Халфа не Квейк до мозга костей.
Суть в том что передвижение монстров считается по своему, в центре модели есть специальная кость, которая тащит за собой всю модель и именно по её передвижению движок считает сколько пройдёт монстр.
Приступим к "прикручиванию" такого вектора:
1 - Открываем наш .qc в Blender с плагином Blender Source Tools
2 - Переходим во вкладку Animation.
3 - Переходим в Pose Mode, выбираем нашу кость по центру.
4 - Для удобства переходим в 2д вид по оси Y.
5 - Переключаемся на следующий кадр, передвигаем модель на нужное расстояние, в Object Properties рядом с координатами X нажимаем точку, это создаст новый ключевой кадр на таймлайне, повторить до конца анимации.
6 - На следующем после последнего кадра создаём новый ключевой кадр с нулевым смещением, выставляем для последнего кадра константную интерполяцию.
7 - Экспортируем нашу анимацию(важно).
8 - В .qc файле в анимации ходьбы добавляем команду LX, это скажет компилятору что нужно считать вектор передвижения по оси X. Также добавляем команду loop.
9 - Компилируем модель, теперь монстр хотя-бы ходит.

Совет:
Ориентируйтесь во время анимации по частям, которые опираются на что-либо (к примеру - ступни), подгоняйте модель чтобы они сходились между кадров, в некоторых анимациях будут слишком рваные кадры, придётся сдвигать на угад/глаз.

В аттаче приложил кривую, но хотя-бы рабочую в плане передвижения модель солдата.

Вложение: soldier.zip (524.3 кб)
Этот файл был скачан 30 раз.

Сообщить модератору | | IP: Записан
Сообщение: 217113

Старое сообщение 04-11-2023 16:01
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Я вчера выложил обновлённую версию studiomdl, которая в теории (потому что я толком не тестировал) позволяет обойтись без всех этих колдунств.
Просто напротив ключевого слова LX в qc пишем число. Это число и будет скоростью ходьбы монстра. Пересобираем, тестируем модель.

Цитата:
APAMk2 писал:
подгоняйте модель чтобы они сходились между кадров, в некоторых анимациях будут слишком рваные кадры

Для первой кваки это полностью не вариант. А вот во второй у всех ходьба равноускоренная, там нормально будет.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 217114

Старое сообщение 04-11-2023 16:07
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 05:35. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Моделирование > [Тутор] Md5 2 mdl (smd)
Конвертинг Id Tech-овских Md5 под формат GoldSrc., Source и P2Mdl.
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024