Объёмный туман (Fog Volumes)

Материал из xrWiki
Версия от 19:25, 27 мая 2018; RedPython (обсуждение | вклад) (Новая страница: «Объёмный туман был реализован в X-Ray 1.5 для проекта "Чистое небо". Технология скорее для га…»)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Объёмный туман был реализован в X-Ray 1.5 для проекта "Чистое небо". Технология скорее для галочки, чем для практического применения, поэтому неудивительно, что источники объёмного тумана встречаются всего лишь в одном месте за всю игру — в подземке Агропрома.

Создание зон объёмного тумана[править]

В режиме Fog Volumes есть всего одна команда — добавить (Add). Добавляется примитив, которому можно задать одно из двух свойств:

  • Emitter — излучатель частиц
  • Occlusion — препятствие для частиц

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

зелёным — окклюдеры

Сама зона-эмиттер может содержать более одного источника объёмных частиц (см. конфиг).

Настройка конфига[править]

Путь к конфигам захардкожен и читается только из X:\gamedata\configs\environment\fog

[volume]    ; на файл одна такая секция
    EmittersNum         = 2         ; кол-во секций эмиттеров ниже
    ConfinementScale    = 0.9       ; Турбулентность. 0 - поток гладкий. Можно не указывать
    Decay               = 0.1       ; Затухание дыма. 1 - дым не затухает. Можно не указывать
    Type                = Fog       ; Тип симуляции: Fog или Fire. Можно не указывать, по умолчанию будет Fog
    GravityBuoyancy     = 0.001     ; Вес дыма положительный/отрицательный. Можно не указывать
    Hemi                = 1.0       ; Видимо, влияние hemi-компоненты освещения

[emitter00] ; нумерация начинается с 00, 01, 02...
    Type            = SimpleGaussian     ; Тип эмиттера (SimpleGaussian или SimpleDraught)
    Position        = 35.5, 7.0, 7.0     ; Позиция (в локальном пространстве)
    Radius          = 0.2                ; Размер источника (чем больше число, тем меньше источник)
    Sigma           = 1                  ; ???
    FlowSpeed       = 0.1                ; Скорость потока частиц
    FlowDirection   = 0.0, 1.8, 0.4      ; Направление потока (в локальном пространстве)
    Density         = 0.6                ; Плотность частиц

    ApplyDensity    = 1                  ; Источник генерирует вещество
    ApplyImpulse    = 1                  ; Источник применяет скорость

[emitter01] ; вторая секция
    Type            = SimpleDraught     ; Другой тип эмиттера, требует других параметров (см. ниже)
    Position        = 61.0, 58.0, 18.0
    Radius          = 0.23
    Sigma           = 1
    FlowSpeed       = 0.5
    FlowDirection   = 0.0, 0.0, 0.5
    Density         = 1.0
    DraughtPeriod   = 10.0              ; Период колебаний скорости в секундах
    DraughtPhase    = 0.0               ; Фаза колебаний скорости [0..1]
    DraughtAmp      = 0.5               ; Амплитуда колебаний [FlowSpeed*(1-DraughtAmp)..FlowSpeed*(1+DraughtAmp)]

    ApplyDensity    = 0
    ApplyImpulse    = 1

Настройка всей этой байды при полном отсутствии визуального взаимодействия займёт очень много времени. Для быстрого ознакомления с убогостью реализации можно создать кубическую зону тумана в чистом поле и указать ей пысовский конфиг agroprom_underground_area_01.ltx.