Видеоуроки
Interface
Essentials
Advanced
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Настройки и предпочтения
Работа с проектами
Настройка параметров узла
Setting Up Materials
Настройка свойств
Освещение
Landscape Tool
Sandworm
Использование инструментов редактора для конкретных задач
Extending Editor Functionality
Встроенные объекты
Узлы (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World Objects
Звуковые объекты
Объекты поиска пути
Players
Программирование
Основы
Настройка среды разработки
Примеры использования
UnigineScript
C++
C#
Унифицированный язык шейдеров 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
Работа с контентом
Оптимизация контента
Материалы
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 by adding the following line to the AppSystemLogic::init_ig() method:По умолчанию IG настроен для работы в часовом поясе Гринвича . Но вы можете изменить часовой пояс из кода добавив следующую строку в метод AppSystemLogic::init_ig():

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

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

Star field intensity is very 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 make the stars look brighter do the following: Чтобы звезды выглядели ярче, сделайте следующее:

  • Temporarily disable the sun node in the EditorВременно отключите узел sun в редакторе
  • Open Environment Settings (Windows -> Settings -> Runtime/World/Render/Environment)Откройте Настройки среды (Windows -> Settings -> Runtime/World/Render/Environment)
  • Make sure the Environment Texture is set to star_c.hdrУбедитесь, что для Environment Texture установлено значение star_c.hdr
  • Click Environment Color and increase values of RGB color components until you reach the desired 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 and hazeМножественные атмосферные слои и дымка
  • Sun angle-dependent haze color and densityЦвет и плотность дымки в зависимости от положения солнца
  • Procedurally generated volumetric cloudsПроцедурно сгенерированные влюметрические облака
  • Lightning, rain, snowМолния, дождь, снег

Weather simulation includes three components:Моделирование погоды включает три компонента:

  • Global — global atmospheric conditions (atmosphere_control packet): visibility range, wind speed and direction.Global - глобальные атмосферные условия (пакет atmosphere_control): дальность видимости, скорость и направление ветра.
  • Weather layers — representing atmospheric layers, which have no distinct horizontal boundaries. Atmospheric effects are observed anywhere within the vertical range of a layer.Слои погоды - представляющие слои атмосферы, не имеющие четких горизонтальных границ. Атмосферные эффекты наблюдаются в любом месте вертикального диапазона слоя.
  • Weather regions — representing regional weather in certain areas. They have the same set of parameters (visibility, coverage, wind) as weather layers but atmospheric effects for them are limited to their boundaries.Погодные регионы - отображение погоды в определенных регионах. У них такой же набор параметров (видимость, покрытие, ветер), что и у погодных слоев, но атмосферные эффекты для них ограничены их границами.
Примечание
  • Weather layers and weather regions always take precedence over global atmospheric conditions (i.e. global atmospheric changes will not affect the weather inside a layer or region).Слои погоды и погодные регионы всегда имеют приоритет над глобальными атмосферными условиями (т.е. Глобальные атмосферные изменения не повлияют на погоду внутри слоя или региона).
  • When several layers and regions overlap their parameters are combined.Когда несколько слоев и областей перекрываются, их параметры объединяются.

Weather layer wind changes global Animation Scale and Animation Wind for Vegetation depending on player's position inside weather layers.Ветер погодного слоя изменяет глобальный масштаб анимации и анимацию ветра для растительности в зависимости от положения игрока внутри погодных слоев.

By default there are 5 global weather layers:По умолчанию существует 5 глобальных погодных слоев:

  • Ground Fog — used for ground fog effect simulation.Ground Fog - используется для моделирования эффекта наземного тумана.

    Примечание
    This effect is currently simulated using Environment Haze, that depends on Visibility Distance of a Weather Layer.Этот эффект в настоящее время моделируется с помощью Environment Haze, которая зависит от расстояния видимости погодного слоя.
  • Cloud Layer 1 — used for simulation of the first cloud layerCloud Layer 1 - используется для моделирования первого облачного слоя
  • Cloud Layer 2 — used for simulation of the second cloud layerCloud Layer 2 - используется для моделирования второго облачного слоя
  • Rain — used for rain simulationRain - используется для моделирования дождя
  • Snow — used for snow simulationSnow - используется для моделирования снега

You can add more layers and regions if necessary.При необходимости вы можете добавить больше слоев и регионов.

CloudsОблака#

Volumetric clouds are particle masses that simulate light absorption, creating a realistic reduction in visibility when flown through. Clouds can cast shadows on the terrain.Объемные облака представляют собой массы частиц, которые имитируют поглощение света, создавая реалистичное снижение видимости при пролете. Облака могут отбрасывать тени на местность.

IG currently supports Stratocumulus and Stratus clouds (types 9 and 10 according to CIGI specification), but you can extend this set by inheriting new materials from the clouds_base.IG в настоящее время поддерживает слоистые и слоисто-кучевые облака (типы 9 и 10 в соответствии со спецификацией CIGI), но вы можете расширить этот набор, унаследовав новые материалы от clouds_base.

Cloud coverage is set automatically using the Coverage value from a weather_control packet received, or you can change it manually via the following code:Покрытие облаков устанавливается автоматически с использованием значения Coverage из полученного пакета weather_control, или вы можете изменить его вручную с помощью следующего кода:

Исходный код (C++)
// setting cloud coverage for weather region with a given id
ig_manager->getMeteo()->getRegion(region_id)->setCloudDensity(density_value);
Примечание
Cumulonimbus clouds (Cumulonimbus 1, Cumulonimbus 2, Cumulonimbus 3) cannot be controlled by the Coverage parameter due to their specific features — this type of clouds always has finite bounds and cannot be global.Кучево-дождевые облака (Cumulonimbus 1, Cumulonimbus 2, Cumulonimbus 3) не могут контролироваться параметром Coverage из-за их специфических особенностей - этот тип облаков всегда имеет конечные границы и не может быть глобальным.

Cloud coverage does not change immediately, it has some transition period providing smoothness. You can adjust transition time by changing value in the cloud_transition_time tag in configuration file (data/ig_config.xml).Покрытие облаков не меняется сразу, у него есть некоторый переходный период, обеспечивающий плавность. Вы можете настроить время перехода, изменив значение в теге cloud_transition_time в конфигурационном файле (data/ig_config.xml).

LightningМолния#

Lightning parameters can be found in the LightingProperties property (data/ig/weather/properties/LightingProperties.prop).Параметры Lightning можно найти в свойстве LightingProperties (data/ig/weather/properties/LightingProperties.prop).

The following ones are available for adjustment:Для настройки доступны следующие:

  • Period — interval between the subsequent lightning flashes, in seconds.Period - интервал между последующими вспышками молнии, в секундах.
  • Emission Params — a set of parameters defining emission properties of the lightning flash:
    • the first two are emission_random_factor_min and emission_random_factor_max — these values define the limits of random flash intensity (min and max deviation from the value of the Emission Scale parameter of the lightning material).the first two are emission_random_factor_min and emission_random_factor_max — these values define the limits of random flash intensity (min and max deviation from the value of the Emission Scale parameter of the lightning material).
    • emission_period — defines the lifetime of a single flash, in seconds. This value should always be less than the interval between the subsequent flashes.emission_period — defines the lifetime of a single flash, in seconds. This value should always be less than the interval between the subsequent flashes.
    the first two are emission_random_factor_min and emission_random_factor_max — these values define the limits of random flash intensity (min and max deviation from the value of the Emission Scale parameter of the lightning material).emission_period — defines the lifetime of a single flash, in seconds. This value should always be less than the interval between the subsequent flashes.
    Emission Params - набор параметров, определяющих эмиссионные свойства молнии:
    • the first two are emission_random_factor_min and emission_random_factor_max — these values define the limits of random flash intensity (min and max deviation from the value of the Emission Scale parameter of the lightning material).первые два - emission_random_factor_min и emission_random_factor_max - эти значения определяют пределы случайной интенсивности вспышки (минимальное и максимальное отклонение от значения параметра Emission Scaleматериала молнии).
    • emission_period — defines the lifetime of a single flash, in seconds. This value should always be less than the interval between the subsequent flashes.emission_period - определяет время жизни одиночной вспышки в секундах. Это значение всегда должно быть меньше, чем интервал между последующими вспышками.

PrecipitationsОсадки#

To adjust parameters for rain or snow (intensity, size of raindrops/snowflakes, etc.) select the corresponding node on the scene and tweak the parameters of the PrecipitationParams property assigned to it.Чтобы настроить параметры дождя или снега (интенсивность, размер капель / снежинок и т.д.), Выберите соответствующий узел на сцене и настройте параметры присвоенного ему свойства PrecipitationParams.

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

  • Minimum Intensity and Maximum Intensity — these values define the limits of random intensity of rain or snow.Minimum Intensity и Maximum Intensity - эти значения определяют пределы случайной интенсивности дождя или снега.
  • Minimum Particle Size and Particle Size — these values define size variation for raindrops or snowflakes.Minimum Particle Size и Particle Size - эти значения определяют изменение размера капель дождя или снежинок.
  • Source Node — node representing rain or snow on the scene.Source Node - узел, представляющий дождь или снег на сцене.
  • Lut Base ImageBase scattering LUT to be used.Lut Base Image - Базовое рассеяние LUT которое будет использоваться.
  • Lut Mie ImageMie scattering LUT to be used.Lut Mie Image - Рассеивание Ми LUT которое будет использоваться.

WindВетер#

Particle Systems can be affected by the wind controlled by IG. This is implemented by assigning the ParticlesWind property.На системы частиц может влиять ветер, управляемый IG. Это реализуется путем присвоения свойства ParticlesWind.

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

  • Recursive — synchronizes all child particle systems with the parent one, which has this property assigned. Child particle systems don't require this property to be assigned.Recursive - синхронизирует все дочерние системы частиц с родительской, которой присвоено это свойство. Для дочерних систем частиц это свойство не требуется.
  • Gravity Vertical — the gravity value controlling how fast particles will drop.Gravity Vertical - значение силы тяжести, определяющее скорость падения частиц.

For your convenience, we have also added the windsock.node asset to the IG Template, it is available in data\ig\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 - анимация ряби ветроуказателя.

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

Sometimes it may be necessary to perform certain actions when weather conditions change (e.g. to set orientation for a windsock or a vane). This can be done using callbacks the same way as for changing sky state. Just implement your specific actions in a callback function and set it as follows:Иногда может потребоваться выполнить определенные действия при изменении погодных условий (например, установить ориентацию для ветроуказателя или флюгера). Это можно сделать с помощью обратных вызовов так же, как и для изменение состояния неба . Просто реализуйте необходимые действия в функции обратного вызова и установите ее следующим образом:

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

Исходный код (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: ()