Env terrainmorph: различия между версиями
Kogemyaka (обсуждение | вклад) м (→Советы) |
Kogemyaka (обсуждение | вклад) |
||
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 39: | Строка 39: | ||
== Параметры == | == Параметры == | ||
− | + | {{sdk param p y r}} направление модификации DISPLACEMENT-поверхностей; | |
+ | *'''Start Radius''' – радиус вокруг объекта env_terrainmorph, внутри которого любая поверхность DISPLACEMENT будет претерпевать изменения при старте модификации; | ||
+ | *'''Goal Radius''' – радиус вокруг объекта env_terrainmorph, внутри которого любая поверхность DISPLACEMENT будет претерпевать изменения в конце модификации; не используется, если установлен флажок "Instant"; | ||
+ | *'''Duration''' – время, в течение которого проходит модификация поверхностей (секунды); не используется, если установлен флажок "Instant"; | ||
+ | *'''Displacement Fraction''' – на сколько хорошо будут поддаваться модификации различные поверхности DISPLACEMENT; | ||
+ | **0 – объект env_terrainmorph не изменяет поверхности; | ||
+ | **0.5 – изменения проходят в пол силы; 1 – нормальный тип изменения; | ||
+ | **2 – выбирается мнимая точка в 2 раза дальше объекта env_terrainmorph и все изменяемые точки поверхностей стремятся к ней, однако точки не будут перемещены дальше чем сам объект env_terrainmorph, что приведёт к "отсечению" их координат и размещению в плоскости объекта env_terrainmorph и т.д. | ||
== Флаги == | == Флаги == | ||
+ | *'''Instant''' – выполнить модификацию поверхности моментально; если этот флажок установлен, то свойства "Duration" и "Goal Radius" игнорируется. | ||
== Inputs == | == Inputs == | ||
− | + | *'''BeginMorph''' – начать модификацию поверхностей. | |
== Карта == | == Карта == | ||
+ | csssdk_env_terrainmorph.vmf | ||
=== Используются объекты === | === Используются объекты === | ||
+ | *env_terrainmorph | ||
+ | *trigger_once | ||
+ | *env_explosion | ||
+ | *DISPLACEMENT | ||
=== Описание карты === | === Описание карты === | ||
− | + | В центре карты есть небольшая "зелёная зона". Когда игрок подходит к этой зоне происходит взрыв и на месте взрыва образуется воронка. В следующем раунде или после рестарта карты (например: консольной командой "mp_restartmap 1") воронка от взрыва останется на том же месте, а дополнительная модификация поверхности может только углубить её. Обратите внимание, где в редакторе находится объект env_terrainmorph. Он помещён ниже изменяемой поверхности, а не выше её. Посмотрите пункт "Как работает объект env_terrainmorph" чтобы попробовать получше разобраться в принципе работы объекта env_terrainmorph. | |
+ | |||
+ | Кстати, обратите внимание на то, что при загрузке карты в консоли игры CS:S красным цветом выводится большое предупреждающее сообщение: | ||
+ | |||
+ | <CODE>Warning: using WorldTwoTextureBlend on a non-displacement surface. | ||
+ | Support for this will go away soon. | ||
+ | - Material : nature/blendcliffgrass001a | ||
+ | - Surface center : -296 -544 -16 | ||
+ | Warning: using WorldTwoTextureBlend on a non-displacement surface (material: nature/blendcliffgrass001a). Support for this will go away soon.</CODE> | ||
+ | |||
+ | Это сообщение говорит о том, что не стоит применять материал с шейдером WorldTwoTextureBlend на обычных НЕ-DISPLACEMENT-поверхностях, и то что эта функция пока что работает, но вскоре будет отключена. | ||
+ | |||
[[Категория:Source Point entity]] | [[Категория:Source Point entity]] | ||
[[Категория:CSS SDK]] | [[Категория:CSS SDK]] | ||
[[Категория:Энтити окружения]] | [[Категория:Энтити окружения]] |
Текущая версия на 05:20, 22 сентября 2009
Оригинал 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.
Параметры
- Pitch Yaw Roll (Y Z X) – ориентация объекта на карте (направление распространения); направление модификации DISPLACEMENT-поверхностей;
- Start Radius – радиус вокруг объекта env_terrainmorph, внутри которого любая поверхность DISPLACEMENT будет претерпевать изменения при старте модификации;
- Goal Radius – радиус вокруг объекта env_terrainmorph, внутри которого любая поверхность DISPLACEMENT будет претерпевать изменения в конце модификации; не используется, если установлен флажок "Instant";
- Duration – время, в течение которого проходит модификация поверхностей (секунды); не используется, если установлен флажок "Instant";
- Displacement Fraction – на сколько хорошо будут поддаваться модификации различные поверхности DISPLACEMENT;
- 0 – объект env_terrainmorph не изменяет поверхности;
- 0.5 – изменения проходят в пол силы; 1 – нормальный тип изменения;
- 2 – выбирается мнимая точка в 2 раза дальше объекта env_terrainmorph и все изменяемые точки поверхностей стремятся к ней, однако точки не будут перемещены дальше чем сам объект env_terrainmorph, что приведёт к "отсечению" их координат и размещению в плоскости объекта env_terrainmorph и т.д.
Флаги
- Instant – выполнить модификацию поверхности моментально; если этот флажок установлен, то свойства "Duration" и "Goal Radius" игнорируется.
Inputs
- BeginMorph – начать модификацию поверхностей.
Карта
csssdk_env_terrainmorph.vmf
Используются объекты
- env_terrainmorph
- trigger_once
- env_explosion
- DISPLACEMENT
Описание карты
В центре карты есть небольшая "зелёная зона". Когда игрок подходит к этой зоне происходит взрыв и на месте взрыва образуется воронка. В следующем раунде или после рестарта карты (например: консольной командой "mp_restartmap 1") воронка от взрыва останется на том же месте, а дополнительная модификация поверхности может только углубить её. Обратите внимание, где в редакторе находится объект env_terrainmorph. Он помещён ниже изменяемой поверхности, а не выше её. Посмотрите пункт "Как работает объект env_terrainmorph" чтобы попробовать получше разобраться в принципе работы объекта env_terrainmorph.
Кстати, обратите внимание на то, что при загрузке карты в консоли игры CS:S красным цветом выводится большое предупреждающее сообщение:
Warning: using WorldTwoTextureBlend on a non-displacement surface.
Support for this will go away soon.
- Material : nature/blendcliffgrass001a
- Surface center : -296 -544 -16
Warning: using WorldTwoTextureBlend on a non-displacement surface (material: nature/blendcliffgrass001a). Support for this will go away soon.
Это сообщение говорит о том, что не стоит применять материал с шейдером WorldTwoTextureBlend на обычных НЕ-DISPLACEMENT-поверхностях, и то что эта функция пока что работает, но вскоре будет отключена.