Категории каталога

Прохождения [2]
Все прохождения к играм серии Postal
Коды [4]
Здесь можно узнать коды на игры серии Postal и к ее модификациям
PostED и модостроительство [18]
Здесь находятся туториалы и обучения по работе с редактором PostED и моддингом вцелом
Интересное [3]
Разные интересности, касающиеся Postal - секреты, интервью, факты, дневники разработчиков и прочее

Форма входа

Поиск

Мини-чат

200

Статистика

POSTAL WORLD IN RUSSIA

Каталог статей

Главная » Статьи » PostED и модостроительство

Имитация волн и актер FluidSurfaceInfo
Имитация волн


Обзор

Начиная с 927 билда, в движке появилась возможность имитации волнистой поверхности при помощи специальной меш-сетки FluidSurfaceInfo. Этот туториал - обзор основных возможностей данного актора.

Подготовка

Для начала подготовьте место для вашего будущего водоема. В принципе размеры водоема не ограничены, однако FluidSurfaceInfo довольно "жадная" до ресурсов штука, поэтому в действие вступает принцип "Лучше меньше, да лучше".

FluidSurfaceInfo

Теперь добавим на нашу карту актера FluidSurfaceInfo, для этого в Браузере Актеров ("Actor browser") найдите класс "Actor.Info.FluidSurfaceInfo"

Выберите этот класс, затем щелкните правой кнопкой мыши на вашем водоеме и в появившейся контекстной менюшке выберите "Add FluidSurfaceInfo Here". У вас на карте должен появится актор FluidSurfaceInfo в виде меш-сетки с хексами (ячейки в форме треугольника/шестиугольника). Вызовите свойства этого актора, дважды щелкнув левой кнопкой мыши по сетке.

Свойства FluidSurfaceInfo

Краткое описание свойств FluidSurfaceInfo.

AlphaCurveScale     Соотношение между "кривизной" и результирующей величиной прозрачности (alpha) в вершинах сетки.

AlphaHeightScale     Соотношение между высотой вершин сетки и результирующей величиной прозрачности (alpha) в вершинах сетки. Суммируется с альфой по кривизне (?)

AlphaMax     Максимальное значение прозрачности в вершинах сетки.

bShowBoundingBox     Показать рамку ограничивающую сетку.

bUseNoRenderZ     "Включить" параметр NoRenderZ

ClampTerrain     Ландшафт (TerrainInfo) ограничивающий распространение волн. Подробнее см. ниже.

FluidColor     Цвет меш-сетки в редакторе.

FluidDamping     Быстрота затухания волн. Значения в пределах: 0 .. 1.

FluidGridSpacing     Расстояние между вершинами сетки. За счет этого параметра можно сделать сетку

FluidSurfaceInfo довольно большой.

FluidGridType     Тип ячеек сетки: FGT_Hexagonal - смотрится лучше, чем FGT_Square, но работает медленнее.

FluidHeightScale     Масштаб высоты случайно генерируемых волн (1.0 - нормальная высота, 2.0 - в два раза больше и т.д.)

FluidNoiseFrequency     Число случайно генерируемых волн на поверхности воды (в секунду). Держите значение в пределах 50 (60).

FluidNoiseStrength     Минимальное и максимальное значения распределения высоты случайно генерируемых волн.

FluidSpeed     Скорость волн распространяющихся по поверхности. Имеется в виду скорость возрастания их амплитуды.

FluidXSize     Число вершин в сетке по оси Х.

FluidYSize     Число вершин в сетке по оси Y.

NoRenderZ     ?


OrientShootEffect     Определяет направление актора ShootEffect. true - ориентировать ShootEffect в направлении выстрела, false - ориентировать в направлении FluidSurfaceInfo.

OrientTouchEffect     Определяет направление актора TouchEffect. true - ориентировать TouchEffect в направлении вектора скорости touch актора, false - ориентировать в направлении FluidSurfaceInfo.

RippleVelocityFactor     Соотношение между скоростью актора, движущегося в воде, и высотой создаваемых волн (чем больше значение, тем выше будут волны).

ShootEffect     Какой эффект создавать при выстреле в поверхность.

ShootRadius     Радиус волн создаваемых при выстреле (?).

ShootStrength     Высота волн создаваемых при выстреле.

TestRipple     "Включить" тестовую волну (только в редакторе).

TestRippleRadius     Радиус тестовой волны.

TestRippleSpeed     Скорость движения тестовой волны по поверхности.

TestRippleStrength     Высота тестовой волны.

TouchEffect     Какой эффект создавать, если другой актор "коснулся" (touch) поверхности.

TouchStrength     Высота создаваемых волн при первом касании поверхности.

UOffset     Смещение текстуры поверхности воды (Skins[0]) по оси X (?).

UpdateRate     Частота обновления сетки. Увеличьте, если эффект волн происходит недостаточно плавно. Обычно не требуется указывать значения большие 60Гц.

UTiles     Число повторов текстуры поверхности воды по оси X.

VOffset     Смещение текстуры поверхности воды по оси Y (?).

VTiles     Число повторов текстуры поверхности воды по оси Y.

WarmUpTime     Время предварительной эмуляции (в секундах) воды при инициализации FluidSurfaceInfo (генерация шумов на поверхности и т.д.). Обычно требуется пара секунд.

Материал поверхности назначается как нулевой элемент массива Skins в разделе Display (FluidSurfaceInfo.Display.Skins[0]).

FluidSurfaceOscillator

В FluidSurfaceInfo волны генерируются по всей поверхности, если вам необходимо создавать волны только в определенной части поверхности - используйте актор FluidSurfaceOscillator. В браузере акторов его можно найти в закладке Actor.

Свойства:

FluidInfo     FluidSurfaceInfo, к которому "привязывается" данный FluidSurfaceOscillator.

Frequency     Частота колебаний осциллятора.

Phase     Фаза колебаний осциллятора (используется, если у вас к одной FluidSurface привязано несколько осцилляторов).

Radius     Радиус создаваемого эффекта.

Strength     Высота генерируемых волн.

Для того чтобы привязать осциллятор к соответствующей FluidSurface, в свойствах FluidSurfaceOscillator выберите FluidInfo и нажмите кнопку "Find", затем кликните на нужный FluidSurfaceInfo в редакторе (эффект от осциллятора будет генерироваться в той точке, куда вы кликнули).

"Подгонка" ландшафта (TerrainInfo) и FluidSurfaceInfo

Как вы, наверное, уже заметили, на вышеприведенном рисунке волны от осциллятора проходят сквозь ландшафт. Это довольно нереалистично. К тому же волны не "отталкиваются" от действительных границ водоема. Чтобы исправить это, в свойствах FluidSurfaceInfo выделите свойство ClampTerrain, нажмите кнопку Find и кликните на ландшафт, окружающий водоем (PostED в поле ClampTerrain подставит название выбранного объекта TerrainInfo). Затем необходимо перестроить уровень (Rebuild All) чтобы обновить массив вершин сетки, которые не будут создавать волн (так называемые clamped вершины). В эту категорию попадают все вершины которые блокируются ландшафтом, указанным в ClampTerrain, либо находящиеся внутри blocking volumes.

Обратите внимание, что теперь волны не проходят сквозь ландшафт. Замечание: необходимо обновлять массив clamped вершин (Rebuild All) после каждой смены размеров/положения FluidSurfaceInfo.

Surface alpha

Прозрачность каждой вершины (VertexAlpha) сетки FluidSurfaceInfo рассчитывается следующим образом:

VertexAlpha = MIN(AlphaMax, (Curvature * AlphaCurveScale) + (Height * AlphaHeightScale))

Где AlphaMax, AlphaCurveScale, AlphaHeightScale берутся из свойств FluidSurfaceInfo, Height - высота вершины относительно уровня сетки (?),Curvature - степень "кривизны" в данной вершине (?).

Взаимодействие объектов и FluidSurfaceInfo

Другие актеры могут взаимодействовать с FluidSurfaceInfo следующими способами:

    * Стрельба (shooting): по умолчанию, волны генерируются с указанной силой ShootStrength в точке, куда был произведен выстрел. В той же точке спаунится объект класса ShootEffect (если указан).
    * Касание (touching): если в свойствах актера стоит флаг bDisturbFluidSurface (не редактируется в свойствах актора), то при движении этого актера, на поверхности воды генерируются волны. Первая волна создается в начальной точке касания актера и поверхности воды, с параметрами TouchStrengh/TouchEffect (по аналогии с ShootStrength/ShootEffect). Затем волны генерируются на основе скорости движения актера в воде. RippleVelocityFactor используется для "подгонки" соотношения между горизонтальной составляющей вектора скорости актера и силой возникающих волн. Радиус волн берется из значения CollisionRadius движущегося актера.

Замечание: FluidSurfaceInfo не оказывает влияния на физику движения актеров, для этого, вам необходимо использовать Volume.

Автор

James Golding
jamesg@epicgames.com
Unreal Developer Network

Перевод: Shadow



Источник: http://www.unrealscript.narod.ru
Категория: PostED и модостроительство | Добавил: postalworld (17.10.2008)
Просмотров: 1003 | Рейтинг: 5.0/2
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]