--------------------------------------------------------------
Вступление--------------------------------------------------------------
В этой части мы будем переделывать колесо.
Предполагается, что вы прочли предыдущую часть, в которой были описаны установки и настройки программ.
Если вы сделали всё, что описано в предыдущей части, то у вас должны быть распакованы минимум две папки игры.
Папка Клопа -
Ex Machina\data\models\vehicles\small_car Папка шейдеров -
Ex Machina\data\shaders Хотя, желательно, чтобы были распакованы все, в чём вы убедитесь ниже.
(Мне это проблемы не составляет, так как у меня отдельно лежат распакованные
оригинальные ресурсы всех трёх игр (Махины, Меридиана и Аркады))
----------------------
Итак приступим.
------------------------------------------------------------------
1 Сбор данных о моделях, используемых машиной------------------------------------------------------------------
Заглянув в папку
small_car мы обнаружим там очень много файлов.
Дело в том, что в ней находятся текстуры и модели для всех четырёх "насекомых" - Клопа, Таракана, Муравья и Кузнечика.
На данный момент нас интересуют только колёса Клопа, по идее два, в папке-же находятся семь моделей колёс.
Значит будем определяться, какие именно модели использует Клоп.
Итак, первое, определяем, машину под названием Клоп.
Для этого открываем
Ex Machina\data\if\diz\model_names.xml, вбиваем в поиск "
Клоп" и находим такое:
- Спойлер
- Код: Ctrl+A, Ctrl+C
<Item
id="Sml101"
locForm="0"
value="Клоп" />
Машина -
Sml101 Теперь открываем
Ex Machina\data\gamedata\gameobjects\vehicles.xml и ищем там машину
Sml101, чтобы определить прототипы машины и кабины, получаем:
- Спойлер
- Код: Ctrl+A, Ctrl+C
<Prototype
Class = "Vehicle"
Name = "Sml101"
ParentPrototype = "Sml1"
VisibleInEncyclopedia = "true">
<Parts>
<Part id = "CABIN" Prototype = "sml1Cab01" />
<Part id = "CABIN_SMALL_GUN" Prototype = "hornet01" />
<Part id = "BASKET" Prototype = "fakeCargo" />
</Parts>
</Prototype>
Прототип машины -
Sml1Прототип кабины -
sml1Cab01Далее, в этом же файле ищем прототип машины
Sml1, чтоб определить прототипы колёс и шасси, и получаем:
- Спойлер
- Код: Ctrl+A, Ctrl+C
<Prototype
Class = "Vehicle"
Name = "Sml1"
ResourceType = "VEHICLE"
DiffRatio = "2.0"
MaxEngineRpm = "7000"
LowGearShiftLimit = "1000"
HighGearShiftLimit = "2000"
SteeringSpeed = "1.0"
AdditionalWheelsHover ="0.1"
HornSound = "ET_S_HORN01"
DecisionMatrix = "vehiclemain.lua"
LookRadius = "200.0"
IntersectionRadius = "2.5"
TakingRadius = "30.0"
DriftCoeff = "0.3"
MassSize = "2 1 4"
MassTranslation = "0 -0.5 -1.1"
DestroyEffectPiercing = "ET_PS_VEH_EXP1_SMALL"
DestroyEffectBlast = "ET_PS_VEH_EXP2_SMALL"
DestroyEffectEnergy = "ET_PS_VEH_EXP3_SMALL"
DestroyEffectWater = "ET_PS_VEH_EXP2_SMALL"
Abstract = "true" >
<MainPartDescription id = "CHASSIS" partResourceType = "SML1_CHASSIS">
<PartDescription id = "CABIN" partResourceType = "SML1_CABIN" lpName = "LP_CAB01" >
<PartDescription id="CABIN_SMALL_GUN" partResourceType = "SMALL_GUN" lpName = "LP_SML01" />
</PartDescription>
<PartDescription id = "BASKET" partResourceType="FAKE_BASKET" lpName = "LP_CAB01" />
</MainPartDescription>
<Parts>
<Part id = "CHASSIS" Prototype = "sml1Chassis" />
</Parts>
<Wheels>
<Wheel Prototype = "sml1Wheel01" steering = "correct" />
<Wheel Prototype = "sml1Wheel01" steering = "correct" />
<Wheel Prototype = "sml1Wheel02" />
<Wheel Prototype = "sml1Wheel02" />
</Wheels>
</Prototype>
Прототип шасси -
sml1ChassisПрототипы колёс -
sml1Wheel01 и
sml1Wheel02Теперь открываем
Ex Machina\data\gamedata\gameobjects\vehicleparts.xml и ищем в нём прототип шасси
sml1Chassis чтоб определить имя модели, получаем:
- Спойлер
- Код: Ctrl+A, Ctrl+C
<Prototype
Class = "Chassis"
Name = "sml1Chassis"
ModelFile = "sml1Chassis"
ResourceType= "SML1_CHASSIS"
NodeScale = "1 1 1"
Mass = "50.0"
MaxHealth = "50"
MaxFuel = "100"
BrakingSound="ET_S_BRAKE01"
PneumoSound ="ET_S_PNEUMO_BRAKE01"
GearShiftSound="ET_S_GEAR_SHIFT01"
LoadPoints = "LP_CAB01" >
<GroupsHealth
Main = "10000"
/>
</Prototype>
имя модели шасси -
sml1Chassis Тем же способом, в этом же файле находим остальные данные, в итоге:
имя модели кабины -
sml1Cab01 имя модели переднего колеса -
sml1Wheel01 имя модели заднего колеса -
sml1Wheel02 И последнее, определяем конкретные имена и месторасположение моделей.
Для этого открываем
Ex Machina\data\models\animmodels.xml и ищем модель шасси
sml1Chassis, и получаем:
- Спойлер
- Код: Ctrl+A, Ctrl+C
<model
id="sml1Chassis"
shadow="1"
windwavy="0"
file="data\models\vehicles\small_car\chassis01.gam">
<action
name="DEATH1"
skin="8">
<lp
id="w"
effect_id="ET_PS_VEH_EXP_SHASSIS_SMALL"
restartOnAnimationChange="0"
ImmediateRemove="0" />
</action>
<action
name="DEATH2"
skin="8">
<lp
id="w"
effect_id="ET_PS_VEH_EXP_SHASSIS1_SMALL"
restartOnAnimationChange="0"
ImmediateRemove="0" />
</action>
</model>
Тем же способом определяем и другие.
Теперь мы знаем все модели Клопа
шасси -
data\models\vehicles\small_car\chassis01.gam кабина -
data\models\vehicles\small_car\cab01.gam переднее колесо -
data\models\vehicles\small_car\wheel01_cab01.gam заднее колесо -
data\models\vehicles\small_car\wheel02_cab01.gam Радует одно, что только у насекомых такая проблема, у остальных тачек всё проще, одна машина - одна папка, и естественно, модели в ней только для этой машины.
--------------------------------------------------------------
2 Сбор данных стандартной модели колеса--------------------------------------------------------------
Теперь соберём данные по колёсам.
Запускаем
ТМЕ, открываем переднее колесо (
data\models\vehicles\small_car\wheel01_cab01.gam) и смотрим данные:
- Спойлер
Теперь пояснение:
1. Размер (Ширина/Высота/Длина) в игре (в "игровых" метрах).
Переднее -
0.37 х 0.84 х 0.80 Заднее -
0.43 х 0.99 х 0.95 (Диаметры
0.84 х 0.80 и
0.99 х 0.95 потому, что колёса 10-ти гранные)
2. Анимация - отсутствует. (у колёс не применяется)
3. Количество покрасок - 1 (счёт начинается с нуля).
Вот здесь проблема, желательно хотя-бы две, целой (
0) и "горелой" (
1) (для уничтоженной машины).
Иначе после уничтожения на дороге будут лежать и весело гореть покрашенные колёса.
Вообще можно подключить девять текстур (восемь покрасок (
0-7) и горелая (
8)).
Так мы и сделаем, просто от 0 до 7 применим одну и ту-же текстуру.
Ибо если делать две (0 и 1), то придётся лезть в animmodels.xml и править настройки моделей.
А данный мануал на это не расчитан.
4. Количество материалов - 1 (счёт начинается с нуля).
(Норма для колёс и шасси)
5. Количество текстур визуализации -1 (счёт начинается с нуля).
Здесь тоже проблема. Должно быть хотя-бы две, покраска (0) и объём (1).
6. Имя текстуры -
shassis01.dds 7. Тип текстуры -
DIFFUSE 8. Шейдер -
specular Если использовать bump тогда можно будет выводить объём.
9. Повреждения отсутствуют.
Опять проблема, должен быть хоть один вариант.
10. Лоадпоинты и коллизии отсутствуют.
Здесь всё в норме, у колёс и оружия лоадпоинты и коллизии не применяются.
Так, с данными определились, теперь будем "выдирать" модель.
------------------------------------------------------------------------------------
3 Извлечение модели из игры------------------------------------------------------------------------------------
Так как переднее и заднее колёса идеентичны во всём кроме размера, достаточно будет извлечь только одно.
1. Создаём на диске
C: папку
KLOP.
2. Запускаем
3D Rpipper DX и проставляем файлам 3DR и текстурам путь к папке
KLOP, и жмём "
Start global system monitoring".
(
В ВЕРХНЕЙ СТРОКЕ ПУТЬ (К ПРОГРАММЕ/ИГРЕ) ВВОДИТЬ НЕ НАДО)
- Спойлер
3. Запускаем
ТМЕ, выбираем переднее колесо, и не поворачивая его жмём клавишу "
F12"
- Спойлер
При этом мы получим два файла,
.3dr (модель) и
.dds (текстура) в папке
KLOP - Спойлер
------------------------------------------------------------------------------------
4 Доводка модели------------------------------------------------------------------------------------
1. Запускаем 3D Max и импортируем в него полученный .3dr
- Спойлер
2. Создаём материал используя как Диффуз текстуру из папки KLOP и присваиваем колесу
- Спойлер
И тут мы видим проблему, колесо полностью чёрное. Это потому, что текстура находится внутри.
3. Щёлкаем закладку "Изменить". Открываем список "Редактируемая сетка", выбираем "Элемент".
Выбираем все детали колеса, открываем свойства поверхности и жмём кнопку "Обратить"
- Спойлер
Получаем затекстуренное колесо.
- Спойлер
4. Так как колесо неровное, "рихтуем" и выставляем по центру всех осей, и сохраняем в WHEEL.max
(У Клопа колёса строго по центру, у других машин бывают смещены немного влево или вправо)
- Спойлер
5. Экспортируем колесо в .obj, импортируем в Майю, групирруем, заходим в настройки и увеличиваем в 100 раз по всем осям.
- Спойлер
6. Теперь заходим в редактор материалов (1), выбираем материал (2), нажимаем кнопку MEL (3), и в настройках материала получаем доступ к выбору шеёдера.
- Спойлер
7. Меняем тип материала на lambert, а шейдер на bump.
- Спойлер
8. Экспортируем колесо из Майи в .SAM, бросаем созданный .SAM файл в папку машины и проверяем размер.
- Спойлер
Получаем 0.54 х 1.01 х 0.96 . Опять масштабируем, экспортируем, и так несколько раз, пока не получим нужные размеры.
(0.37 х 0.84 х 0.80 и 0.43 х 0.99 х 0.96)
9. Теперь немного сглаживаем грани.
- Спойлер
10. Далее, для разнообразия, булиним отверствия в диске.
- Спойлер
------------------------------------------------------------------------------------
5 Повреждения------------------------------------------------------------------------------------
1. Выделяем колесо, заходим в настройки, жмём кнопку
MEL и на второй закладке (
Shape) меняем
Main на
Breakable1 - Спойлер
2. Создаём ещё одну модель колеса (
Редактировать>>
Дублировать или
Ctrl+d) немного "наклоняем".
- Спойлер
Теперь после попадания колёса будут вилять.
Важный нюанс - должно быть как на скрине, первое колесо нормальное, второе "кривое". У обоих атрибут
Breakable1 3.Это заднее колесо, а для переднего придётся масштабировать.
Естественно масштабировать группу проще чем колёса по отдельности, поэтому мы их группируем.
- Спойлер
------------------------------------------------------------------------------------
6 Текстуры------------------------------------------------------------------------------------
1. Итак на данном этапе у нас должны получиться два файла wheel01.mb и wheel02.mb (переднее и заднее колесо).
2. Открываем wheel01.mb, выбираем всё (группу и оба колеса) и экспортируем в wheel01_cab01.sam
- Спойлер
Тоже делаем и со вторым колесом, но с именем wheel02_cab01.sam
3. Копируем wheel01_cab01.sam и wheel02_cab01.sam в папку машины (Ex Machina\data\models\vehicles\small_car)
4. Для получения объёма на протекторе нам понадобится бамп-текстура (вернее нормаль, но здесь её почему-то назвали бампом).
Конечно можно сделать её вручную или с помощью Normal Filter в Фотошопе,
но на наше счастье она присутствует в Меридиане (хотя и там в моделях не используется).
Имя текстуры shassis01_bump.tga, кидаем её туда-же, в папку Клопа, но переименовываем в wheel01_b.tga.
Там же делаем копию файла shassis01.dds и переименовываем в wheel01.dds
Это для того, что придётся немного изменить текстуры, и если менять стандартные, изменения повлияют на все четыре машины.
Что приведёт к глюкам на колёсах Таракана, Муравья и Кузнечика.
5. Запускаем ТМЕ, открываем wheel01_cab01.sam и подключаем текстуру wheel01.dds (0)
- Спойлер
6. Подключаем бамп-текстуру wheel01_b.tga (1)
- Спойлер
7. Переключаемся на настройки текстуры 1 (wheel01_b.tga) и ставим ей тип BUMP
- Спойлер
8. Щёлкаем восемь раз кнопку "Добавить скин"
- Спойлер
9. Выбираем скин 8, текстуру 0 и меняем её на shassis01_d.dds (горелую).
- Спойлер
10. Конвертируем в .GAM
- Спойлер
11. Делаем всё тоже со вторым колесом.
12. Немного дорабатываем текстуры и проверяем в игре.
- Спойлер
13. И "горелые" (расстрелял Клопа).
- Спойлер
---------------------------------------------------------------------------------------------------------------------------------------------------
Вот, для наглядности, архив со всеми файлами (3dr, OBJ, max, два mb, два sam, два gam, три DDS и два PSD).
http://yadi.sk/d/BpeN1Dnk48zI0---------------------------------------------------------------------------------------------------------------------------------------------------
В следующей части займёмся шасси (рассмотрим коллизию и лоадпоинты).
Третий Закон: Любая достаточно развитая технология неотличима от магии. (Кларк)