ИГРАТЬ

Создание 3D-модели самолёта

Общие требования к сцене

  • Сцена должна быть полностью совместима с форматом Autodesk 3ds Max 2017
  • В названиях файлов используйте строчные буквы латинского алфавита. Не используйте в имени сцены и текстур больших букв и знака «-». Можно заменить его на нижнее подчёркивание «_».
  • На всех объектах должен быть схлопнут стек (объекты должны быть Editable Poly)
  • Модель должна иметь реальный масштаб в метрических единицах измерения (System units = Meters). Размерность Display юнита можете выбрать такую, которая удобна Вам.
  • Все объекты должны иметь масштаб = 100, 100, 100 (используйте Hierarchy/Reset Scale)
  • Модель должна быть ориентирована носом по оси Х, ось Z должна быть направлена вверх, Y - влево по направлению полёта
  • Сцена должна содержать лоды (LOD0 - LOD3) а также слои со вспомогательными объектами. Пожалуйста обратите внимание, что моделирование разрушенного состояния самолёта (DMG2_LOD0 - DMG2_LOD3) больше не требуется. Подробнее см. в соответствующем разделе.

Слои

Все объекты в сцене должны быть разложены по слоям:

  • DM — damage model. Объекты для просчёта колижена самолёта в виде упрощённой геометрии поверхностей а также узлов и агрегатов. По этим объектам просчитываются попадания поражающих элементов. Столкновения с землёй и прочими объектами просчитываются через вспомогательные объекты _Clip которые обозначают опорные точки частей самолёта: крылья, фюзеляж, точки касания колёс и т.д
  • GUN — пламя из стволов а также вспомогательные объекты для закрепления бомб и ракет (см. модель примера)
  • LOD0 — ЛОД0 В этом слое также находятся эмиттеры эффектов (см. модель примера)
  • LOD1 — ЛОД1 исходного состояния
  • LOD2 — ЛОД2 исходного состояния
  • LOD3 — ЛОД3 исходного состояния
  • pilot – это референс модель пилота, по пивоту которого в игре будет появляться пилот нужной страны. Сама модель, которую вы усаживаете, в игре отображаться не будет. Ее размеры примерно соответствуют размерам модели в игре.
  • prop_side — это плашка с текстурой вращающегося винта на виде сбоку, она отображается только при взгляде на винт сбоку. В остальных случаях, она плавно исчезает. Находится в своём индивидуальном слое, так как не нуждается в ЛОДах
  • nodes_gunner - слой с референс моделями или анимированными нодами стрелков

Прежде чем начать моделирование хорошо изучите фотографии, чертежи и схемы. Сравните чертежи с фотографиями и выберите самый подходящий чертёж. Многие из чертежей могут иметь погрешности, бывает, что ни один чертёж не соответствует фотографиям. Тогда нужно выбирать самый близкий, использовать его как базу, а все формы тщательно сверять с фотографиями. Подготовительные работы могут отнять много времени но помогут избежать исправлений.

Итерации моделирования

  • 1-й этап. Выверенные по размерам и пропорциям общие формы модели. С несшитыми крыльями, мотогондолами, без внутренностей кабины и прочей детализации, чтобы можно было легко поправить формы, размеры, взаимное расположение основных частей самолёта. Фюзеляж должен иметь верные сечения по всей длине, крыло должно иметь верный профиль, угол атаки и крутку (если имеется). Лопасти должны иметь верную форму. В сцене должны быть чертежи в отдельном слое Drawings. Вместе с максовским файлом нужно присылать картинки используемые в качестве чертежей.
  • 2-й этап. Финальная геометрия, включающая в себя моделирование всех элементов: двигателя (если он виден), кабины, силового набора крыльев и фюзеляжа, ПВД, посадочных фар, аэронавигационных огней. Также на этом этапе производится оптимизация меша, выставление пивотов всех подвижных частей, правильное именование объектов, делается анимация шасси, создаются нуль полигоны.
  • 3-й этап. Раскладка модели (UV). Рендер текстуры Аbmient Оcclusion. Слой рассеянного затенения (AO) на данном этапе грубый, финализировать его не нужно, так как возможны изменения UV. На модель нужно назначить мультиматериал, а полигонам присвоить соответствующие номера ID.
  • 4-й этап. Модель с диффуз текстурой содержащей в себе цвета самолёта, расшивку, лючки, заклёпки, опознавательные знаки и финальный АО. Без сколов, грязи и технических надписей.
  • 5-й этап. На этом этапе происходит моделирование всех ЛОДов. Модель с финальной диффуз текстурой на которой есть царапины, грязь, подтёки масла, разбивка по листам, технические надписи, следы старения и использования самолёта человеком.
  • 6-й этап. Модель со всеми текстурами (диффуз, нормал и спекуляр), в том числе текстуры повреждённого состояния(с пробоинами). Финальный вариант.

Модель

ЛОДы и полигонаж

Нижеприведенные цифры носят рекомендательный характер:

  • LOD0 — около 50-150k треугольников для истребителя и 60-250k для бомбардировщика
  • LOD1 — около 15-23k треугольников для истребителя и 18-33k для бомбардировщика
  • LOD2 — около 1500-2000k треугольников
  • LOD3 — до 150 треугольников

При изготовлении ЛОДов следует исходить из того, чтобы модель переключалась без заметных щелчков при удалении камеры и руководствоваться следующими дистанциями (при угле обзора (FOV) 90 градусов):

  • LOD0 — 0-70 метров
  • LOD1 — 70-200 метров
  • LOD2 — 200-550 метров
  • LOD3 — 550+ метров

Расположение модели

Расположение модели относительно центра координат важно, так как влияет на динамику полёта. Центр тяжести самолёта должен быть выставлен в 0 координат. Для этого продольную ось симметрии самолёта (на виде сверху) выставляем в Y=0. Самолёты как правило симметричные и центр тяжести находится на оси симметрии. Ось тяги двигателя выставляем в Z=0.

Расположение центра тяжести по оси Х для трапециевидного крыла можно вычислить следующим методом построения. У самолетов классической схемы центр тяжести бычно расположен примерно на 25% САХ (средней аэродинамической хорды) крыла.

Ось тяги
Определение САХ
  • Описываем крыло трапецией, сторонами которой являются корневая (расположенная в Y=0) и концевая хорды крыла, а также прямые линии, проходящие через переднюю и заднюю кромки крыла
  • Делим хорды пополам и строим среднюю линию крыла
  • Достраиваем корневую и концевую хорды копиями с противоположных сторон. Соединяем получившиеся крайние точки линией
  • Через точку пересечения этой линии со средней линией крыла строим среднюю аэродинамическую хорду (параллельна концевой и корневой хордам)
  • Откладываем 25% САХ от передней кромки. Проекция на ось X будет центром тяжести.

Соответственно, после нахождения, перемещаем модель, чтобы центр тяжести размещался в 0 координат по оси X (X=0).

Исходное состояние

Модель с неповрежденной текстурой. Модель должна быть разбита на 4 неподвижных объекта: фюзеляж, левое и правое крыло, хвост (рисунок 1). Разбиение необходимо, чтобы рисовать повреждения не всего самолёта целиком, а по частям. Локальные оси пивотов этих объектов должны совпадать с мировыми и находиться в центре мировых координат (World 0,0,0). Также отдельными объектами нужно делать все подвижные части: стойки шасси, створки шасси, бомболюков, колёса, элементы управления самолётов - элероны, закрылки, рули высоты и направления, воздушные тормоза (если есть), винты, сдвижные части фонарей, турели и пулемёты.

Внутри крыльев и фюзеляжа нужно сделать силовой набор (лонжероны, стрингеры, нервюры, шпангоуты) и орудия с патронными ящиками в упрощённом виде. Пример силового набора крыла изображен на рисунке 2.

Полигонам внутренних частей самолёта должен быть присвоен Material ID (6), а текстура обязательно должна иметь окончание «_inside». В неповреждённом состоянии все полигоны, на которые назначена эта текстура будут автоматически прятаться по этому окончанию. Название текстуры должно быть чётко соблюдено. Отдельная текстура силового представлена на рисунке 3.

Если от фюзеляжа к хвосту идут антенны или растяжки, они должны быть отдельным объектом с названием Antenna. При отрывании хвоста антенна будет автоматически прятаться (рисунок 4). Антенны следует делать полигонами с альфованной текстурой. Вы можете найти её в архиве примера. Надо следить за тем, чтобы ширина полигонов была больше толщины антенны, для этого текстура имеет свободное место сверху и снизу (рисунок 5). Вместе с бленд шейдером данный подход позволит отрисовать антенну в игре без зазубрин.

Винт самолёта делается в 3-х вариантах (рисунок 7). Наглядное изображение трех разнесенных в пространстве винтов изображено на рисунке 8.

  • prop01_1 - это кок (обтекатель втулки) либо сама втулка + лопасти геометрией
  • prop02_1 - это кок, либо втулка + плашка с текстурой размытых лопастей. Медленно вращающийся винт
  • prop03_1 - это кок, либо втулка + плашка с текстурой более размытых лопастей. Быстро вращающийся винт

Пример текстур для трёхлопастного винта можно найти в архиве примера.

В ангаре мы видим самолёт с prop01_1, все остальные части спрятаны. Когда в игре запускаем двигатель, то prop01_1 начинает крутиться и на определённых оборотах плавно подменяется на prop02_1. При достижении рабочих оборотов, prop02_1 меняется на prop03_1. Цифры после слова «prop», это разные состояния, а цифра после нижнего подчёркивания, это номер винта. Если у самолёта 2, 3 или 4 винта, то цифры на конце нужно менять соответственно. Вот так выглядят объекты винтов (разнесённые для наглядности) в модели B-17, тяжёлом четырёхмоторном бомбардировщике:

Плашки prop_side имеют только одно состояние, поэтому меняется только одна последняя цифра, номер винта. Вращающиеся винты используют 3 текстуры. Первая - «_rottex» это цвет пропеллера по радиусу (от оси вращения и вправо. На виде спереди). Минимальный размер текстуры 16х16. Если винт одноцветный то, соответственно, нужна одноцветная заливка квадрата 16x16. Если на винте присутствуют другие цвета, то текстура превратится в полосу-радиус 16x512 (рисунок 10) с необходимыми цветами. Вторая текстура это альфа маска «_propmask» для медленного пропеллера, которая присваивается на prop02_1. 3-я текстура это альфа маска для быстрого пропеллера для prop03_1. Диффуз на текстурах масок чёрный. Маска находится в альфа канале. Размеры 512 или 1024. В игре присутствует определённое количество винтов. Возможно, для своей модели, можно найти уже готовые текстуры.

Важно использовать в названиях текстур окончания «_rottex» и «_propmask», поскольку для этих текстур используется особый метод конвертации.

Винт нужно моделировать тщательно. Не жалеть полигонов на скругление форм. Это большая деталь которую можно увидеть в ангаре близко (рисунок 13). Не забывайте про крутку лопастей винта, в основании лопасти имеют больший угол атаки, ближе к законцовке угол атаки минимальный. (рисунки 14, 15).

Для повреждённого состояния винта — нужно загнуть лопасти (если они металлические) или сломать (если они деревянные). Постарайтесь сделать так, чтобы они выглядели как будто самолёт совершил жёсткую посадку на землю с убранными шасси. Для деревянных лопастей отрываем часть и оставляем щепки (рисунки 20, 21). Металлические лопасти загибаются (рисунок 22). Законцовки лопастей закручиваются, если винт делает много много оборотов по пути к земле (рисунки 23, 24).

Важно помнить, что винт не может погнуться поперёк ребра жёсткости, поэтому направление загиба будет параллельно поверхности лопасти.

UV маппинг. Раскладка текстуры

  • Всё полигоны должны иметь UV раскладку
  • UV координаты не должны выходить за пределы +-7.0 в любом направлении

Иначе при экспорте и конвертации могут возникнуть ошибки. Хорошей практикой будет укладывать всю геометрию в рамки 0-1 UV.

Поверхности крыльев, фюзеляжа, оперение, элероны и закрылки должны быть разложены уникально.

Это важно, потому что у самолёта может быть не одна схема раскраски. И если, например, раскладка правого и левого крыла будет браться из одного места, то нарисовать уникальный камуфляж будет затруднительно. Исключение составляют детали двигателя: цилиндры, штанги клапанов, провода свечей, эти повторяющиеся части можно раскладывать в одном месте. Масштаб раскладки цилиндров на текстуре можно увеличить примерно в 2 раза, чтобы адекватно прорисовать рёбра охлаждения. Штанги клапанов, провода свечей и систему впрыска можно делать с самолётным текслем, так как они не имеют деталей или фактуры. На рисунке 25 представлен обычный звездообразный двигатель. В игре двигатель должен выглядеть примерно как на рисунке 26.

В двигателе как правило 1-2 ряда по 5, 7 или 9 цилиндров. Как видим, достаточно сделать один цилиндр с прилегающими деталями, а дальше повторить их нужное количество раз по кругу, для одного ряда. Если двигатель двухрядный и второй ряд недостаточно хорошо виден, то его можно заменить плашкой, на которой изображён один цилиндр, и раскопировать её по кругу. Одну плашку сразу на все цилиндры делать не рекомендуется, так как потребуется дополнительное текстурное пространство, для того, чтобы получить такое же разрешение как в версии с одним цилиндром. Цилиндры на текстурах выглядят так:

Как видим, цилиндр занимает на текстуре большую площадь, сравнимую с площадью раскладки хвостового оперения. Рядные двигатели водяного охлаждения, как правило, закрыты капотами и мы их не моделируем. То же самое относится к реактивным двигателям, моделировать не нужно. Воздухозаборник и внутренности сопла, как правило, можно увести в тень при помощи рассеянного затенения (АО). В отдельных случаях лопатки компрессоров всё таки видны. Тогда можно сделать их так же, как и обычный винт. Тремя объектами.

Каждую лопасть лучше раскладывать уникально, чтобы можно было нарисовать слезшую краску для каждой лопасти (рисунок 30). Если на текстуре не осталось места для уникальных лопастей, то слезшую краску можно нарисовать без выраженных деталей (рисунок 31).

Раскладка протяжённых объектов типа Antenna может выйти за разрешённые пределы +-7.0UV. Чтобы избежать этого можно рассечь геометрию антенны на сегменты и наложить их друг на друга.

Раскладка протяжённых объектов вышла за пределы +-7.0UV
  • Одинаковые колёса можно раскладывать в одном месте.
  • Для стёкол не нужна текстура. Но раскладка нужна. Можно разложить все стёкла на небольшой площади где-нибудь в углу текстуры.

Локальные оси

Одноименные объекты во всех лодах должны иметь полностью совпадающие пивоты и ориентацию локальных осей

Локальные оси рулей, аэродинамических поверхностей и винта

Для рулей и аэродинамических поверхностей критично направление оси Y. Локальная ось Y должна располагаться по оси вращения и иметь ориентацию в соответствии со схемой отображенной на рисунке 32.

Направление оси Y:

  • rudder — вверх;
  • elevator, flaps — влево по ходу;
  • ailerons — к центру самолёта;
  • props — вперёд по оси двигателя для вращения по часовой стрелке и назад для вращения против часовой стрелки, например в случае двухмоторного или четырёхмоторного самолёта.

Ось X — по направлению движения (вперед).

Локальные оси колес и стоек шасси

Ось Y должна быть ориентирована по оси вращения колес влево по ходу движения (в выпущенном положении шасси). Для стоек шасси ориентация локальных осей может быть любой, так как стойки анимируются в 3ds Max.

Турельные установки

У всех объектов: Ось Х - по оси стрельбы, Ось Y - вертикально

У объектов gun# и соответствующих flare# расположение и ориентация пивотов должны полностью совпадать. То есть пивот у объектов пламени, находится в точке вращения пулемёта/пушки (рисунок 34).

Створки бомболюков

Створки бомболюков должны открываться по отрицательным углам оси Y (рисунок 35).

Пламя из курсовых орудий

Для пламени из стволов локальная ось Х устанавливается по оси стрельбы. Y и Z — произвольно.

Прочие объекты (неподвижные)

Для всех прочих объектов (фюзеляж, крылья, хвостовая часть и т.д.) пивот должен находиться в центре мировых координат (World 0,0,0), локальные оси должны совпадать с мировыми. Для ресета осей можно сделать «Reset Transform» этим объектам.

Особенности моделирования сопрягающихся деталей (нуль-полигоны)

В модели множество участков, которые при разделении самолёта на отдельные объекты должны сопрягаться между собой с сохранением кривизны поверхностей: фюзеляж и хвост, створки шасси и бомболюков, зализы крыла и т.д. Если разбивать их обычным способом, то в общем случае кривизна поверхности двух объектов будет нарушаться в месте стыка вследствие различия вертекс-нормалей. (рисунок 37).

Чтобы избежать этого неприятного эффекта, необходимо оставлять полигоны «внахлест» на один ряд (рисунок 38).

Этим полигонам должен быть присвоен Material ID (1). На них впоследствии будет использоваться специальный шейдер который не будет их отрисовывать (рисунок 39).

Наименования и иерархия

Все объекты модели не должны иметь линковки. Исключение составляют колеса шасси, которые линкуются к соответствующим стойкам.

Допустимые имена объектов перечислены в нижеприведенной таблице. В названиях объектов используйте строчные буквы латинского алфавита а также нижнее подчёркивание «_».

ОбъектИмя в сцене
Фюзеляжfuse
Левое крылоwing_l
Правое крылоwing_r
Хвостtail
Руль направленияrudder
Руль направления левыйrudder0
Руль направления правыйrudder1
Руль высотыelevator
Руль высоты левыйelevator0
Руль высоты правыйelevator1
Элерон левыйaileron_l
Элерон правыйaileron_r
Закрылок (щиток)flap **
Закрылок левыйflap_l
Закрылок левый дополнительный 1flap1_l ***
Закрылок левый дополнительный 2flap2_l ***
Закрылок правыйflap_r
Закрылок правый дополнительный 1flap1_r ***
Закрылок правый дополнительный 2flap2_r ***
Интерцепторы на левом крылеrudder_interceptor#_l
Интерцепторы на правом крылеrudder_interceptor#_r
Предкрылок левыйslat_l
Доп. детали левого предкрылкаslat#_l
Предкрылок правыйslat_r
Доп. детали правого предкрылкаslat#_r
Воздушный тормоз левыйairbrake_l
Доп. детали левого возд. тормозаairbrake_l#
Воздушный тормоз правыйairbrake_r
Доп. детали правого возд. тормозаairbrake_r#
Шасси левоеgear_l
Колесо левоеwheel_l
Шасси правоеgear_r
Колесо правоеwheel_r
Шасси центральное (хвостовое/носовое)gear_c
Колесо центральное (хвостовое/носовое)wheel_c
Детали левой стойки шассиgear_l# ****
Детали правой стойки шассиgear_r# ****
Детали центральной стойки шассиgear_c# ****
Створки и подвижные элементы бомболюковhatch#
Двигатель 1engine1
Двигатель #engine#
Винт 1, малые оборотыprop01_1
Винт 1, средние оборотыprop02_1
Винт 1, высокие оборотыprop03_1
Винт #, малые оборотыprop01_#
Винт #, средние оборотыprop02_#
Винт #, высокие оборотыprop03_#
Створки радиатора 1radiator1
Створки радиатора #radiator#
Фонарь кабины 1blister1
Дополнительные элементы фонаря кабиныblister#
Турель 1turret1
Пулемет на турели 1gun1
Турель #turret#
Пулемет на турели #gun#
Пламя из оружия 1flare1
Пламя из оружия #flare#
Точка подвески бомбы 1bomb1
Точка подвески бомбы #bomb#
Точка подвески ракеты 1rocket1
Точка подвески ракеты #rocket#
Точка подвески торпеды 1torpedo1
Точка подвески торпеды #torpedo#
Бомбовый пилон 1pylon_bomb1
Бомбовый пилон #pylon_bomb#
Ракетный пилон 1pylon_rocket1
Ракетный пилон #pylon_rocket#
Торпедный пилон 1pylon_torpedo1
Торпедный пилон #pylon_torpedo#
Посадочный гакhook
Дополнительные подвижные детали гакаhook#
Пламя реактивного двигателя для самолёта с одним двигателемjet_flame
Если самолёт с 2-мя и более двигателями, то даже первый двигатель идёт с номеромjet_flame1, jet_flame2
  • * — если рули состоят из двух несоосных частей.
  • ** — если щиток один и по центру
  • *** — если закрылки с каждой стороны имеют несколько секций
  • **** — все объекты, относящиеся к шасси, включая створки

# заменяется рядом натуральных чисел начиная с 1. В результате будем иметь например radiator1, radiator2, radiator3 и т.д. Пилоны нумеруются последовательно слева (левое крыло) направо. Важно соблюдать названия для пилонов, поскольку они автоматически прячутся при отсутствии полезной нагрузки.

Выбор объекта

Анимация

В качестве меры предосторожности перед созданием анимации обязательно сделайте всем объектам Reset Scale и Reset Transform.

В модели анимируются:

  • стойки и створки шасси (а также относящиеся к ним узлы и механизмы)
  • подвижные части переплёта фонаря
  • закрылки, воздушные тормоза, интерцепторы
  • створки радиаторов и их привод
  • посадочный крюк
  • створки и привод бомболюка

Анимация делается только для ЛОД0 исходной модели. Диапазон анимации должен быть от 0 до 100 кадра, для любого из анимированных объектов (кроме шасси*). Также необходимо создать Note Track в Track View - Dope Sheet с ключами start в 0 кадре и finish в 100 кадре для одного из объектов. В модели самолёта это объект gear_l. В модели кокпита это стрелка speed. На модель достаточно одного Note Track.

(*) Анимация шасси делается следующим образом: 0 кадр — шасси убрано, 80 кадр — шасси полностью выпущено, 100 кадр — шасси обжато.

Т.е. от 80 до 100 кадра нужно сделать анимацию амортизации стоек от максимально разжатых, до максимально сжатых.

Используйте только Linear Position, Linear Rotation and Linear Scale контроллеры для анимации объектов.

Непосредственно при изготовлении сложной анимации вы можете использовать любые контроллеры, ограничители и линковку. Но по завершении процесса, перед экспортом, необходимо будет преобразовать анимацию в простую форму использующую только Linear Position, Rotation и Scale. В нулевом кадре анимации все поверхности и узлы убраны и закрыты. В 100-м кадре всё полностью выпущено и открыто.

Эмиттеры

Эмиттеры — это вспомогательные объекты, из которых появляются эффекты. Также они используются для некоторых элементов игровой механики. Эффект появляется в пивоте объекта и направляется по оси X. Вы можете посмотреть расположение эмиттеров в примере.

  • emtr_inversion_l – для инверсионного следа с левой законцовки крыла
  • emtr_inversion_r – для инверсионного следа с правой законцовки крыла
  • emtr_shellrejection# – для выброса гильз. Располагается на краю окон экстракторов
  • emtr_exhaust# – эффекты выхлопа двигателей. Размещаются на срезе выхлопных патрубков
  • emtr_oil# – эффекты вытекания и горения масла. Размещаются внутри маслорадиаторов
  • emtr_water# – эффекты вытекания воды. Размещаются внутри водорадиаторов и расширительных бачков
  • emtr_fuel# – эффекты вытекания и горения топлива. Размещаются внутри бензобаков. По эмиттеру на каждый бак.
  • emtr_engine# – эффекты повреждения и горения двигателей. Размещаются внутри двигателей
  • hook_catch – специальный эмиттер посадочного крюка для механики посадки на авианосец. Размещается на конце крюка и прилинковывается к нему
  • emtr_break_wing_l_from, emtr_break_wing_l_to - определяют промежуток отлома левого крыла
  • emtr_break_wing_r_from, emtr_break_wing_r_to - определяют промежуток отлома правого крыла
  • emtr_break_tail_from, emtr_break_tail_to - определяют промежуток отлома хвостовой части

# решётка заменяется натуральным рядом 1,2,3.. и т.д. Для определения мест размещения эмиттеров emtr_oil#, emtr_water#, emtr_fuel# и emtr_engine#, смотрите компоновочную схему самолёта в его паспорте. Если выхлопные патрубки сгруппированы в один ряд то на эти патрубки можно поставить один эффект. Эмиттеры должны присутствовать только в LOD0.

Геометрия необходимая для модели разрушения

Больше не нужно моделировать отдельного разрушенного состояния модели. Модель разрушений заменена на автоматическую. Чтобы механизм работал необходимо поставить вспомогательные объекты эмиттеры для обозначения диапазона в котором может произойти отрыв.

Для крыльев эмиттеры следующие:

  • emtr_break_wing_l_from
  • emtr_break_wing_l_to
  • emtr_break_wing_r_from
  • emtr_break_wing_r_to

Для хвостовой части эмиттеры называются emtr_break_tail_from, emtr_break_tail_to.

Эмиттеры «_from» располагаются ближе к центру самолёта внутри геометрии. Эмиттеры «_to» располагаются ближе к внешнему периметру внутри геометрии. На все внутренние элементы должен быть присвоен Material ID (6) с текстурой внутреннего силового набора. В крайних точках разлома нужно поставить заглушки имитирующие глубину внутреннего пространства. Заглушки в фюзеляже лучше делать конической формы. Крыльевые можно сделать плоскими. При отрывании частей возможен неприятный момент. На внутренней стороне фюзеляжа двухстороннего материала могут быть видны опознавательные знаки и краска с внешней стороны. Поэтому нужно промоделировать внутреннюю поверхность обшивки в диапазоне разлома. Простым способом будет продублировать внешние полигоны с небольшим уменьшением и вывернуть нормали. Внутреннюю поверхность обшивки также можно разложить на текстуре «_inside».

Для всех лодов, где присутствуют неповреждённые винты prop01_#, нужно сделать повреждённый вариант и прибавить к названию окончание «_dmg».

DM модель повреждения

DM самолёта представляет собой низко детализированную геометрию, повторяющую общий вид самолёта, по которой рассчитывается попадание пуль и осколков. А также из опорных точек, служащих для определения пересечения с землёй и другими объектами. Эти точки расставлены по контуру самолёта.

Общий вид DM: Геометрия разбита на отдельные внешние части. А также внутренние части, которые не должны выступать за пределы внешних.

Ко всем именам DM объектов прибавляется суффикс «_dm». Объекты могут быть любой формы и точно повторять контур детали. Просчёт попаданий идёт по полигонам. Также один объект может состоять из нескольких частей геометрии. Для типового истребителя полигонаж DM частей (исключая клипы) должен лежать в пределах 3-5K треугольников. Для типового бомбардировщика полигонаж в пределах 4-6K треугольников.

Контрольные точки (клипы) разбиты на отдельные группы, соответствующие их положению.

Фюзеляжные клипы размещаются в крайних точках и на поверхности фюзеляжа. Несколько клипов размещаются на крыльях примерно в районе эмиттера отлома emtr_break_wing_#_from. Как правило на законцовках частей “wing_l_dm” и “wing_r_dm”.

Располагаются равномерно по периметру оставшихся оставшихся частей крыла “wing1_#_dm” и “wing2_#_dm”, а также обязательно должны присутствовать на законцовках крыла.

Для самолётов авианосного базирования, оборудованных посадочным крюком, необходимы объекты, обозначающие ось вращения и крайнюю нижнюю точку крюка.

Важные замечания:

  • Объект с именем _Clip всегда должен размещаться в мировом центре координат [0,0,0].
  • Пивот любого клипа всегда должен располагаться в центре этого клипа.
  • Внутри групп клипов (фюзеляж, крыло и т.д.) нумерация всегда сквозная. Иначе построение плоскостей прервётся и, соответственно, будут ошибки при просчётах пересечений с землёй и объектами.
Имя клипаПоложение клипа
_Clipв нуле координат [0,0,0]
_ClipCGearнижняя точка центрального колеса (хвостового или носового) или сзади центрального поплавка гидросамолёта на уровне ватерлинии
_ClipLGearнижняя точка левого колеса
_ClipRGearнижняя точка правого колеса
_ClipNGearспереди центрального поплавка гидросамолёта на уровне ватерлинии
_ClipHookRootось вращения посадочного гака
_ClipHookEndнижняя точка выпущенного посадочного гака
_Clip## (от 00 до 50)по периметру фюзеляжа
_Clip_prop_1_## (от 00 до 08)prop_01_1 на законцовках лопастей
_Clip_prop_2_## (от 00 до 08)prop_01_2 на законцовках лопастей
_Clip_prop_3_## (от 00 до 08)prop_01_3 на законцовках лопастей
_Clip_prop_4_## (от 00 до 08)prop_01_4 на законцовках лопастей
_Clip_tail_## (от 00 до 20)по периметру хвостовой части
_Clip_wing_l_## (от 00 до 20)по периметру левого крыла
_Clip_wing_r_## (от 00 до 20)по периметру правого крыла
Название DM частиОписание
Внешние обводы
cover#_dm (от 1 до 16)фонарь кабины, обтекатели
engine#_dm (от 1 до 4)двигатели
fin_dmвертикальное оперение
fin#_dm (1 и 2)вертикальное оперение в двухкилевом варианте
fuse_dmосновная повреждаемая часть фюзеляжа. Должна присутствовать всегда
fuse#_dm (от 1 до 5)дополнительные части фюзеляжа
stab_dmгоризонтальное оперение
stab#_dm (1 и 2)дополнительные части горизонтального оперения
tail_dmхвостовая часть фюзеляжа
wing_l_dm, wing1_l_dm, wing2_l_dmчасти левого крыла. Должны присутствовать все 3 части
wing_r_dm, wing1_r_dm, wing2_r_dmчасти правого крыла. Должны присутствовать все 3 части
Стационарные внутренние части
armor#_dm (от 1 до 10)броня. металлическая или бронестекло
cannon#_dm (от 1 до 8)курсовые пушки
gunner#_dm (от 1 до 12)стрелки
mgun#_dm (от 1 до 12)курсовые пулемёты
oil#_dm (от 1 до 8)масляные радиаторы и маслобаки
pilot_dmпервый пилот
pilot1_dmвторой пилот
spar_l_dm, spar1_l_dm, spar2_l_dmсиловой набор левого крыла. Должны присутствовать все 3 части
spar_r_dm, spar1_r_dm, spar2_r_dmсиловой набор правого крыла. Должны присутствовать все 3 части
tailcontrol_dmпроводка управления идущая к рулям направления и высоты
tank#_dm (от 1 до 9)топливные баки
water#_dm (от 1 до 8)водяные радиаторы и расширительные бачки
wingcontrol_dmпроводка управления в общем колодце
wingcontrol_l_dmпроводка управления проходящая внутри левого крыла
wingcontrol_r_dmпроводка управления проходящая внутри правого крыла
Подвижные части
aileron_l_dmлевый элерон
aileron_r_dmправый элерон
airbrake_l_dmлевый воздушный тормоз
airbrake_r_dmправый воздушный тормоз
elevator_dmруль высоты (в одиночном варианте)
elevator#_dm (от 0 до 2)в конфигурации с несколькими рулями высоты
rudder_dmруль направления (в одиночном варианте)
rudder#_dm (от 0 до 2)в конфигурации с несколькими рулями направления
flap_l_dmлевый закрылок
flap#_l_dm (от 1 до 3)дополнительные секции левых закрылков
flap_r_dmправый закрылок
flap#_r_dm (от 1 до 3)дополнительные секции правых закрылков
gear_c_dmносовая или хвостовая стойка с колесом
gear_l_dmлевая стойка с колесом
gear_r_dmправая стойка с колесом
gun#_dm (от 1 до 12)вооружение в турельной установке

Ниже приведены графические примеры наименования частей:

Фюзеляж, как правило, режется на 3 части. Капот двигателя и фонарь кабины отделяются в отдельные объекты и называются “cover#_dm”. Это объекты, которые являются препятствием для поражающих элементов (они пробиваются и отнимают энергию), но не влияют на живучесть самолёта. Каждое крыло и его лонжероны разрезаются на 3 части.

Пивоты подвижных DM частей (см. таблицу) нужно выровнять, используя инструмент Align с их визуальными частями в LOD0, чтобы они могли отклоняться так же как и визуальные части.

Материалы (порядок ID номеров)

На все объекты в сцене должен быть назначен соответствующий Multi/Sub-Object материал (один на состояние) со следующими ID:

  • (1) - null - Подматериал для нуль-полигонов
  • (2) - camo или body - Материал для основного комплекта текстур
  • (3) - glass - Стекло. Без текстуры диффуза
  • (4) - slow_prop - Средняя скорость вращения винта (prop02.tga)
  • (5) - fast_prop - Быстрая скорость вращения винта (prop03.tga)
  • (6) - inside - Материал для силового набора (нервюры, стрингеры, заглушки)
  • (7) - interior - Материал для дополнительной текстуры больших самолётов
  • (8) - antenna - Антенны

Как правило, основной Multi/Sub-Object материал называется «aces». Для переиспользуемых объектов (турели, вооружение) а также для вспомогательных объектов типа flare# или jet_flame# можно создавать отдельные материалы.

Важно! При производстве ЛОДов сокращение количества используемых ID материалов так же важно как и сокращение количества полигонов.

  • LOD0 и LOD1 могут использовать все подматериалы
  • LOD2 может использовать основной материал ID (2); стекло ID (3); состояния винта ID (4) и (5). Нуль-полигоны и соответственно ID (1) начиная с этого лода не нужны
  • LOD3 должен использовать только ID (2)

Пожалуйста всегда проверяйте лоды на наличие лишних ID.

Текстуры

Для модели используются несколько комплектов текстур. Комплект это текстура диффуз а также сопровождающие её карты нормалей и спекуляра того же разрешения

  • Диффуз текстура для неповреждённого состояния не должна содержать альфа канал
  • Диффуз текстура для повреждённого состояния должна иметь альфа канал с повреждениями
  • Спекуляр находится в альфа канале текстуры нормалей

Совет по поводу использования точных цветов в текстурах. Лучше не сэмплировать цвета напрямую с фотографий и цветных боковиков. Условия освещения на разных фотографиях разные. Также боковики не всегда предоставляют точную цветовую информацию. Лучше пользоваться проверенными надёжными источниками цветовой информации такими как US Federal Standard 595. Во многих случаях информацию по окраске самолёта можно почерпнуть в текстовых источниках. Например самолёт окрашен краской «АМТ-4» или самолёт окрашен краской «ANA 606 Semi-Gloss Sea Blue». Почти всегда вы можете найти соответствие среди цветов FS. В случае ANA 606 этот цвет FS 25042. После этого вы можете зайти на цветовой сервер и сделать сэмпл требуемого цвета. Используйте стандарт FS для точности и единообразия.

Заклёпки на обшивке

Заклёпки должны иметь размер 1 пиксел. Рисовать их лучше серым цветом, после чего наложить на обшивку с некоторой прозрачностью. На крашенной поверхности, заклёпки должны быть чуть светлее, на металлической, немного темнее.

Вокруг заклёпок можно сделать тень эффектами «Drop Shadow» или «Outer Glow», чтобы изобразить небольшую продавленность обшивки на диффузе, так как нормал мап передаёт рельеф хорошо не под всеми углами. Линии швов между листами обшивки нужно рисовать в 1 пиксел толщиной, желательно кисточкой а не векторами, так как при растеризации вектор может лечь между пикселями и в результате получится нечёткая линия на 2 пикселя вместо одного. Если ваш графический пакет поддерживает пиксельный снап для векторов то данной проблемы можно избежать.

При изготовлении текстур следует помнить о материалах, из которых изготавливались различные части самолетов. Например, капот мотора, центроплан преимущественно изготавливались из листового дюралюминия и собирались на заклепках. Такие поверхности как правило не всегда ровные, с заметными продавленностями по обшивке и вокруг заклепок и болтов (рисунок 40, 41). Эти элементы нужно делать нормалями (рисунок 41).

Крылья и задняя часть фюзеляжа часто были либо фанерными либо тканевыми (перкаль) на каркасе. Рули практически повсеместно имели тканевую обшивку, с заметными выступающими ребрами силового набора и провисанием ткани между ними (рисунок 43). На текстуре это должно быть отображено так (рисунок 44).

Провисание не должно заходить на кромки. Так как там находится силовой набор.

Diffuse/Albedo (диффуз/альбедо)

Текстура диффуза
  • Размер текстуры для истребителя 2048x2048 пикселей.
  • Размер текстуры для тяжёлого бомбардировщика 4096x4096 пикселей.

Размер текстуры «_inside» как правило варьируется от 512x512 до 1024x1024 пикселей. Несъёмные пилоны для вооружения рисуются на основной текстуре. Если на самолёте присутствует съёмный пилон который может быть переиспользован на других типах самолётов то его нужно выделить в отдельную текстуру. Размер текстуры может варьироваться от 256 до 1024 в зависимости от размера пилона. Соотношение сторон текстуры может отличаться от 1x1 и быть 2x1 например. При определении размера текстуры пилона используйте самолётный тексель. Допускается незначительное повышение разрешения.

Ниже приведён типовой список текстур для самолёта:

  • f3f_1_usn_a.tga
  • f3f_1_usn_a_dmg.tga
  • f3f_1_usn_n.tga
  • f3f_1_usn_n_dmg.tga
  • f3f_1_inside_a.tga
  • f3f_1_inside_n.tga

В примере выше использовано дополнительное описание «_usn» в названии основной текстуры. Это нужно для того, чтобы обозначить схему камуфляжа. Как правило, одна модель может иметь несколько схем. Обратите внимание, что название текстуры силового набора без дополнительного обозначения. Она общая для всех схем. Описание «_usn» относится только к основным текстурам.

Окончания добавляемые к файлам текстур:

  • «_c» — для текстур без альфа-канала
  • « _a» — для текстур с альфа-каналом
  • « _n» — для текстур нормалей со спекуляром в альфа-канале

Есть нюанс использования текстурных окончаний для самолётов. У связки повреждённой и не повреждённой текстур должно быть одинаковое окончание. Текстура с альфой имеет приоритет, поэтому даже если не повреждённая текстура будет без альфы у обоих текстур должно быть окончание « _a».

В модели примера вы сможете найти дополнительные «общие» текстуры которые используются в самолёте и посмотреть их применение.

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

  • f3f_1_usn.psd
  • f3f_1_inside.psd

Текстура диффуза не должна быть «стерильной». Нужна текстура потрепанного в боях, видавшего виды аппарата. Потертости на крыле где пилот залезает в кабину, царапины и сколы краски, грязь по швам, закопчённость вокруг оружия и за выхлопными патрубками, потеки масла на брюхе и т. д. должны подчеркивать реалистичность боевой машины. Стыки деталей самолёта должны быть подчёркнуты но без явных швов.

Ниже приведены типичные значения альбедо к использованию для самолёта:

  • Голый металл - алюминий/дюраль (сколы, неокрашенный неполированный самолёт): (~160-190 RGB)
  • Голый металл - сталь (амортштоки): (~140-150 RGB)
  • Голый металл - сталь оружейная (стволы орудий): (~80 RGB) - аннодированная поверхность - (~150 RGB) - затёртая поверхность

Normal (нормали), metalness (металичность), smoothness (гладкость)

Текстура нормалей должна быть такого же размера как и текстура диффуз на основе которой они делаются. Карта нормалей использует каналы RG, а металичность и гладкость используют Blue и альфа канал соответсвенно.

Итог конвертации

Зелёный канал нормалей Y не должен быть инвертирован.

На выпуклых частях в зелёном канале всё «подсвечено» снизу.

Карты нормалей служат для имитации неровностей среднего размера - помятостей металлических поверхностей, ребер и провисаний тканевой обшивки, а также заклёпок на обшивке. По блеску окрашенные металлические и деревянные поверхности практически не отличаются. Тканевые поверхности напротив имеют меньший блеск.

Ниже приведены типичные значения яркости металличности и гладкости, рекомендованные к использованию для самолёта:

Металличность:

  • Голый металл (сколы, неокрашенный неполированный самолёт): (~180-200 RGB)
  • Голый металл (сталь амортштоков): (~240 RGB)
  • Голый металл - сталь оружейная (стволы орудий): (~50 RGB) - аннодированная поверхность - (~120 RGB) - затёртая поверхность.
  • Крашенный металл/дерево: (0 RGB)
  • Крашенная ткань: (0 RGB)
  • Ткань/дерево: (0 RGB)

Гладкость:

  • Голый металл (сколы, неокрашенный неполированный самолёт): (~90 RGB)
  • Голый металл (неокрашенный полированный самолёт): (~115 RGB)
  • Голый металл (сталь амортштоков): (~170 RGB)
  • Голый металл - сталь оружейная (стволы орудий): (~80 RGB) - аннодированная поверхность - (~100 RGB) - затёртая поверхность.
  • Крашенный металл/дерево: (120 - 200 RGB)
  • Крашенная ткань: (110 - 160 RGB)
  • Ткань/дерево: (90 RGB)

Советы для пользователей продвинутых графических редакторов

Для вашего удобства пожалуйста следите за размером файлов исходников. Например для файлов *.psd лучше оставаться в рамках 1GB для текстуры 4k. С текстурами меньшего объёма удобнее работать. Главные потребители размера это слои с масками.

Использование их повсеместно может быстро привести к заметному разрастанию размера файла. Маски для слоя нужно применять только там где это крайне необходимо. Не нужно носить за собой маску в 4k чтобы изменить цвет пары пикселей на слое. Однотонные цветные заливки с масками могут быть использованы. Они не влияют на размер файла. Также мало влияют на размер слои коррекции с масками. Количество слоёв в исходниках должно быть не слишком много но и не слишком мало, чтобы сохранить должный уровень контроля над текстурой.

Несколько примеров возможных названий слоёв для текстур:

  • uv — слой с раскладкой UV. Самый верхний слой, включаемый по необходимости.
  • fs37875 inside — слои с камуфляжем могут включать в своё название цвет FS и описание поверхности наложения.
  • fs37875 belly
  • fs35164 camo
  • fs25042 primary

Названия слоёв должны нести смысловую нагрузку:

  • smoke gun 0.5cal
  • smoke exhaust
  • decal fin flash
  • decal wing stars

Использование дефолтных наименований слоёв Layer 1, Layer 2 и т.д. не рекомендуется. В отдалённой перспективе, когда слоёв станет больше, это может привести к неудобствам в работе.

Рекомендованные названия групп слоёв:

  • dmg или damage — для слоёв с повреждениями и пробоинами
  • s — спекуляр
  • n — нормали
  • ao — рассеянное затенение
  • lines — заклёпки и панели
  • text — текстовые надписи и обозначения
  • dirt — грязь, сколы и царапины
  • volume — дополнительные слои объёма (свет и тени), нарисованные вручную
  • decals — опознавательные знаки и технические надписи
  • cockpit — части кабины
  • color или с — основные цвета камуфляжа

Вы можете сгруппировать все схемы камуфляжа и поместить в один файл:

  • color_usn
  • color_usmc
  • color_usn_neutrality

Окончания названий групп зависят от камуфляжа.

Для удобства лучше не растеризировать слои с текстом в исходниках. Чтобы их было просто редактировать при необходимости.

Текстура поврежденного состояния

При повреждении части самолёта неповреждённая текстура заменяется на повреждённую «_dmg.tga». Эта текстура относительно простая в изготовлении. Зная все нюансы можно нарисовать её за несколько часов вместе с нормалом и спекуляром.

К названиям текстур повреждённого состояния добавляется окончание «_dmg». Имена приобретают следующий формат: la_5_c_dmg.tga для диффуза и la_5_n_dmg.tga для нормалей со спекуляром. Сама текстура отличается от обычной только наличием повреждений от пуль и разрывных снарядов. Важно! Для удобства не добавляйте дополнительных слоёв с грязью или нерелевантными объектами на текстуру повреждений. В слоях повреждений должны быть только повреждения. Разница между повреждённой и неповреждённой текстурой должна быть ~ 20-30%, за счёт пробоин. Если вы используете в работе продвинутый графический редактор со слоями можно проверить разницу, положив слой текстуры с пробоинами на слой текстуры обычного состояния, через режим наложения «Difference». Все что не относится к повреждениям должно быть чёрным. Поскольку размеры самолётов разные, а текстура как правило 2048х2048, нужно следить, чтобы абсолютный размер отверстий сохранялся. На маленьком самолёте дыры не были бы сильно маленькими, а на больших, сильно большими. Линейные размеры должны быть такими:

  • Отверстия от пуль на самолёте - от 15 до 30мм.
  • Пробоины от разрывных снарядов ~ 250-400мм.

Пожалуйста не забывайте добавлять прозрачность для отверстий в альфа канал. Прозрачные дыры можно делать в местах где вы смоделировали силовой набор самолёта. Как правило это крылья, стабилизаторы и рули направления. Важно! Не добавляйте прозрачность в места где отсутствуют внутренности и силовой набор. В таких местах делайте отверстия на диффузе чёрными и без прозрачности. Не нужно злоупотреблять пробоинами от разрывных снарядов, делайте по одной-две штуки на каждой части.

Важно! Следите за тем, чтобы на поврежденных текстурах не было дыр и пулевых отверстий в местах сопряжения разных деталей (фюзеляжа, хвоста и крыльев). Иначе возможна ситуация, когда при подмене текстуры на повреждённую будет отрисовываться половина пробоины.

Стыкующиеся части

Примеры повреждений:

Примеры повреждений на текстуре:

Ambient Occlusion (рассеянное затенение)

Для текстуры самолёта необходимо нарендерить слой с рассеянным затенением. Чтобы получить мягкие рассеянные тени. Для этих целей лучше подходит mental ray Renderer. Выберите Ambient Occlusion (MR) при добавлении компонента в секции Output в окне Render To Texture. Используйте Edge Padding в 2 пикселя.

Для получения хорошего результата используйте следующие параметры:

  • Samples = 96 или более
  • Falloff = 10.0

Не забудьте переключить рендер на mental ray в окне Render Setup (F10).

Рендерьте АО на белом бэкграунде. В редакторе Фотошоп или подобном используйте наложение «Multiply» для слоя или группы. Помещайте АО поверх слоёв которые нужно затенить. Поиграйте прозрачностью для достижения желаемого результата

Обратите внимание, что статичные тени могут нарендериться в местах где они не нужны. Например на вращающихся колёсах. В таких случаях необходимо будет подчистить АО вручную. Совет: По отдельности прозрачность слоёв АО лучше не менять. Заключите основной непрозрачный слой АО вместе с отдельными слоями коррекции в группу и меняйте прозрачность у группы. Таким образом скорректировать артефакты АО будет проще, а также останется нетронутым исходный рендер.

Dagor Tools

Свойства объектов. Object Properties Editor

Для нормального отображения и функционирования модели в игре необходимо задать свойства составляющих её объектов через Dagor «Object Properties Editor». Редактор свойств находится в закладке Utilities. Нажмите на Configure Button Sets и добавьте кнопку на панель утилит.

Панель утилит
Добавление кнопки

Свойства необходимо прописать для каждого объекта, который будет выгружаться. Если свойства объектов совпадают, то можно задать сразу для всех.

Свойства объектов:

Обычная геометрия (фюзеляж, крылья, хвостовая часть и т.д.)
Объекты вспышек выстрелов flare#
Точки подвески вооружения bomb#, rocket# и torpedo#. А также ноды пилотов и стрелков
Объекты *_dm и _Clip* в слое DM

Материалы и шейдеры Dagor

Перед экспортом необходимо назначить на модель материалы с игровыми шейдерами. Можно переконвертировать сразу все назначенные Standard материалы в формат движка DagorMat2 при помощи «Dagor Utility». Этот инструмент также находится в закладке Utilities.

Панель Dagor Utility

Для конвертации нажмите «StdMat -> DagorMat» (1), чтобы сначала перевести материалы в формат предыдущего поколения DagorMat. Затем нажмите «Dagor -> Dagor New» (2), чтобы перевести в текущий формат DagorMat2. Ссылки на текстуры в канале диффуз при конвертации сохраняются. По умолчанию в материал прописывается шейдер «aces_weapon_fire», который впоследствии нужно будет заменить на подходящий, в зависимости от назначения элемента или типа поверхности. Материалы DagorMat2 также можно назначать вручную. Для этого в редакторе материала нажмите на кнопку Standard и выберите материал Dagor Dagorrat Material 2.

Ниже приведены примеры часто используемых шейдеров в Dagor2 материалах. Для нуль-полигонов которым присвоен материал ID (1) null выбираем шейдер «dynamic_null». Обратите внимание что текстурные слоты не используются

Шейдер dynamic_null

Для материала ID (2) camo, который использует основную текстуру, выбираем шейдер «dynamic_masked_chrome_bump». В соответствующие слоты назначается диффуз текстура, текстура нормалей со спекуляром в альфа канале и кубическая текстура окружения (вы можете найти её в архиве примера).

Шейдер dynamic_masked_chrome_bump

Материал стекла ID (3) glass использует шейдер «dynamic_glass_chrome». Для этого шейдера мы выбираем только кубическую текстуру окружения. Материал может содержать дополнительные параметры, влияющие на отражающие свойства и прозрачность стекла. Эти параметры могут быть добавлены кнопкой «Add», которая находится под селектором цвета «Emissive:». Как правило добавляется и меняется только прозрачность. Остальные параметры берутся по умолчанию. Цвет стекла можно настраивать в определённых пределах селектором цвета «Diffuse:».

Шейдер dynamic_glass_chrome

Следующий типовой материал используется для текстуры «_inside», в которой присутствует альфа канал. Обратите внимание что в материал добавляется параметр «atest = 127», который определённым образом обрезает все пиксели с яркостью меньше 127 и делает эти области прозрачными. Этот параметр нужно добавлять в материал, чтобы задействовать альфа канал в шейдере «dynamic_masked_chrome_bump».

Вырезание по альфа-маске «atest = 127»

Для антенн и расчалок используется шейдер «dynamic_alpha_blend». По умолчанию он отображает альфу во всём диапазоне 0-255 и, как правило, использует только диффуз текстуру с альфой.

Шейдер dynamic_alpha_blend

Шейдер для материала вспышек выстрелов называется «aces_weapon_fire» и использует текстуру страничной анимации вспышки (текстуру можно посмотреть в архиве примера).

Шейдер aces_weapon_fire

Экспорт модели

Для того чтобы использовать модель в игре её нужно экспортировать в формат игры в нужную папку посредством утилиты «Dagor Scene Export». Её можно найти в закладке Utilities и вынести на кнопку. Модель экспортируется в несколько *.dag файлов геометрии и файл анимации *.a2d.

Схема для названий экспортируемых файлов следующая:

  • %имя_самолёта%.lod#.dag — файлы геометрии лодов модели
  • %имя_самолёта%_anim.a2d — файл анимации
  • %имя_самолёта%_dm.dag — файл DM геометрии

В результате, для самолёта у нас получится примерно такой список файлов.

  • f2h_2.lod00.dag
  • f2h_2.lod01.dag
  • f2h_2.lod02.dag
  • f2h_2.lod03.dag
  • f2h_2_anim.a2d
  • f2h_2_dm.dag

По умолчанию экспортером выгружаются только видимые объекты. Объекты в следующих слоях необходимо выгрузить в соответствующие файлы лодов.

  • *.lod00.dag: GUN, LOD0, nodes_gunner, pilot, prop_side
  • *.lod01.dag: GUN, LOD1, prop_side
  • *.lod02.dag: GUN, LOD2, prop_side
  • *.lod00.dag: GUN, LOD3
  • *_dm.dag: DM

Для экспорта геометрии необходимо нажать кнопку «Export DAG» (2). Появится диалог сохранения файла. Список типов объектов, которые будут выгружаться, находится под кнопкой экспорта и как правило используется по умолчанию.

Ключи анимации по умолчанию также экспортируются (3) только для видимых объектов в сцене. Поэтому необходимо расхайдить LOD0 и спрятать любые другие слои перед экспортом анимации. Файл анимации *.a2d выгруюается в ту же директорию что и *.dag файлы геометрии. Пожалуйста убедитесь, что присутствует чекбокс рядом с диапазоном «range:» и что диапазон выгружаемой анимации от 0 до 100 кадров. Под диапазоном анимации располагаются пороговые значения для оптимизации ключей. В частности важны значения для ключей положения «~pos:» и для ключей вращения «~rot:». Для положения используется текущая системная единица измерения в максе. Вращение указывается в градусах. Эти пороги задают дельту перемещения или вращения, необходимые чтобы сохранить ключ в файл, при условии наличия ключа. Уже установленные значения как правило оставляются по умолчанию. Если воспроизведение анимации в игре неудовлетворительное, то можно попробовать уменьшить значения.

Во время экспорта возможно появление нескольких предупреждающих окон:

  • В модели присутствуют вырожденные треугольники «degenerate triangles»
  • В модели присутствуют треугольники без сглаживания «triangles with NO smoothing»
  • В выгружаемой модели присутствуют неигровые материалы «non-dagor materials»

Предупреждения заносятся в окно лога экспорта (4) с указанием наименований элементов, вызвавших ошибки. Для удобства можно сохранить текст из этого окна в текстовый файл.

Вырожденные треугольники это фейсы с нулевой площадью. Если 3 вертекса, которые образуют треугольник, имеют одинаковые координаты, то этот треугольник считается вырожденным. Пожалуйста следите чтобы в модели не было треугольников с площадью менее 1 кв. мм. Можно провелдить вертексы с небольшим порогом.

Как уже отмечалось, на все поверхности модели должны быть назначены группы сглаживания. Назначение групп сглаживания разрешит второй тип предупреждений.

Третий тип предупреждений показывает, что вы выгружаете модель с объектами, на которые не присвоен DagorMat2 материал. К данному предупреждению могут приводить, например, забытые в сцене хелперы или сплайны без материала. Финальная сцена, подготовленная к выгрузке, должна содержать только геометрические объекты с назначенными Dagor2 материалами.

Успехов в моделировании!

Комментарии
Комментариев пока нет
Напишите первый!
Лента рекомендаций
Сейчас нам нечего вам порекомендовать :(
Перейти на главную
Вы досмотрели до конца