This page has been translated automatically.
Видеоуроки
Интерфейс
Основы
Продвинутый уровень
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Профессиональный уровень (SIM)
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Контроль версий
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Sandworm
Использование инструментов редактора для конкретных задач
Расширение функционала редактора
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World-ноды
Звуковые объекты
Объекты поиска пути
Player-ноды
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Плагины
Форматы файлов
Материалы и шейдеры
Rebuilding the Engine Tools
Интерфейс пользователя (GUI)
Двойная точность координат
API
Animations-Related Classes
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
VR-Related Classes
Работа с контентом
Оптимизация контента
Материалы
Визуальный редактор материалов
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Учебные материалы

IG Aviation Add-on

Дополнение IG Aviation содержит набор готовых к использованию компонентов самолета, создающих такие эффекты, как возгорание двигателя и шасси, дым, инверсионный след, шасси, настройки лопастей несущего винта вертолета с эффектом размытия и эффектом промывки несущего винта. Дополнение также показывает реализацию трассировки колес и метеорадара.

Компоненты#

Авиационные эффекты#

Для настройки различных эффектов самолета (возгорание двигателя или шасси, дым, инверсионный след и т.д.):

  1. Назначьте свойство EffectAircraftController родительскому узлу (воздушному судну) и оставьте все параметры без изменений.
  2. Присвойте свойство EffectAircraft каждому узлу, представляющему визуальные эффекты различных типов.

    Доступны следующие параметры свойства:

    • Node — узел, который должен быть включен/отключен
    • Emitter Node — узел, испускающий частицы для эффекта
    • Default Enable — указывает, должен ли эффект быть включен по умолчанию
    • Effect Type — выбор типа эффекта самолета (возгорание двигателя или шасси, дым, инверсионный след и т.д.)
    • Wind Dependent — указывает, влияет ли на эффект ветер или нет

Шасси#

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

  1. Назначьте свойство LandingGears родительскому узлу (воздушному судну).

    Доступны следующие параметры свойства:

    • Gear — указывает, что шестерни выдвинуты
    • Time Covers — время открытия крышки, в секундах
    • Time Gears — время включения передачи, в секундах
    Примечание
    Убедитесь, что все опорные точки настроены правильно.
  2. Определите, какие узлы представляют части шасси, и присвойте им свойство LandingGearPart.

    Доступны следующие параметры свойства:

    • Node — узел, подлежащий перемещению (обычно это узел, которому присвоено это свойство)
    • Is Cover — указывает, является ли деталь крышкой или нет (крышка открывается перед выдвижением зубчатого колеса)
    • Use Dummy Cover — указывает, следует ли закрывать колесную нишу фиктивной крышкой после втягивания передачи. При включении отображается дополнительная опция When Extended. Он используется для указания того, должна ли быть видна крышка-манекен при выдвинутом шасси.

      Примечание
      Если эта опция включена, поле Node не должно содержать узел, которому присвоено это свойство, так как компонент будет отключен навсегда после удаления.
    • Rotate — указывает, должна ли деталь вращаться
    • Axis — координаты оси вращения детали
    • Extension Angle — угол поворота детали при выдвинутом зубчатом колесе, в градусах
    • Retraction Angle — угол поворота детали при убранном зубчатом колесе, в градусах
    • Cover Closable — указывает, должна ли крышка закрываться после выдвижения шестерни или оставаться открытой

Лопасть несущего винта#

Свойство RotorBlade управляет конусообразностью лопастей несущего винта вертолета и создает размытие диска из-за вращения лопасти. Чтобы использовать это свойство, лопасть несущего винта в вашей модели вертолета должна иметь отдельную сетку и материал.

Использование этого свойства также подразумевает, что у вас есть материал лезвия (mesh_blade.mgraph в дополнении), а также узел и материал для круга, в который лезвия превращаются при быстром вращении (проверьте узел disk и материал mesh_blur_blades.mgraph helicopter_simple Node Reference в дополнении).

Назначьте свойство RotorBlade родительскому узлу (узлу-ротору).

Доступны следующие параметры свойства:

RotorBlade property

Input
Speed Скорость вращения ротора, в об/мин. Это значение по умолчанию, которое может быть изменено во время выполнения.
Beta 0 Параметр, определяющий угол сужения. Это значение по умолчанию, которое может быть изменено во время выполнения.
Beta Cos Параметр, используемый для продольного взмахивания крыльями. Это значение по умолчанию, которое может быть изменено во время выполнения.
Beta Sin Параметр, используемый для бокового взмаха. Это значение по умолчанию, которое может быть изменено во время выполнения.
Rotor
Rotation Direction Направление вращения ротора.
Pivot Узел должен вращаться с заданной частотой вращения.
Axis Ось вращения поворотного узла.
Blade
Sample Образец с одним лезвием. Модель должна иметь только одно лезвие, количество лезвий регулируется параметром Total Count. Лопасть должна иметь свою собственную сетку и материал, не зависящий от корпуса модели вертолета. Материал должен обеспечивать визуализацию изгиба лезвия.
Length Длина лезвия, в метрах.
Total Count Общее количество лопастей несущего винта. Образец лезвия клонируется необходимое количество раз, на равном расстоянии друг от друга и размещается по кругу.
Material Beta 0
Parameter
Название параметра материала лезвия, используемого для управления визуализацией угла сужения.
Material Blade
Length Parameter
Название параметра материала лезвия, используемого для установки длины лезвия.
Circle
Node Узел размытого круга, который заменяет лопасти при высоких значениях оборотов.
Material Beta 0
Parameter
Название параметра материала окружности, используемого для управления визуализацией угла сужения.
Material Beta Cos
Parameter
Название параметра материала окружности, используемого для управления визуализацией продольных взмахов.
Material Beta Sin
Parameter
Название параметра материала окружности, используемого для управления визуализацией боковых взмахов.
Material Blade
Length Parameter
Название параметра материала круга, используемого для задания длины лезвия.
Material Blade
Count Parameter
Название параметра материала круга, используемого для установки количества лезвий.
Material UV Animation
Parameter
Название параметра материала круга, используемого для управления УФ-анимацией круга в зависимости от значения частоты вращения ротора.
RPM To Time
Coefficient
Множитель для преобразования значения RPM в значение параметра UV-анимации.
Blurring
Threshold Blade Speed Скорость вращения, до которой видны только лопасти и начиная с которой лопасти начинают размываться. Нижнее значение интервала скоростей вращения, при котором видны как лопасти, так и размытый круг.
Threshold Circle Speed Скорость вращения, начиная с которой отображается только размытый круг, лопасти больше не видны. Верхнее значение интервала скоростей вращения, при котором видны как лопасти, так и размытый круг.
Blade Alpha Кривая, управляющая прозрачностью лезвия в течение интервала, в течение которого видны как лезвия, так и размытый круг.
Circle Alpha Кривая, управляющая прозрачностью круга в течение интервала, в течение которого видны как лезвия, так и размытый круг.

Эффект вихрей#

Этот компонент позволяет создавать эффект пылевых облаков, поднимаемых потоком воздуха от несущего винта, когда вертолет стоит на земле, взлетает или приземляется, или летит близко к поверхности.

  1. Создайте эффекты для каждого типа поверхности в редакторе UNIGINE и назначьте свойство RotorWashEffect каждому из них. Доступны следующие параметры:

    Intensity Значение интенсивности видимости промывки ротора. При минимальном значении 0 эффект полностью невидим. С максимальным значением 1 — полностью виден. Это значение по умолчанию, которое может быть изменено во время выполнения.
    Max Height Высота узла от земли, при которой эффект исчезает.
    Min Height Высота узла от земли, при которой эффект имеет максимальную интенсивность.
    Forward Offset Множитель для перемещения эффекта вперед относительно вертолета. Расстояние смещения зависит от скорости перемещения. Эта настройка предназначена для того, чтобы эффект был виден из кабины пилота.
    Static Only Корневой узел для эффектов, которые отображаются только тогда, когда вертолет не движется.
    Disable Static Отключите узел статического эффекта, когда вертолет движется. Если опция отключена (т.е. включен статический эффект), статический эффект отображается в течение всего срока службы систем частиц. В большинстве случаев отключать эту опцию (т.е. включать видимость статического эффекта на протяжении всего срока службы частиц) нет необходимости, поскольку эффект не будет виден из кабины пилота.
    Max Static Velocity Верхний предел скорости, при котором вертолет считается неподвижным (м/с).
  2. Назначьте модификатор в зависимости от типа узла эффекта: ParticlesParameterModifier / DecalParameterModifier / FieldHeightParameterModifier. Модификаторы необходимы для выравнивания соответствующего узла (Particles/Decal/FieldHeight) с эффектом.

    ParticlesParameterModifier имеет следующие параметры:

    Recursive Переключает синхронизацию дочерних систем частиц.
    Enabled by Default Переключает состояние узла по умолчанию. Если узел отключен по умолчанию, вам нужно включить его с помощью кода после добавления в сцену.
    Sync Синхронизация частиц с помощью Syncker. Рекомендуется включать только в том случае, если синхронизация по сети имеет решающее значение, поскольку это может повлиять на производительность.
    Lerp Life Time Сопоставьте значение времени жизни частиц с интенсивностью эффекта. Если интенсивность эффекта равна 0, то значение времени жизни также равно 0.
    Lerp Spawn Rate Сопоставьте значение скорости появления частиц с интенсивностью эффекта. Если интенсивность эффекта равна 0, то значение скорости появления также равно 0.
    Lerp Velocity Сопоставьте значение скорости частиц с интенсивностью эффекта. Если интенсивность эффекта равна 0, то значение скорости также равно 0.
  3. Назначьте вертолету свойство RotorWashController и выберите тип поверхности, соответствующий каждому эффекту.

  4. Установите тип поверхности с помощью кода для каждой поверхности.

Метеорадар#

Метеорадар (он же WSR), используемый для мониторинга погоды впереди самолета (облаков и осадков), является неотъемлемой частью профессионального летного тренажера, позволяя пилотам тренировать стратегическое и тактическое планирование безопасной траектории полета. Он реализован как компонент MeteoRadar и требует соответствующих навыков для его эффективного использования — точной настройки этой системы и правильной интерпретации показаний метеорадара. Все ключевые параметры радара доступны для настройки, включая дальность отображения (для мониторинга погоды на ближних и дальних расстояниях), усиление (для оценки опасности погодных условий), а также углы наклона, FOV и прочее. Радар работает с волюметрическими облаками, которые сгенерируются системой облаков UNIGINE, что обеспечивает согласованность показаний радара с видом из кабины самолета.

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

Для использования метеорадара создайте Node Dummy и назначьте на нее компонент MeteoRadar. Доступны следующие параметры:

Radar
Orientation Euler Вектор углов Эйлера (тангаж, крен, рыскание).
Fixed Rotation Включает и выключает гироскоп для метеорадара.
Gain Чувствительность метеорадара. Чем выше значение, тем менее чувствителен радар (он показывает только опасные области).
Shadow Gain Мощность метеорадара.
FOV Угол обзора метеорадара в градусах.
Range
Min Range Минимальное расстояние, на котором радар отображает информацию о погоде (нижний предел дальности отображения).
Max Range Максимальное расстояние, на котором радар отображает информацию о погоде (верхний предел дальности отображения).
Width Ширина изображения на дисплее радара (количество горизонтальных линий).
Height Высота изображения на дисплее радара (количество вертикальных линий).
Debug Включает и выключает визуализацию текущего направления движения радара.

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

Открытие мира#

Чтобы открыть мир, содержащий модели:

  • Установите дополнение IG Aviation (доступно через браузер UNIGINE SDK в разделе Add-Ons) и добавьте его в свой проект (нажав Other Actions -> Configure Project -> Assets в разделе Projects в разделе UNIGINE SDK Browser).
  • Нажмите File -> Open World (Ctrl + O) или откройте окно Asset Browser, откройте папку \ig_aircraft\sample_content и выберите мир ig_aircraft. Сцена откроется.
Примечание
Отдельные узлы также доступны в виде файлов *.node в соответствующих подкаталогах каталога data/ig_aircraft/.

Содержимое папки \ig_aircraft\sample_content предназначено для демонстрации того, как использовать свойства. Он может быть удален, если вам не нужна демонстрационная сцена и ресурсы.

Настройка Вашего проекта#

Примечание
Дополнение содержит файл readme.md с шагами настройки.

Чтобы добавить надстройку IG Aviation в ваш проект на C++:

  1. Установите дополнение IG Aviation (доступно через UNIGINE SDK Browser в разделе Add-Ons) и добавьте его в свой проект (нажав Other Actions -> Configure Project -> Assets в разделе Projects в UNIGINE SDK Browser).

    Другой способ добавить дополнение к вашему проекту - скопировать следующие папки из этого дополнения в папку вашего проекта:

    • data/ig_aircraft и от data/properties до data
    • от source/ig_aircraft_components до source
  2. Добавьте файлы source/ig_aircraft_components/* в свой проект на C++.
  3. Создайте свое приложение для регистрации добавленных компонентов в системе компонентов C++.
  4. Configure ig_config.xml — добавьте следующее в блок entity_types:

    Исходный код (XML)
    <entity id="201" name="be-200-mod">
    	<path>ig_aircraft/sample_content/be_200_mod.node</path>
    	<component id="0" name="light_outer">
    		<property>LightAircraftController</property>
    		<parameter type="int" name="data1">landing</parameter>
    		<parameter type="int" name="data2">taxi</parameter>
    		<parameter type="int" name="data3">navigation</parameter>
    		<parameter type="int" name="data4">beacon</parameter>
    		<parameter type="int" name="data5">strobe</parameter>
    		<parameter type="int" name="data6">logo</parameter>
    	</component>
    	<component id="1" name="light_inner">
    		<property>LightAircraftController</property>
    		<parameter type="int" name="data1">windows</parameter>
    		<parameter type="int" name="data2">cockpit</parameter>
    	</component>
    	<component id="2" name="fire_engine">
    		<property>EffectAircraftController</property>
    		<parameter type="int" name="data1">fire_engine_1</parameter>
    		<parameter type="int" name="data2">fire_engine_2</parameter>
    		<parameter type="int" name="data3">fire_engine_3</parameter>
    		<parameter type="int" name="data4">fire_engine_4</parameter>
    	</component>
    	<component id="3" name="fire_aircraft">
    		<property>EffectAircraftController</property>
    		<parameter type="int" name="data1">fire_landing_front</parameter>
    		<parameter type="int" name="data2">fire_landing_back</parameter>
    		<parameter type="int" name="data3">fire_tail</parameter>
    	</component>
    	<component id="4" name="landing_gears">
    		<property>LandingGears</property>
    		<parameter type="int" name="data1">gear</parameter>
    		<parameter type="float" name="data2">manual_gear</parameter>
    	</component>
    	<component id="5" name="effects">
    		<property>EffectAircraftController</property>
    		<parameter type="int" name="data1">smoke</parameter>
    		<parameter type="int" name="data2">contrail</parameter>
    	</component>
    	<articulated_part id="1" name="aileron">
    		<node invert_pitch="1">aileron_left</node>
    		<node>aileron_right</node>
    	</articulated_part>
    	<articulated_part id="2" name="rudder">
    		<node invert_yaw="1">rudder</node>
    	</articulated_part>
    	<articulated_part id="3" name="elevator">
    		<node invert_pitch="1">flipper_left</node>
    		<node invert_pitch="1">flipper_right</node>
    	</articulated_part>
    	<articulated_part id="4" name="flap">
    		<node invert_pitch="1">flap_0_left</node>
    		<node invert_pitch="1">flap_0_right</node>
    		<node invert_pitch="1">flap_1_left</node>
    		<node invert_pitch="1">flap_1_right</node>
    	</articulated_part>
    	<articulated_part id="5" name="engine">
    		<node>engine_left</node>
    		<node>engine_right</node>
    	</articulated_part>
    	<articulated_part id="6" name="wheel">
    		<node>chassis_element_left/chassis_left/wheels_left</node>
    		<node>chassis_element_right/chassis_right/wheels_right</node>
    		<node>dummy_axis_chassis_front/chassis_front001/wheels_front</node>
    	</articulated_part>
    	<articulated_part id="7" name="slat">
    		<node>slat_left</node>
    		<node>slat_right</node>
    	</articulated_part>
    	<volume_definition id="0" name="body" shape="0">volumes</volume_definition>
    	<volume_definition id="1" name="wings" shape="1">volumes</volume_definition>
    </entity>
    <entity id="180" name="uc-135">
    	<path>ig_aircraft/sample_content/helicopter/node/helicopter_simple.node</path>
    	<component id="1" name="RotorBlade">
    		<node>body/rotor_aux</node>
    		<property>RotorBlade</property>
    		<parameter type="float" name="data1">speed</parameter>
    		<parameter type="float" name="data2">beta_0</parameter>
    		<parameter type="float" name="data3">beta_cos</parameter>
    		<parameter type="float" name="data4">beta_sin</parameter>
    	</component>
    	<component id="2" name="RotorWashController">
    		<property>RotorWashController</property>
    		<parameter type="float" name="data1">intensity</parameter>
    		<parameter type="float" name="data2">rpm_intensity</parameter>
    	</component>
    </entity>
    <entity id="218" name="minibus">
    	<path>ig_aircraft/sample_content/minibus/minibus.node</path>
    	<component id="0" name="wheel_trace">
    		<property>WheelTraceController</property>
    		<parameter type="float" name="data1">input_intensity</parameter>
    	</component>
    </entity>
  5. Настройте свой хост. Пример конфигурации хоста можно найти в файле readme.md.

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

  • 201 — самолет (эффекты пожара, шасси)
  • 180 — вертолет (конусообразование несущего винта, промывка несущего винта)
  • 218 — автомобиль (наклейка со следом колеса)
Последнее обновление: 19.04.2024
Build: ()