Модифицировать модель авиации и вооружения не сложно — требуется лишь поверхностное знакомство с интерфейсом современных 3D-редакторов. Как именно это сделать, продемонстрировано в этой статье на примере ПТАБ-2,5-1,5 и самолёта-носителя к ней. Также показано, как создать простую текстовую миссию и текст локализации.
Как я уже говорил в статье о модификации наземных юнитов, область применения таких модификаций сводится либо для развлечения, либо для тестирования игровых механик и вооружения.
Для работы понадобится
- WarThunderCDK новейшей версии;
- 3ds MAX (версии 2016 и выше);
- Blender (опционально);
- Notepad++ или любой другой удобный текстовый редактор с функцией памяти;
- DagorAssetExplorer от пользователя quentin-dh — инструментарий позволяющий вынимать 3д модели, текстуры и DM модели из игры;
- WarThunder-Datamine-With-working-code от пользователя @-_Shinoa_-;
Необходимо сразу обозначить технические проблемы и объём предстоящих работ:
- По техническим причинам (главным образом структура файлов) игра не позволяет свободно модифицировать любые юниты, использующие модель из
res\aircrafts
. Это технически возможно, но изменённая модель будет работать только для ИИ юнитов, для юнитов под управлением игрока миссия не запустится; - Даже если игнорировать данное ограничение, эммитеры вооружения (пустые объекты в координатах которых отображается и спавнятся бомбы/ракеты/снаряды) всё равно не могут быть как-либо отредактированы.
Это значит, что нельзя обойтись просто копией существующей модели, необходимо создать и отредактировать новую пользовательскую модель самолёта.
Вооружение
Используя референсы из интернета и чертёж из руководства по эксплуатации, моделируем lod00 (он же самый детализированный LOD) бомбы.
Так как в данном случае общее количество подвешиваемых бомб равно 192 шт., необходимо подумать об оптимизации и смоделировать упрощённые lod01 и lod02 для того, чтобы уменьшить количество треугольников с 250 тысяч на серию до 30 тысяч.
Теперь, используя Smart UV Project
, создаётся простая развёртка, и можно экспортировать в удобную программу для текстурирования.
На примере используется Substance Painter, где за пару минут создаются нормали и применяется один из доступных Smart Material
. После небольших изменений настроек получается желаемый результат.
Осталось экспортировать модель в 3ds MAX:
Импортируем в MAX, используем модификатор Smooth, настраиваем материалы Dagor (я использую dynamic_masked_chrome_bump
), и Object properties
.
Экспортируем всё лоды в отдельные файлы, и проверяем модель в AssetViewer.
Можно экспортировать.
Модель самолёта
Для этого необходимо получить саму 3D модель, для чего существует 2 способа:
- Воспользоваться DagorAssetExplorer, открыть файлы игры и импортировать LOD00 в Blender;
- Потратить деньги и получить модель из сторонних источников.
Удобнее использовать оба способа, так как DagorAssetExplorer вообще не сохраняет пивоты и локальные оси объектов, к тому же часто вынимает модели с дефектами, а сторонние источники хоть и позволяют скачивать файлы в формате .glb, но не сохраняют пилоны, эмиттеры, антенны и пропеллеры.
Так что сначала импортирется Il-2M_(1943).glb, позиционирется вдоль оси Х и удаляются все пустышки используя перед этим Parent - Clear and Keep Transformation
.
Теперь необходимо повернуть все пивоты в правильное положение, используя Affect Pivot Only
, Transform Orientation: Local
и Transform Pivot Point: Individual Origins
:
Необходимо переименовать все объекты используя Ctrl+F2:
Теперь импортируется модель, полученная с помощью DagorAssetExplorer, и удаляется всё, кроме пропеллеров и эмиттеров. Для них устанавливаются пивоты в нужных местах и поворачиваются так, чтобы пропеллеры вращались вокруг оси Y, а эмиттеры вооружения были направлены вдоль оси Х.
Осталось организовать материалы, эмиттеры используют null
, в то время как prop01_1
, prop02_1
, prop03_1
и prop_side_1
используют camo
, prop2
, prop3
и prop_side
соответственно.
Также, импортируем модель бомбы и размещаем её в необходимом количестве в бомболюках:
И переименовываем всё копии на bomb1
, bomb2
,… bomb191
, bomb192
.
Что касается анимации, то на данном примере анимированы только закрылки и бомболюки.
Конечно, никто вам не мешает анимировать все узлы самолёта, но для целей автора этого вполне достаточно.
Ещё раз проверяем все материалы:
И экспортируем используя всё те же настройки.
После импорта в MAX, применяем модификатор Smooth, Object properties,
и Note Track для объекта gear_l
.
Также если у вас есть желание создать качественную модель повреждений, то вы можете потратить дополнительное время на это, автор же использует только объект engine1_dm, tank1_dm, _Clip, _ClipRGear, _ClipLGear и _ClipCGear, этого достаточно, чтобы модель работала и летала.
Для материалов используем всё те же шейдеры из данной статьи, для каждого предварительно выбрав любую текстуру из существующих в примерах не тратя время на остальные слоты, главное, чтобы для каждого материала была своя текстура, чтобы AssetViewer их случайно не объединил.
Экспортируем модель необходимое количество раз в каждый из лодов, файл _anim, и _dm, и открываю AssetViewer.
Сразу ищем модель il_2m_1943
, и сохраняем скриншот используемых текстур
Теперь необходимо для модели il2m1943, в Material Editor применить все эти текстуры, соответствие текстуры материалу можно понять логически либо методом проб и ошибок.
Осталось сохранить изменения, удалить все остальные лоды, создать копию правильного и переименовать. Экспортируем всё в игру.
FlightModel и WeaponsPreset
В папке War Thunder\content\pkg_local\gameData\flightModels
создаём il2m1943.blk
, открыв файл в Notepad++ вставляем код полученный с репозитория, после чего редактирую строчку model:t="il_2m_1943"
заменив на название модели model: t="il2m1943». В блоке commonWeapons удаляем вообще все упоминания частей DM, таких как стрелки, боекомплект и пушки.
В блоке weapon_presets{}
заменяем il_2m1943_default.blk
на il2m1943_ptab.blk
, создаю файл с таким названием в папке War Thunder\content\pkg_local\gameData\flightModels\weaponPresets
.
Используя аддон Python Script
запускаем скрипт, который создает в консоли все 192 блоков для каждой бомбы:
Weapon{ trigger:t="bombs" blk:t="gameData/Weapons/bombGuns/ptab.blk" external:b=no separate:b=yes emitter:t="bomb1" bullets:i=1 order:i=1 } Weapon{ trigger:t="bombs" blk:t="gameData/Weapons/bombGuns/ptab.blk" external:b=no separate:b=yes emitter:t="bomb2" bullets:i=1 order:i=1 } Weapon{ trigger:t="bombs" blk:t="gameData/Weapons/bombGuns/ptab.blk" external:b=no separate:b=yes emitter:t="bomb3" bullets:i=1 order:i=1 } . . . Weapon{ trigger:t="bombs" blk:t="gameData/Weapons/bombGuns/ptab.blk" external:b=no separate:b=yes emitter:t="bomb192" bullets:i=1 order:i=4 }
Сохраняем файл.
В папке War Thunder\content\pkg_local\gameData\weapons\bombguns
создаём файл ptab.blk
используя код от немецкой 10-кг бомбы, заменем модель, массу, количество ВВ, разброс и тип боевой части на кумулятивных.
При помощи того же репозитория создаём тестовую миссию, заменив юнит игрока на il2m1943. Проверяем в игре.
В папке с миссией создаю файл usr_ptab.cvs, внутри настраивем как должны отображаться названия самолёта, бомбы, название и описание кампании и раздела в Пользовательских Миссиях и перезапускаем игру.
<ID|readonly|noverify>;<english> il2m1943;IL-2M (1943); il2m1943_0;IL-2M (1943); il2m1943_1;IL-2M (1943); il2m1943_2;IL-2M (1943); il2m1943_3;IL-2M (1943); weapons/ptab/short;ПТАБ-2.5-1.5; "campaigns/TunderTunder";"TunderTunder"; "campaigns/TunderTunder/desc";"Im doing stuff that i like, hate ppl that i hate and you never guess what my next mod is."; chapters/ptab;ПТАБ-2.5-1.5; "chapters/ptab/desc";"PTAB (Anti-Tank Aviation Bomb) was a Soviet cluster bomb developed during World War II to combat enemy armor. The most well-known variant, PTAB-2.5-1.5, weighed 1.5 kg and featured a shaped charge capable of penetrating up to 70 mm of armor. Typically deployed in large numbers from Il-2 Sturmovik ground-attack aircraft, PTABs allowed a single plane to cover a wide area, devastating tank formations. First used in large-scale operations during the Battle of Kursk (1943), PTABs proved highly effective in disrupting German armored offensives, cementing their role in Soviet air tactics. Credits: @UltimEVB, @AzayakaHoshi";
Успех!