Env terrainmorph

Материал из CSM Wiki
Перейти к навигации Перейти к поиску

Оригинал Env_terrainmorph

Описание

Объект env_terrainmorph используется для модификации геометрии поверхностей DISPLACEMENT. При модификации поверхности DISPLACEMENT изменяется только её внешний вид, а модель столкновений остаётся прежней. Поэтому при использовании env_terrainmorph нельзя сделать так, чтобы перед игроком вздыбилась земля и игрок не смог бы пройти через образовавшуюся преграду. Если возникнут трудности с пониманием принципа работы объекта – посмотрите пункт "Как работает объект env_terrainmorph".

Особенности использования

  • Этот объект обновляется в каждом раунде. Это означает что любые изменения объекта НЕ будут наследоваться в последующих раундах.
  • Объект должен быть установлен там, где будет использоваться.
  • На карте может быть установлено множество этих объектов
  • Объект НЕ изменяет модель столкновений (collisions) для DISPLACEMENT-поверхностей.
  • Изменённая DISPLACEMENT-поверхность сохраняет свои изменения на протяжении всей карты. То есть, после модификации DISPLACEMENT-поверхности при помощи объекта env_terrainmorph, такая поверхность сохранит свои изменения на все последующие раунды.
  • Этот объект изменяет DISPLACEMENT-поверхности с частотой равной 20 раз в секунду.
  • После своего использования объект env_terrainmorph автоматически удаляется до начала следующего раунда.

Ошибки

Не обнаружены.

Как работает объект env_terrainmorph

Принцип действия объекта env_terrainmorph достаточно сложен, однако для успешного применения этого объекта на ваших картах знать его всё же придётся.

Первое что нужно усвоить - это то, что объект env_terrainmorph всего лишь передвигает точки поверхностей, которые находятся в радиусе его действия. В каком направлении будут перемещены точки указывает свойство "angles", который нужно добавить вручную, если у вас его нет (см. пункт "Ошибки").

Второе что нужно знать - это то, что объект env_terrainmorph действует только на те точки DISPLACEMENT-поверхностей в радиусе своего действия, которые находятся "перед" ним. Это указывается при помощи всё того же свойства "angles". Например: нам нужно, чтобы объект env_terrainmorph поднял все точки в радиусе своего действия на какую-нибудь высоту. Для этого:

  • устанавливаем свойство "angles" = "-90 0 0", что соответствует направлению вверх;
  • ставим "Displacement Fraction" = 10;
  • объект env_terrainmorph устанавливаем в редакторе на той высоте, на которой хотим чтобы оказались все точки поверхностей;
  • выбираем подходящий радиус действия "Start Radius" и делаем его одинаковым с "Goal Radius";
  • выполняем функцию "BeginMorph".

Если посмотреть на результат, то по окончании модификации все точки окажутся на той высоте, на которой был поставлен объект env_terrainmorph. Почему точки НЕ оказались выше, ведь выбрано высокое значение свойства "Displacement Fraction"? Это как раз и есть то самое "перед", о котором говорилось чуть раньше. То есть, наш env_terrainmorph смотрит вверх ("angles" = "-90 0 0"). При этом он образует невидимую плоскость во все стороны от себя, пересекать которую модифицированные точки не могут. Как повёрнута эта плоскость зависит только от свойства "angles".


Третье что нужно знать – это то, как изменяется модификация с течением времени "Duration". В начале модификации вокруг объекта env_terrainmorph находятся все точки для всех DISPLACEMENT-поверхностей, которые находятся в радиусе действия "Start Radius". Так же в начале модификации рассчитывается на какое расстояние будут перемещена "первая партия" точек. Для каждой точки это расстояние разное и зависть от времени "Duration", масштаба "Displacement Fraction", и расстояния от точки до объекта env_terrainmorph. "Первая партия" точек передвигается на новое место. Если "Goal Radius" не равен "Start Radius", то на этом этапе радиус охвата точек так же изменяется и операция повторяется до тех пор пока не будет достигнуто нужное количество шагов операции.

Советы

Несколько примеров применения объекта env_terrainmorph с небольшими пояснениями:

Параметры

  • Воротить горы в начале каждого раунда, создавая неповторимый горный рельеф. Горы удобнее всего запихать в 3D Skybox.
  • Возводить стены из под земли. В начале карты лучше всего сбрасывать все изменения при помощи какого-то одного объекта env_terrainmorph, приводящего DISPLACEMENT-поверхность в идеальную горизонтальную поверхность. Добавить соответствующее звуковое сопровождение и тряску земли при помощи объекта env_shake, чтобы отвлечь игрока от нюансов возведения стены. Для того, чтобы игрок не мог пройти через такие стены можно ставить на карте невидимые объекты func_wall_toggle.
  • Создание воронок от взрыва, на примере того, как это сделано на карте-примере csssdk_env_terrainmorph.vmf.

Флаги

Inputs

Outputs

Карта

Используются объекты

Описание карты

Смотрите также