ИГРАТЬ

3D-модели кабин

В этой статье: Общие требования к сцене • Требования к модели • Наименования и анимация • Материалы и текстуры • Дополнительные заметки

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

Расположение и ориентация модели кабины
  • Сцена должна быть полностью совместима с форматом Autodesk 3ds Max 2011
  • Имя сцены должно содержать полное название самолета с окончанием «_cockpit». Например: bf_109e_3_cockpit.max. В названиях файлов используйте строчные буквы латинского алфавита. Не используйте в имени сцены и текстур больших букв и знака «-». Можно заменить его на нижнее подчёркивание «_».
  • На всех объектах должен быть схлопнут стек (объекты должны быть Editable Poly)
  • Модель должна иметь реальный масштаб в метрических единицах измерения (System units = Meters). Размерность Display юнита можете выбрать такую которая удобна Вам
  • Все объекты должны иметь масштаб = 100, 100, 100 (используйте Hierarchy/Reset Scale)
  • Кокпит должен располагаться внутри внешней модели и ориентирован так же, как и она (ось X - вперед, ось Y - влево, ось Z - вверх)

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

  • Cockpit – кабина
  • LOD0 - внешняя неповрежденная модель самолёта. Также в этом слое должны быть плашки повреждений на стекле и металлических частях кабины
  • GUN – пламя из стволов а также вспомогательные объекты для закрепления бомб и ракет (берутся из внешней модели)
  • nodes – анимированные ноды пилота прилинкованные к органам управления (ноды доступны в модели примера)

Пивоты всех не анимированных объектов относящихся к кабине должны находиться в центре мировых координат (World 0,0,0), локальные оси должны совпадать с мировыми. Пивоты анимированных объектов (таких как стрелки приборов) должны находиться в плоскости и на оси вращения стрелки. Относительная ориентация осей пивотов не важна поскольку объекты будут анимироваться.

Модель

Геометрия кабины. Полигонаж

Модель должна содержать 70-150 тыс. треугольников для одноместной кабины и 100-200 тыс. треугольников для двухместной/тандемной кабины. При изготовлении геометрии следует учитывать круговой обзор камеры. Также игровая камера может перемещаться в пределах 20-30 см. во все стороны от своего нейтрального положения.

Таким образом при оптимизации кабины удалять невидимые полигоны нужно осторожно, чтобы из позиции камеры не было видно дыр в модели. Лучше оставить лишние полигоны, в видимости которых есть сомнения. А те которые собираетесь удалять можно оставить в слое «invisible», который можно отключить при экспорте модели.

Группы сглаживания (Smoothing Groups) должны присутствовать на всех треугольниках.

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

UV координаты не должны выходить за пределы +-7.0 в любом направлении.

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

Наименования и анимация

Диапазон анимации должен быть от 0 до 100 кадра, для любого из анимированных объектов. Также необходимо создать Note Track в Track View Dope Sheet с ключами «start» в 0 кадре и «finish» в 100 кадре для одного из объектов. В случае кабины это объект throttle.

Track View - Dope Sheet. Ключи «start» и «finish»

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

Контроллеры анимации

Нельзя использовать ограничители движения (Сonstraints).

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

Анимированные объекты

Органы управления

Аэродинамические поверхности:

Название прибора или устройстваОбозначениеПоложение в 0 кадреПоложение в 100 кадре
Ручка управления самолетомstick_elevator *полностью от себяполностью на себя
stick_ailerons *до упора влеводо упора вправо
Педалиpedalsлевая педаль впередправая педаль вперед
Дополнительные элементы педалейpedals(1-8) **----
Закрылкиflapsубранывыпущены
Триммерtrimmerна пикированиена кабрирование
Воздушный тормозairbrake_leverубранывыпущены

Двигатель:

Название прибора или устройстваОбозначениеПоложение в 0 кадреПоложение в 100 кадре
Ручка управления двигателемthrottleхолостой ходмакс. обороты
доп.throttle(1-2)----
Смесьmixtureбогатаяобедненная
доп.mixture(1-3)----
Шаг винтаprop_pitchбольшой шагмалый шаг
Нагнетательsuperchargerвыкл.вкл.
доп.supercharger(1-2)----
Ручка створок радиатора для двигателя №1radiator_leverзакрытыоткрыты
Ручка створок радиатора для двигателя №2radiator_lever1закрытыоткрыты
Ручка створок радиатора для двигателя №3radiator_lever2закрытыоткрыты
Ручка створок радиатора для двигателя №4radiator_lever3закрытыоткрыты
Ручка створок маслорадиатора для двигателя №1oil_radiator_leverзакрытыоткрыты
Ручка створок маслорадиатора для двигателя №2oil_radiator_lever1закрытыоткрыты
Ручка створок маслорадиатора для двигателя №3oil_radiator_lever2закрытыоткрыты
Ручка створок маслорадиатора для двигателя №4oil_radiator_lever3закрытыоткрыты

Вооружение:

Название прибора или устройстваОбозначениеПоложение в 0 кадреПоложение в 100 кадре
Вооружение 1weapon1 ***нейтр.нажата
Вооружение 2weapon2 ***нейтр.нажата
Вооружение 3weapon3 ***нейтр.нажата
Вооружение 4weapon4 ***нейтр.нажата

Прочее:

Название прибора или устройстваОбозначениеПоложение в 0 кадреПоложение в 100 кадре
Шассиgearsубранывыпущены
доп.gears(1-2)----

Приборы и оборудование 

Навигация и управление:

Название прибора или устройстваОбозначениеПоложение в 0 кадреПоложение в 100 кадре
Высота (10k м или фт.)altitude_10k0 градусов360 градусов по часовой стрелке
Высота (км или тыс.фт.)altitude_hour0 градусов360 градусов по часовой стрелке
Высота (сотни м или фт.)altitude_min0 градусов360 градусов по часовой стрелке
Скоростьspeed0 км/ч (knots) *****макс. скорость *****
Скорость (дублирующий прибор)speed_010 км/ч (knots) *****макс. скорость *****
Скорость (дублирующий прибор)speed_020 км/ч (knots) *****макс. скорость *****
Число Махаmachминимальное число махамаксимальное число маха
доп.mach1----
Скороподъемностьvarioмакс. спускмакс. подъем
Авиагоризонт. Подъёмaviahorizon_pitchмакс. подъеммакс. спуск
Авиагоризонт. Кренaviahorizon_rollмакс. правый кренмакс. левый крен
Указатель скольженияbankшарик в крайнем левом положениишарик в крайнем правом положении
доп.bank(1-2)----
Указатель поворотаturnналевонаправо
доп.turn(1-2)----
Компасcompass0 градусов360 градусов против часовой стрелки
доп.compass(1-4)----
Часыclock_hour0 градусов. 24 часа360 градусов по часовой стрелке
clock_min0 градусов. 60 минут360 градусов по часовой стрелке
clock_sec0 градусов. 60 секунд360 градусов по часовой стрелке
Индикатор перегрузкиg_meterмакс. отрицательная перегрузкамакс. положительная перегрузка
g_meter_minмакс. отрицательная перегрузкамакс. положительная перегрузка
g_meter_maxмакс. отрицательная перегрузкамакс. положительная перегрузка
Счётчик боезапасаammo_counter(1-8)полныйпустой
Лампа окончания боезапасаammo_counter(1-8)_lampне анимируетсяне анимируется

Двигатель:

Название прибора или устройстваОбозначениеПоложение в 0 кадреПоложение в 100 кадре
Давление нагнетателяmanifold_pressureмакс. давление
доп.manifold_pressure1----
Обороты (однострелочный прибор)rpm0 об/минмакс. об/мин
доп.rpm1----
Обороты (двухстрелочный прибор)rpm_hour0 градусов360 градусов по часовой стрелке
доп.rpm1_hour----
Обороты (двухстрелочный прибор)rpm_min0 градусов360 градусов по часовой стрелке
доп.rpm1_min----
Давление маслаoil_pressureмакс. давление
доп.oil_pressure1----
Температура маслаoil_temperatureмин. температурамакс. температура
доп.oil_temperature1----
Температура водыwater_temperatureмин. температурамакс. температура
доп.water_temperature1----
Температура головки цилиндровhead_temperatureмин. температурамакс. температура
доп.head_temperature1----
Температура впускаcarb_temperatureмин. температурамакс. температура
доп.carb_temperature1----
Указатель уровня топливаfuelпустой бакполный бак
доп.fuel1----
Давление топливаfuel_pressureмакс. давление
доп.fuel_pressure(1-3)----
Индикатор створок радиатора для двигателя №1radiator_indicatorзакрытыоткрыты
Индикатор створок радиатора для двигателя №2radiator_indicator1закрытыоткрыты
Индикатор створок радиатора для двигателя №3radiator_indicator2закрытыоткрыты
Индикатор створок радиатора для двигателя №4radiator_indicator3закрытыоткрыты
Индикатор створок маслорадиатора для двигателя №1oil_radiator_indicatorзакрытыоткрыты
Индикатор створок маслорадиатора для двигателя №2oil_radiator_indicator1закрытыоткрыты
Индикатор створок маслорадиатора для двигателя №3oil_radiator_indicator2закрытыоткрыты
Индикатор створок маслорадиатора для двигателя №4oil_radiator_indicator3закрытыоткрыты

Прочее:

Название прибора или устройстваОбозначениеПоложение в 0 кадреПоложение в 100 кадре
Индикатор положения воздушного тормозаairbrake_indicatorубранывыпущены
Шасси выпущены. Лампаgear_lamp_down *****не анимируетсяне анимируется
Шасси убраны. Лампаgear_lamp_up *****не анимируетсяне анимируется
Шасси в процессе уборки\выпуска. Лампаgear_lamp_off *****не анимируетсяне анимируется

Примечания:

  • * - stick_ailerons должен быть прилинкован к stick_elevator. Если РУС состоит из одного объекта (обычно так оно и есть), то необходимо создать фиктивный объект (бокс) stick_elevator и расположить его в месте шарнира РУС.
  • ** - педали могут представлять собой сложный параллелограммный механизм. В этом случае все объекты, относящиеся к педалям, должны иметь имена pedals1pedals2pedals3 и т.д.
  • *** - гашетки на РУС должны быть прилинкованы к stick_ailerons и иметь имена weapon1 (пулеметы), weapon2 (пушки), weapon3 (бомбы, ракеты).
  • **** - обычно спидометр имеет нелинейную шкалу. Необходимо анимировать стрелку так, чтобы показания линейно зависели от скорости. Например, если максимальная скорость по прибору 500 км/ч, то на каждые 2 кадра скорость должна увеличиваться на 10 км/ч по прибору.
  • ***** - эти имена присваиваются плашкам, на которых лежит текстура светящейся лампы.
Линковка РУС

Материалы и текстуры

Модель использует несколько комплектов текстур:

  • body – основной комплект текстур для кабины. Диффуз + нормали + спекуляр
  • glass – текстура стекла. Только диффуз
  • glass_dmg – текстура стекла заляпанная маслом (для модели повреждений). Только диффуз
  • gauges - текстура шкал приборов а также их корпусов. Диффуз + нормали + спекуляр
  • gunsight – отдельная текстура для прицела (без прицельной сетки). Диффуз + нормали + спекуляр.
  • labels – опциональная текстура для всех плашек с текстовыми надписями в кабине. Диффуз + нормали + спекуляр
  • boxes – опциональная текстура для оборудования которое не поместилось на основной текстуре (радиооборудование и подобные агрегаты). Диффуз + нормали + спекуляр

Текстура diffuse может быть с альфа каналом или без.

Текстура нормалей должна содержать спкеуляр в альфа канале.

Используйте опциональные текстуры по своему усмотрению. Например если у вас будет комплект текстур boxes с оборудованием и на этом оборудовании уже будут нанесены текстовые надписи то, соответственно, надобность в комплекте labels отпадает. Оставшуюся часть табличек можно перенести на текстуру gauges.

Основное правило — чем меньше текстур тем лучше.

Текстуры diffuse (диффуз)

Стандартные размеры текстур следующие:

  • body – 4096x4096x24bit (без альфы). Если кабина простая и небольшая по размеру, то возможно использование текстуры меньшего разрешения
  • glass – 1024x1024x32bit
  • glass_dmg – 1024x1024x32bit
  • gauges – 2048x2048x32bit или 24bit. Для многоместной кабины с большим количеством приборов разрешение может быть поднято до 4096 пикселей
  • gunsight – 1024x1024x24bit (без альфы). Только корпус прицела. Текстура стекла прицела не нужна. На стекло кладётся шейдер без текстуры diffuse.
  • labels – 1024x1024x32bit. Или по мере необходимости до 2048
  • boxes – 2048x2048x24bit (no alpha). Может быть меньшего размера.

Текстура glass_dmg нужна только если двигатель расположен перед кабиной.

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

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

  • f3f_1_cockpit_body_c.tga
  • f3f_1_cockpit_body_n.tga
  • f3f_1_cockpit_glass_a.tga
  • f3f_1_cockpit_glass_a_dmg.tga
  • f3f_1_cockpit_gauges_a.tga
  • f3f_1_cockpit_gauges_n.tga
  • f3f_1_cockpit_gunsight_c.tga
  • f3f_1_cockpit_gunsight_n.tga
  • f3f_1_cockpit_labels_a.tga (опционально)
  • f3f_1_cockpit_labels_n.tga (опционально)
  • f3f_1_cockpit_boxes_c.tga (опционально)
  • f3f_1_cockpit_boxes_n.tga (опционально)

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

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

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

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

  • f3f_1_cockpit_body.psd
  • f3f_1_cockpit_gauges.psd и т.д.

Текстуры normal (нормали) и specular (спекуляр)

Текстура нормалей и спекуляра должна быть такого же размера как и текстура диффуз на основе которой они делаются. Карта нормалей использует каналы RGB а спекуляр использует альфа канал. В исходниках постарайтесь держать нормали в виде бампа. То есть карты высот перед конвертацией NormalMapFilter. В готовые нормали желательно вносить только небольшие исправления. Используйте стандартные настройки для перевода бампа в нормали: Min Z = 0, Scale = 8.

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

Нормали и зелёный канал

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

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

Следующие значения яркости спекуляра рекомендованы к использованию:

  • Основные окрашенные поверхности: K~80-90% (40-70 RGB)
  • Металл (сколы, царапины) K~20-40% (170-210 RGB)

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

На все объекты в кабине должен быть присвоен один Multi/Sub-Object материал «cockpit».

Названия подматериалов:

  • (1) – glass
  • (2) – body
  • (3) – gauges
  • (4) – gauges_dmg (расколотые стёкла в приборах)
  • (5) – collimator или sight
  • (6) – collimator_glass or sight_glass (стекло прицела)
  • (7) – bullet_glass* (отверстия повреждений в стекле)
  • (8) – bullet_metal* (отверстия повреждений в металле)
  • (9) – labels (опционально)
  • (10) – boxes (опционально)
  • (11) – flare_red** (красная лампа)
  • (12) – flare_green** (зелёная лампа)

* - вы можете создать отдельный Multi/Sub-Object материал для плашек повреждений.

** - вы можете создать отдельный Multi/Sub-Object материал для плашек ламп. Нужных вам цветов.

Для текстуры glass_a_dmg отдельный материал не нужен т.к. при возникновении повреждений подменяется неповреждённая текстура в материале glass.

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

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

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

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

  • uv – слой с раскладкой UV. Самый верхний слой, включаемый по необходимости.
  • gauge_dial_rpm
  • color_handle_throttle_fs_37038
  • overlay_pedal_left
  • label_warning_landing_gear
  • color_body_fs_34128 и т.д.

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

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

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

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

  • electric_radio_equipment
  • electric_circuit_breakers
  • control_throttle_quadrant и т.д.

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

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

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

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

Дополнительные заметки

Плашки повреждений

Повреждения (пулевые отверстия) на стекле и в металле выполняются плашками с характерными текстурами (их вы можете найти в модели примера). Не забывайте про повреждения приборной панели и приборов. Игрок должен видеть что самолёт повреждён.По периметру переплета на стеклах можно добавить немного загрязнённости. Яркость альфы для нее не должна превышать 40%. Металл (сколы и царапины) на текстуре diffuse лучше рисовать в диапазоне 90-120 RGB. Текстуры кабины не должны быть «стерильными». Постарайтесь передать через диффуз и спекуляр следы ежедневного использования аппарата.

Всем объектам в цене необходимо задать свойства (обычной геометрии) через «Object Properties Editor», а также присвоить материалы DagorMat2 с соответствующими шейдерами. За подробной справкой пожалуйста обратитесь в соответствующий раздел Dagor Tools документа по самолётам. Выгрузка кабины производится по тем же правилам. Но для кабины выгружаем всего 2 файла:

  • %имя_самолёта%_cockpit.lod00.dag — файл геометрии кабины и нулевого лода самолёта
  • %имя_самолёта%_cockpit_anim.a2d — файл анимации

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

Тематические ссылки

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