Модифицировать модель авиации и вооружения не сложно — требуется лишь поверхностное знакомство с интерфейсом современных 3D-редакторов. Как именно это сделать, продемонстрировано в этой статье на примере ПТАБ-2,5-1,5 и самолёта-носителя к ней. Также показано, как создать простую тестовую миссию и текст локализации.
Как я уже писал в статье о модификации наземных юнитов, область применения таких модификаций сводится либо для развлечения, либо для тестирования игровых механик и вооружения.
Для работы понадобится
- War Thunder CDK новейшей версии
- Blender (версии 4.2)
- Аддоны Dag4Blend и BlenderA2D для Blender
- Notepad++ или любой другой удобный текстовый редактор с функцией памяти
- 3D модель самолёта
Необходимо сразу обозначить технические проблемы и объём предстоящих работ:
- По техническим причинам (главным образом структура файлов) игра не позволяет свободно модифицировать любые юниты, использующие модель из
res\aircrafts. Это технически возможно, но модифицированная модель будет работать только для ИИ юнитов, для юнитов под управлением игрока миссия не запустится; - Даже если игнорировать данное ограничение, эммитеры вооружения (пустые объекты в координатах которых отображается и спавнятся бомбы/ракеты/снаряды) всё равно не могут быть как-либо отредактированы.
Это значит, что нельзя обойтись просто копией существующей модели, необходимо создать и отредактировать новую пользовательскую модель самолёта.
Вооружение
Используя референсы из интернета и чертёж из руководства по эксплуатации, моделируем lod00 (он же самый детализированный LOD) бомбы.
Так как в данном случае общее количество подвешиваемых бомб равно 192 шт., необходимо подумать об оптимизации и смоделировать упрощённые lod01 и lod02 для того, чтобы уменьшить количество треугольников с 250 тысяч на серию до 30 тысяч.
Теперь, используя Smart UV Project, создаётся простая развёртка, и можно экспортировать в удобную программу для текстурирования.
На примере используется Substance Painter, где за пару минут создаются нормали и применяется один из доступных Smart Material. После небольших изменений настроек получается желаемый результат.
Осталось настроить материалы и Object properties:
Экспортируем всё лоды в отдельные файлы, и проверяем модель в AssetViewer.
Можно экспортировать.
Модель самолёта
Для этого необходимо получить саму 3D модель, для чего существует 2 способа:
- Воспользоваться DagorAssetExplorer, открыть файлы игры и импортировать .obj в 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.
Что касается анимации, то на данном примере анимированы только закрылки и бомболюки. Конечно, никто вам не мешает анимировать все узлы самолёта, но для целей статьи этого вполне достаточно.
Также, если у вас есть желание создать качественную модель повреждений, то вы можете потратить дополнительное время на это, начать можно с импорта низкополигонального lod02, автор же использует только объект engine1_dm, tank1_dm, _Clip, _ClipRGear, _ClipLGear и _ClipCGear, этого достаточно, чтобы модель работала и летала.
Ещё раз проверяем все материалы:
Судя по всему, лишних нет, значит можно настраивать все материалы.
Перед этим в AssetViewer находим модель il_2m_1943, и сохраняем скриншот используемых текстур.
Чтобы правильно настроить материалы нужно использовать корректные текстуры и соответствующие шейдеры. Так, например, текстура barrage_baloon_rope используется для тросов и растяжек, для отображения которых нужен шейдер dynamic_alpha_blend.
Текстуры _propmask используют шейдер propeller_front, текстуры gunfire и enginefire отвечают за эффекты стрельбы и работы двигателей и используют шейдер aces_weapon_fire. Все эммитеры, пустышки и обьекты геометрии повреждений используют шейдер dynamic_null и не требуют текстур в слотах.
Также для материала стекла можно использовать любой шейдер из семейства Glass Dynamic, хотя dynamic_glass_chrome является наиболее предпочтительным вариантом, так как для его отображения не нужны текстуры.
Большинство же обьектов видимой геометрии используют универсальный шейдер dynamic_masked_chrome_bump, требующий текстуру _d и _n для корректного отображения.
Названия текстур помогают понять, к какому материалу их нужно назначить, так il_2m_1943_black_green_c и _n очевидно являются главной текстурой самолёта, хотя в других примерах, возможно, придётся действовать методом проб и ошибок.
Проверяем Object Properties, все обьекты должны иметь следующие свойства:
Экспортируем лоды, файл анимации, модель повреждений, и перезагружаем AssetViewer.
Проверяем модель, если видны какие-либо ошибки исправляем их и экспортируем снова. Если же всё правильно, то можно экспортировать модель уже в игру.
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-кг бомбы, заменяем модель на ptab, массу, количество ВВ, разброс и тип боевой части на кумулятивную.
При помощи того же репозитория создаём тестовую миссию, заменив юнит игрока на 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); il2m1943_shop;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";
Успех?!



















