Объект env_terrainmorph используется для модификации геометрии поверхностей DISPLACEMENT. При модификации поверхности DISPLACEMENT изменяется только её внешний вид, а модель столкновений остаётся прежней. Поэтому при использовании env_terrainmorph нельзя сделать так, чтобы перед игроком вздыбилась земля и игрок не смог бы пройти через образовавшуюся преграду. Если возникнут трудности с пониманием принципа работы объекта – посмотрите пункт "Как работает объект env_terrainmorph".
Не обнаружены.
Принцип действия объекта env_terrainmorph достаточно сложен, однако для успешного применения этого объекта на ваших картах знать его всё же придётся.
Первое что нужно усвоить - это то, что объект env_terrainmorph всего лишь передвигает точки поверхностей, которые находятся в радиусе его действия. В каком направлении будут перемещены точки указывает свойство "angles", который нужно добавить вручную, если у вас его нет (см. пункт "Ошибки").
Второе что нужно знать - это то, что объект env_terrainmorph действует только на те точки DISPLACEMENT-поверхностей в радиусе своего действия, которые находятся "перед" ним. Это указывается при помощи всё того же свойства "angles". Например: нам нужно, чтобы объект env_terrainmorph поднял все точки в радиусе своего действия на какую-нибудь высоту. Для этого:
Если посмотреть на результат, то по окончании модификации все точки окажутся на той высоте, на которой был поставлен объект 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 с небольшими пояснениями:
csssdk_env_terrainmorph.vmf
В центре карты есть небольшая "зелёная зона". Когда игрок подходит к этой зоне происходит взрыв и на месте взрыва образуется воронка. В следующем раунде или после рестарта карты (например: консольной командой "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-поверхностях, и то что эта функция пока что работает, но вскоре будет отключена.