This page has been translated automatically.
Видеоуроки
Interface
Essentials
Advanced
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Landscape Tool
Sandworm
Использование инструментов редактора для конкретных задач
Extending Editor Functionality
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World Nodes
Звуковые объекты
Объекты поиска пути
Players
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
Унифицированный язык шейдеров UUSL
Плагины
File Formats
Rebuilding the Engine Tools
GUI
Двойная точность координат
API
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
Работа с контентом
Оптимизация контента
Материалы
Material Nodes Library
Art Samples
Tutorials

Настройки окружающей среды

Внимание
Функционал, описанный в этой статье, недоступен в Community редакции SDK.
Чтобы использовать этот функционал вам необходимо получить лицензию на Sim SDK.

One of the key factors making visualization of the terrain database, with all entities moving around, immersive, and giving a perception of being physically present in the simulation is environment. It includes sky with celestial bodies and atmospheric effects that dramatically change the look of your virtual world depending on the weather and the time of day. The following models are used:Одним из ключевых факторов, обеспечивающих погружение и делающих визуализацию базы данных ландшафта, со всеми движущимися сущностями реалистичной, а также создающих ощущение физического присутствия в симуляции - это среда. Он включает в себя небо с небесными телами и атмосферные эффекты, которые резко меняют внешний вид вашего виртуального мира в зависимости от погоды и времени суток. Используются следующие модели:

  • An ephemeris model determines the position of the sun and moon, which both cast light into the scene, depending on given coordinates and date/time.Модель эфемерид определяет положение солнца и луны, которые освещают сцену, в зависимости от заданных координат и даты / времени.
  • A weather model, either in the IG or supplied by an external weather simulation, provides the cloud coverage, and a global wind concept with direction and strength, affecting vegetation animation and the environment.Модель погоды , либо в IG, либо предоставленная внешней симуляцией погоды, обеспечивает облачность и глобальную концепцию ветра с направлением и силой, влияющими на анимацию растительности и окружающую среду.

See AlsoСмотрите также#

  • The IG plugin API section for more details on managing IG via code (C++)Раздел API плагина IG для получения дополнительной информации об управлении IG через код (C ++)
  • SkyMap class for more details on managing sky and celestial bodies via code (C++)SkyMap класс для получения дополнительных сведений об управлении небом и небесными телами с помощью кода (C ++)
  • Meteo class for more details on managing global weather settings via code (C++)Meteo класс для получения дополнительных сведений об управлении глобальными настройками погоды с помощью кода (C ++).
  • Region class for more details on managing weather regions via code (C++)Region класс для получения дополнительной информации об управлении погодными регионами с помощью кода (C ++)

Celestial BodiesНебесные тела#

Using a full-year ephemeris model, IG automatically updates positions of the Sun, Moon, and stars based on the date, time, and geographic location.Используя груглогодичную модель эфемерид, IG автоматически обновляет положение Солнца, Луны и звезд в зависимости от даты, времени и географического положения.

By default IG is configured to work in the Greenwich time zone. But you can change time zone via code or by using the IG Editor Plugin.По умолчанию IG настроен для работы в часовом поясе Гринвича . Но вы можете изменить часовой пояс из кода добавив следующую строку в метод AppSystemLogic::init_ig():

Исходный код (C++)
ig_manager->getSkyMap()->setTimezone(8);

Configuring the Star FieldНастройка звездного поля#

Star field intensity might seem too low by default. You may need to adjust brightness level of your displays or increase maximum brightness of the star field for your area.По умолчанию интенсивность звездного поля очень низкая. Возможно, вам потребуется отрегулировать уровень яркости ваших дисплеев или увеличить максимальную яркость звездного поля для вашего региона.

To set up the stars and make them look brighter do the following: Чтобы звезды выглядели ярче, сделайте следующее:

  • Temporarily disable the sun node in the IG:DateTime window of the IG Editor Plugin and make sure the Stars intensity is set to high value. Временно отключите узел sun в редакторе
  • Open Environment Settings (Windows -> Settings -> Runtime/World/Render/Environment).Откройте Настройки среды (Windows -> Settings -> Runtime/World/Render/Environment)
  • Set the Environment Texture to stars_c.hdr.Убедитесь, что для Environment Texture установлено значение star_c.hdr
  • Click Environment Color and increase values of RGB color components until you reach the desired color and brightness of the star field (e.g., to 100,100,100).Щелкните Environment Color и увеличивайте значения цветовых компонентов RGB, пока не достигнете желаемой яркости звездного поля (например, до 100,100,100).

    Примечание
    The Alpha channel is used by the system to control Star Intensity (e.g., via CIGI).Канал Alpha используется системой для управления яркостью звезды (например, через CIGI).
  • Enable the sun node back again and save your world.Снова включите узел sun и сохраните свой мир.


Stars are positioned on the sky automatically, depending on the date/time and geographic location.
Звезды размещаются на небе автоматически, в зависимости от даты / времени и географического положения.

Configuring Sun and MoonНастройка Солнца и Луны#

IG has a built-in celestial body control (celestial_control packet). In order to use it, you should have:IG имеет встроенный контроль небесных тел (пакет celestial_control). Для того, чтобы его использовать, вам необходимо иметь:

  • Two nodes, one for the Sun, and one for the MoonДва узла, один для Солнца и один для Луны
  • The Celestial property assigned to the sun nodeСвойство Celestial присвоено узлу солнца
  • Parameters of the Celestial property containing links to the corresponding nodes.Параметры свойства Celestial, содержащие ссылки на соответствующие узлы.

Positions of the Sun and the Moon are adjusted automatically depending on the date/time and geographic location.Положение Солнца и Луны регулируется автоматически в зависимости от даты / времени и географического положения.

SkyMap Change CallbacksФункции обратного вызова при изменении SkyMap#

Sometimes it may be necessary to perform certain actions when the state of the sky changes (e.g. enable lighting at nignt time). Callbacks can be used for this purpose. Just implement your specific actions in a callback function and set it as follows:Иногда может потребоваться выполнить определенные действия при изменении состояния неба (например, включить освещение в ночное время). Для этого можно использовать обратные вызовы. Просто реализуйте свои конкретные действия в функции обратного вызова и установите ее следующим образом:

SkyMap change callback implementation:Реализация обратного вызова при изменении SkyMap:

Исходный код (C++)
/// callback function to be called when sky state changes
void SomeClass::my_callback()
{
	// pointer to your sun node (don't forget to initialize it)
	NodePtr sun;
	
	// calculating zenith angle to determine if it is night time or not
	float zenith = getAngle(vec3_up, sun->getDirection(AXIS_Z));
	bool night = zenith > sun_zenit_threshold;
	
	// switching lights
	for (auto & it : lights)
	{
		it.data.setEnable(night);
	}
	
	// switching the emission state for emissive materials
	for (auto & it : emissive_materials)
	{
		it->setState("emission",night);
	}			
}

// ...
// somewhere in code
void SomeClass::init()
{
	// adding "my_callback" to be called on changing sky state
	ig_manager->getSkyMap()->addCallbackRefresh(this, Unigine::MakeCallback(this, &SomeClass::my_callback ) );
}

Atmospheric and Weather EffectsАтмосферные и погодные эффекты#

IG supports the following weather effects:IG поддерживает следующие погодные эффекты:

  • Multiple atmospheric layersМножественные атмосферные слои и дымка
  • Sun angle-dependent haze color and densityЦвет и плотность дымки в зависимости от положения солнца
  • Procedurally generated volumetric cloudsПроцедурно сгенерированные влюметрические облака
  • Lightning, rain, snowМолния, дождь, снег

Weather simulation is achieved with the set up of the following entities.Моделирование погоды включает три компонента:

  • Global - глобальные атмосферные условия (пакет atmosphere_control): дальность видимости, скорость и направление ветра.
  • Слои погоды - представляющие слои атмосферы, не имеющие четких горизонтальных границ. Атмосферные эффекты наблюдаются в любом месте вертикального диапазона слоя.
  • Погодные регионы - отображение погоды в определенных регионах. У них такой же набор параметров (видимость, покрытие, ветер), что и у погодных слоев, но атмосферные эффекты для них ограничены их границами.
Примечание
  • Слои погоды и погодные регионы всегда имеют приоритет над глобальными атмосферными условиями (т.е. Глобальные атмосферные изменения не повлияют на погоду внутри слоя или региона).
  • Когда несколько слоев и областей перекрываются, их параметры объединяются.

Ветер погодного слоя изменяет глобальный масштаб анимации и анимацию ветра для растительности в зависимости от положения игрока внутри погодных слоев.

По умолчанию существует 5 глобальных погодных слоев:

  • Ground Fog - используется для моделирования эффекта наземного тумана.

    Примечание
    Этот эффект в настоящее время моделируется с помощью Environment Haze, которая зависит от расстояния видимости погодного слоя.
  • Cloud Layer 1 - используется для моделирования первого облачного слоя
  • Cloud Layer 2 - используется для моделирования второго облачного слоя
  • Rain - используется для моделирования дождя
  • Snow - используется для моделирования снега

При необходимости вы можете добавить больше слоев и регионов.

Облака#

Weather regions represent the shape of weather in certain areas from the top-down view (cyclone, turbulence zone, thunderstorm front). Various custom weather layers can be added to a region on demand.Объемные облака представляют собой массы частиц, которые имитируют поглощение света, создавая реалистичное снижение видимости при пролете. Облака могут отбрасывать тени на местность.


The type of region specify its shape:
IG в настоящее время поддерживает слоистые и слоисто-кучевые облака (типы 9 и 10 в соответствии со спецификацией CIGI), но вы можете расширить этот набор, унаследовав новые материалы от clouds_base.

There is always a Global region present in the world. The number of possible regions is unlimited.Покрытие облаков устанавливается автоматически с использованием значения Coverage из полученного пакета weather_control, или вы можете изменить его вручную с помощью следующего кода:

Исходный код (C++)
// setting cloud coverage for weather region with a given id
ig_manager->getMeteo()->getRegion(region_id)->setCloudDensity(density_value);
Примечание
Кучево-дождевые облака (Cumulonimbus 1, Cumulonimbus 2, Cumulonimbus 3) не могут контролироваться параметром Coverage из-за их специфических особенностей - этот тип облаков всегда имеет конечные границы и не может быть глобальным.

Покрытие облаков не меняется сразу, у него есть некоторый переходный период, обеспечивающий плавность. Вы можете настроить время перехода, изменив значение в теге cloud_transition_time в конфигурационном файле (data/ig_config.xml).

Молния#

Параметры Lightning можно найти в свойстве LightingProperties (data/ig/weather/properties/LightingProperties.prop).

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

  • Period - интервал между последующими вспышками молнии, в секундах.
  • Emission Params - набор параметров, определяющих эмиссионные свойства молнии:
    • первые два - emission_random_factor_min и emission_random_factor_max - эти значения определяют пределы случайной интенсивности вспышки (минимальное и максимальное отклонение от значения параметра Emission Scaleматериала молнии).
    • emission_period - определяет время жизни одиночной вспышки в секундах. Это значение всегда должно быть меньше, чем интервал между последующими вспышками.

PrecipitationsОсадки#

To adjust specific parameters for rain or snow (spawn rate, size of raindrops/snowflakes, etc.) select the IG precipitation node in the World Nodes window and tweak the parameters of the PrecipitationEffect property assigned to it.Чтобы настроить параметры дождя или снега (интенсивность, размер капель / снежинок и т.д.), Выберите соответствующий узел на сцене и настройте параметры присвоенного ему свойства PrecipitationParams.

The following parameters are available:Доступны следующие параметры:

  • Precipitation Type — type of precipitation (rain or snow).Minimum Intensity и Maximum Intensity - эти значения определяют пределы случайной интенсивности дождя или снега.
  • Emitter Node — particles node that simulates the effect.Minimum Particle Size и Particle Size - эти значения определяют изменение размера капель дождя или снежинок.
  • Minimum and Maximum Particles Size — limits for random particles size.Source Node - узел, представляющий дождь или снег на сцене.
  • Minimum and Maximum Spawn Rate — limits for spawn rate value.Lut Base Image - Базовое рассеяние LUT которое будет использоваться.
  • Rotation — rotation parameters for particles based on the camera movement.
    • Enabled — enables the particles rotation.
    • Curve — sets the interpolation curve for rotation (linear interpolation when the curve is not specified).
    • Curve Angle Scale — maximum deflection angle.
    • Curve Speed Scale — maximum speed when the maximum deflection angle is achieved.
    Lut Mie Image - Рассеивание Ми LUT которое будет использоваться.

WindВетер#

Particle Systems (rain, snow, and so on) can be affected by the wind controlled by IG when they get inside a region with wind enabled. Wind also affects the cloud movement in cloud layers.На системы частиц может влиять ветер, управляемый IG. Это реализуется путем присвоения свойства ParticlesWind.

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

  • Recursive - синхронизирует все дочерние системы частиц с родительской, которой присвоено это свойство. Для дочерних систем частиц это свойство не требуется.
  • Gravity Vertical - значение силы тяжести, определяющее скорость падения частиц.

For your convenience, we have also added the windsock.node asset to the IG Template, it is available in ig_data\objects\windsock\.Для вашего удобства мы также добавили ассет windsock.node в шаблон IG, он доступен в data\ig\objects\windsock\.

This asset is already preconfigured to be affected by the IG wind via the WindSock property.Этот ассет уже предварительно настроен на воздействие ветра IG через свойство WindSock.

The following parameters are available:Доступны следующие параметры:

  • Angle Wind — additional angle rotating the mesh to align it with the wind direction.Angle Wind - дополнительный угол поворота ветроуказателя для совмещения с направлением ветра.
  • Mesh Skinned — the windsock mesh.Mesh Skinned - сетка ветроуказателя.
  • Anim Power — animation of the windsock deformation depending on the wind speed variation.Anim Power - анимация деформации ветроуказателя в зависимости от изменения скорости ветра.
  • Anim Standing — animation of the windsock rippling.Anim Standing - анимация ряби ветроуказателя.

Обратные вызовы при изменении погоды#

Иногда может потребоваться выполнить определенные действия при изменении погодных условий (например, установить ориентацию для ветроуказателя или флюгера). Это можно сделать с помощью обратных вызовов так же, как и для изменение состояния неба . Просто реализуйте необходимые действия в функции обратного вызова и установите ее следующим образом:

Реализация обратного вызова изменения погоды:

Исходный код (C++)
/// callback function to be called when weather conditions change
void SomeClass::my_weather_callback()
{
	// setting orientation of the vane downwind
	vec3 wind_direction = ig_manager->getMeteo()->getMeanWindSpeed(vane_node->getWorldPosition());
	vane_node->setWorldDirection(wind_direction, vec3_up);
}

// ...
// somewhere in code
void SomeClass::init()
{
	// adding "my_weather_callback" to be called on changing weather conditions
	ig_manager->getMeteo()->addCallbackMeteoChanged(this, Unigine::MakeCallback(this, &SomeClass::my_weather_callback );
}
Последнее обновление: 29.04.2021
Build: ()