Итак, загружаем в окно рендера какую-нибудь ячейку и идём в раздел
Special Effects -> ImageSpace Modifiers или в меню
World -> ImageSpace Modifiers и видим список уже готовых модификаторов.
Те, у которых отмечен чек-бокс
Animatable, имеют длительность и "живые" эффекты (обычно нарастание на старте, плавный спад на финише, различные пертурбации в середине).
Можно нажать на кнопку
Test и в окне рендера полюбоваться на произведённый эффект. Те, у которых этот чек-бокс не отмечен, работают по принципу "либо есть, либо нет".
Разберёмся сначала со статическими модификаторами на примере
CG00BirthBaseISFX.Так как собственной длительности он не имеет, зададим ему продолжительность с помощью актор-эффекта.
А для того, чтобы не было заметно мгновенного резкого наложения этого модификатора,
замаскируем его старт и финиш коротким динамическим модификатором
GrenadeFragISFX.Пишем скрипт (тип скрипта выбираем
Effect):
Код
scn zzEffectScript
Begin ScriptEffectStart
imod GrenadeFragISFX
imod CG00BirthBaseISFX
End
Begin ScriptEffectFinish
imod GrenadeFragISFX
rimod CG00BirthBaseISFX
End
В разделе
Game Effects -> Base Effect создаём новый базовый эффект, даём ему
ID и имя, в окошке
Effect Archetype выбираем
Script, в
Assoc Item - наш только что написанный скрипт.
Отмечаем чек-бокс
Self. Готово, жмём
OK.В разделе
Game Effects -> Actor Effect снова создаём новый эффект, даём ему
ID, настройки не трогаем. Справа, в пустом пока списке эффектов, жмём
ПКМ -> New и в окошке прокрутки выбираем базовый эффект, который перед этим создали.
В поле
Duration задаём нужную длительность - это и будет время действия эффекта, и вместе с ним модификатора. При желании задаём условия в списке
Conditions.
Загружаем в окно рендера нужную ячейку и в том месте, где у игрока должно помутиться в глазах, ставим новый триггер с таким скриптом на нём:
Код
scn zzObfuscationTriggerA
Begin OnTriggerEnter player
player.CIOS ActorEffectID
End
В скрипт вместо
ActorEffectID нужно подставить
ID нашего Actor Effect'а.
При каждом вхождении игрока в триггер на него будет накладываться временный визуальный эффект помутнения зрения.
Теперь разберёмся как применить динамический
ImageSpace Modifier.
Если среди готовых модификаторов не нашлось пригодного, нарисуем его. Посмотрим, как это делается, на примере простенького модификатора с тремя визуальными эффектами.
Слева в списке создаём новый пункт
(ПКМ -> New), вписываем
ID и отмечаем галку
Animatable.
В поле
Duration вписываем длительность. Пусть будет шесть секунд - как раз три игровые минуты. Спланируем как будет выглядеть эффект.
Пусть помутнение нарастает в течение 0.6 сек., до 4.5 сек. остаётся неизменным и плавно спадает к завершению. Дополнительно наложим небольшое покраснение и затемнение, плавно растущее до 2-ой секунды и также плавно спадающее после.
Помутнение сделаем составным из двух эффектов -
Depth Of Field И
Double Vision.
Двигаем ползунок Time в первую запланированную точку - 0.6 сек.
Устанавливаем силу (
Strength) эффекта
Depth Of Field на 0.5 ед. и видим, что число стало красным. Силу эффекта
Double Vision ставим на 0.005.
Что мы сейчас сделали.
Мы установили в этой точке первый пик эффекта.
Если сейчас нажать кнопку
Test, то мы увидим, что он нарастает от старта, достигает максимума на отметке 0.6 сек и постепенно спадает к финишу.
Как нам сделать, чтобы эффект держался на одном уровне до 4.5 сек.?
Установить там ещё один пик эффекта.
Двигаем ползунок на 4.5 и устанавливаем те же значения для тех же эффектов.
Теперь между пиками будут сохраняться пиковые значения силы.
Если по каким-то причинам требуется убрать пик (например, чтобы переставить его на другую точку), нужно найти его ползунком
Time (найти красные цифры) и нажать
"Х" рядом с тем пиком, который убираем.
Сейчас мы сделали так, что два эффекта работают синхронно, но это не обязательно должно быть так, для каждого можно задавать собственную кривую со своими максимумами.
Теперь добавим покраснение и затемнение с пиком на 2-ой секунде.
Двигаем ползунок в нужную точку и смотрим в раздел
Cinematic.
Для раскрашивания картинки в разные цвета здесь служат эффекты
Tint и Fade.
Если говорить о покраснении, то грубо говоря,
Tint - это насколько красными будут объекты,
а
Fade - насколько красно будет у игрока перед глазами.
Нам больше подходит
Fade.
Выбираем из цветов красный, а сколько именно красноты прибавится к картинке, задаётся значением в поле
A. Настройки
Brightness, Saturnation, Contrast и Contrast Avg Lum управляют не отдельным цветом, а картинкой в целом.
Для затемнения нам нужна настройка
Brightness (яркость). Рядом с ней видим поля
Multiply (множитель) И
Add (слагаемое). По умолчанию они равны соответственно 1 и 0.
Что это значит применительно к яркости (и к остальным - по аналогии):
Нормальная яркость принимается за единицу.
Multiply - это во сколько раз изменится яркость сцены в этой точке с учётом всех действующих модификаторов. Это означает, что если уже активен какой-нибудь
ImageSpace Modifier с множителем яркости 2 и накладывается ещё один с таким же множителем яркости, то яркость в итоге увеличится в четыре раза. Множитель 1 означает, что яркость не меняется,
множитель 0 означает, что яркость отсутствует - чёрный экран.
Add - какое значение прибавится к яркости. Прибавить к нормальной яркости единицу - всё равно, что увеличить её в два раза (но не забываем, что текущая яркость картинки может отличаться от нормальной под действием, например, модификатора, назначенного ячейке).
Множители и слагаемые могут быть и отрицательными числами.
Итак, чуть-чуть подтемним нашу сцену, установив одновременно с пиком красноты яркость на 70% от нормальной (множитель 0.7).
Вот что получилось.
Обратите внимание, что значения размытия и раздвоения (
Depth Of Field И Double Vision) сохраняют пиковые значения, хоть ползунок
Time находится в промежутке между пиками.
Щёлкаем
Test, смотрим, что вышло.
Ну вот, динамический модификатор готов. Он имеет свою собственную продолжительность, поэтому никакие вспомогательные эффекты не требуются, можно накладывать его как есть. Растягиваем в нужном месте триггер с таким скриптом:
Код
scn AAAObfuscationTriggerB
Begin OnTriggerEnter player
imod ISModifierID
End
Вместо
ISModifierID в скрипт нужно подставить
ID модификатора.