Моделирование для Ex Machina (часть 2). Колёса.

Форум Административный раздел Системный раздел для главной FAQ
Сообщений: 5 • Страница 1 из 1 1
Аватара
--------------------------------------------------------------
Вступление
--------------------------------------------------------------
В этой части мы будем переделывать колесо.
Предполагается, что вы прочли предыдущую часть, в которой были описаны установки и настройки программ.
Если вы сделали всё, что описано в предыдущей части, то у вас должны быть распакованы минимум две папки игры.
Папка Клопа - 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
---------------------------------------------------------------------------------------------------------------------------------------------------
В следующей части займёмся шасси (рассмотрим коллизию и лоадпоинты).

Третий Закон: Любая достаточно развитая технология неотличима от магии. (Кларк)
Аватара
Клевый гайд (учебник)

Отверстия в колесах понравились - в движении наверное круто смотрится

PS. добавлю что Normal map текстуру (которую в махине зовут бампом)
можно и в ".dds" формате сохранять (DXT3 или DXT5 сжатие \ DXT1 может быть маловато и качество ухудшится)
так же и другие текстуры (например Diffuse) можно сохранять в ".tga" формате вместо dds
то есть выбор формата не принципиален - но DDS формат (DXT1 и DXT3 сжатие) позволит значительно сэкономить место

Аватара
Что за машина на ч12 .1 скрин ?



Самурай без меча , подобен Самураю с мечом , но без меча.
Аватара

"KATPAH" писал(а):

Что за машина на ч12 .1 скрин ?


Это не машина, а просто объект в Steel Down Mod.

Профиль уверенного водителя Белаза
Аватара
bat13 маладец! очень понравилось, пришла мысль что аналогично можно вытянуть, переделать и загнать в игру и другие объекты/детали/машины по такому же принципу, хорошо что пояснил как правильно, спасибо! :good:

Добавлено:
Незнаю, почему раньше не увидел эту статью..

Жизнь одна, и не даётся дважды
Сообщений: 5 • Страница 1 из 1 1