Найти в Дзене

Конвертация модели из Mass Effect (Unreal Engine 3) в Half-Life (Goldsrc)

Суть: Достать модель из Mass Effect и преобразовать её для использования в Goldsrc для Half-Life.
Это копия моей заметки с Teletype.in и моего сайта. Но так как в связи с блокованиями эти места всё чаще бывают недоступны, то публикую их здесь для сохранности.
Для работы используются следующие инструменты:
1) Umodel Viewer от Gildor - для просмотра и извлечения моделей из игры;
2) GIMP - для правки текстур;
3) Blender - для преобразования моделей в формат smd;
4) Blender Source Tools - расширение для Blender для работы с qc/smd;
5) studiomdl - для сборки модели (для Half-Life подойдёт стандартный);
6) Half-Life Asset Manager - для просмотра моделей;
7) ImageMagick - для расширенной правки текстур.
Открыть "Umodel.exe". В появившемся окне в поле "Path to game files" указать путь до папки с игрой.
Дополнительно можно поставить галку на "Override game detection" и
указать в первом нижнем поле "Unreal engine 3", а во втором "Mass
Effect". Часть игры не важна.
Кликнуть "OK". Появится

Суть: Достать модель из Mass Effect и преобразовать её для использования в Goldsrc для Half-Life.

Это копия моей заметки с Teletype.in и моего сайта. Но так как в связи с блокованиями эти места всё чаще бывают недоступны, то публикую их здесь для сохранности.

Для работы используются следующие инструменты:

1)
Umodel Viewer от Gildor - для просмотра и извлечения моделей из игры;
2)
GIMP - для правки текстур;
3)
Blender - для преобразования моделей в формат smd;
4)
Blender Source Tools - расширение для Blender для работы с qc/smd;
5) studiomdl - для сборки модели (для Half-Life подойдёт стандартный);
6)
Half-Life Asset Manager - для просмотра моделей;
7)
ImageMagick - для расширенной правки текстур.

Открыть "Umodel.exe". В появившемся окне в поле "Path to game files" указать путь до папки с игрой.

Дополнительно можно поставить галку на "Override game detection" и
указать в первом нижнем поле "Unreal engine 3", а во втором "Mass
Effect". Часть игры не важна.

Кликнуть "OK".

Появится окно, предлагающее выбрать пакет, который можно открыть или
произвести над ним различные манипуляции с помощью кнопки "Tools". Также
здесь имеется поле "Filter" для поиска.

-2

Выбрать нужный пакет, например: "BioA_Cat002_100Intro.pcc".

-3

Откроется окно просмотра. Для того, чтобы смотреть только модели, нужно
кликнуть на пункт "Navigate" в меню окна и выбрать в нём пункт "Include
meshes". Для просмотра других моделей нажимать клавиши "PgUp" и "PgDn"
соответственно.

-4

Для экспорта текущей модели, нужно нажать кнопку "Ctrl+X" или кликнуть
на пункт "Tools" в меню окна программы и выбрать пункт "Export current
object".

-5

Программа может предложить указать путь, по которому будут находиться
экспортированные модели (Вкладка "Export", поле "File Layout", "Export
to this folder").

Также можно будет указать формат экспортируемых объектов, например: glTF 2.0 (поле "Mesh Export").

-6

После экспорта в назначенной папке появятся папки: "LightMapTexture2D",
"Material3", "MaterialInstanceConstant", "StaticMesh3", "Texture2D". В
"StaticMesh3" будут файлы модели. В "Texture2D" будут текстуры моделей.

Если у какой-то модели текстура не находится, то можно узнать её имя,
открыв текстовый файл формата "mat" в папке "Material3" или в папке
"MaterialInstanceConstant".

-7

Открыть Blender и импортировать файл glTF 2.0. Выбрать нужный файл.

-8

В настройках Blender'а включить расширение "Blender Source Tools" (Оно находится в разделе "Импорт/экспорт").

-9

О требованиях к модели можно прочитать здесь (на английском языке).

Название материала модели должно быть равно названию текстуры, которая
будет использоваться на модели. Например: Имя текстуры: "AmmoBox01.bmp",
тогда имя материала: "AmmoBox01.bmp".

-10

Решения по конвертации текстуры могут быть разными в зависимости от самих текстур.
Если текстура без альфа канала, то есть не имеет прозрачности, то можно идти следующими решениями:

1.1) Открыть текстуру в GIMP.

-11

1.2) Кликнуть на элемент меню "Изображение" и выбрать "Режим"->"Индексированный".

-12

1.3) "Цветовая карта": Выбрать пункт "Создать оптимальную палитру" и
указать максимальное число цветов: 256. Кликнуть кнопку "Преобразовать".

-13

1.4) Экспортировать изображение как "bmp"-файл. При экспорте в BMP
появится окно с параметрами. Раскрыть пункт "Параметры совместимости" и
поставить крестик в квадрат "Не сохранять данные о цветовом
пространстве". Нажать "Экспорт". Текстура готова.

-14

2) Решение на случай, если нужно преобразовать большое количество текстур за раз. О нём я писал в своей заметке здесь. Для работы сценария необходима Bash-совместимая командная оболочка и инструментарий ImageMagick.

3) Более простое решение, но в нём также используется библиотека ImageMagick.

mogrify -path ./ -compress none -format bmp -define bmp:format=bmp3 -colors 256 *.png

В наборе команд выше изображения формата "png" будут преобразованы в формат "bmp", употребляемый компиляторами моделей.

4.1) Иногда текстура может выглядеть так, как на изображении ниже.

-15

4.2) Чтобы привести это к видимому в игре виду, кликнуть на элемент меню
окна GIMP под названием "Цвет". Выбрать элемент "Составляющие" и
егошний подэлемент "Разобрать". В выпадающем списке "Цветовая модель"
выбрать "RGBA" и нажать "ОК".

-16

4.3) Выбрать слой под названием "альфа-канал" и удалить его.

-17

4.4) В том же меню "Цвет"->"Составляющие": Выбрать "Собрать" и указать "Цветовая модель": "RGB" и нажать "ОК".

-18

4.5) Получаем текстуру в нужном виде.

-19

В Blender перейти в секцию "Scene" и раскрыть пункт "Экспорт в Source".
Выбрать путь экспорта. В качестве "Export Format" указать "SMD". В
"Target Engine" указать "Goldsrc". Нажать на кнопку "Экспортировать".

-20

Нужно сгенерировать "qc" файл. Так как здесь речь о файле без анимаций, объект-декорация. То расширяемое решение следующее:

#!/bin/bash

# Проверка наличия аргументов
if [ $# -lt 2 ]; then
echo "Использование: $0 <имя_qc_файла> "
echo " Например: $0 mymodel.qc body1 body2 body3"
exit 1
fi

# Получение имени qc файла
QC_FILE=$1
shift

# Начало содержимого qc файла
echo "\$cd ./" > "$QC_FILE"
echo "\$cliptotextures" >> "$QC_FILE"
echo "\$scale 50" >> "$QC_FILE"

# Создание строк \$body studio для каждого smd файла
for SMD_FILE in "$@"; do
echo "\$body studio $SMD_FILE" >> "$QC_FILE"
done

# Добавление остального содержимого
echo "\$origin 0 0 0" >> "$QC_FILE"
echo "\$sequence seq-name sequence loop fps 15 ACT_IDLE 1" >> "$QC_FILE"

echo "QC файл '$QC_FILE' успешно создан."

# Создание sequence.smd
echo 'version 1
nodes
0 "root" -1
end
skeleton
time 0
0 0 0 0 0 0 0
time 1
0 0 0 0 0 0 0
end' >> ./sequence.smd

# Выбранный компилятор
studiomdl ./$QC_FILE

Рекомендую изучить этот сценарий.
В командной строке (в терминале) вводим:

build_model.sh AmmoBox01.qc AmmoBox01

И получаем вывод:

QC файл 'Ammobox01.qc' успешно создан.
entering ./Ammobox01.qc
grabbing .//Ammobox01_A.smd
grabbing .//sequence.smd
BMP AmmoBox01.bmp [512 512] (100%) 262912 bytes
---------------------
writing ./Ammobox01.mdl:
bones 388 bytes (1)
sequences 296 bytes (15 frames) [0:01]
vertices 8296 bytes (458 vertices, 180 normals)
mesh 9048 bytes (660 tris, 208 strips)
models 17532 bytes
textures 262996 bytes
total 281212

Модель готова к использованию на картах.

Посмотреть модель с помощью "Half-Life Asset Manager". Чтобы узнать,
какой размер модели относительно модели игрока, во вкладке "Model
Display" поставить крестик у пункта "Show Player Hitbox".

-21

Вот и всё. Если есть какие-то вопросы, советы или пожелания, пишите в комментариях или на почту: arturaiwasan[собака]gmail.com или arturaiwasan16[собака]yandex.ru.