Всё о Готике
PFX система (Эффекты излучаемых частиц).


автор статьи - Vam

1. Вступление.

Эффекты излучаемых частиц (ParticleFX), далее PFX, которые может производить система Готики, задаются набором параметров. Определение эффектов и их параметров выполняется в Daedalus скриптах. Рассмотрим эти файлы:
_WORK\DATA\SCRIPTS\SYSTEM\ParticleFX.src – исходный файл для компиляции всех файлов PFX системы.
_WORK\DATA\SCRIPTS\SYSTEM\_INTERN\ParticleFX.d – декларация класса C_PARTICLEFX.
_WORK\DATA\SCRIPTS\SYSTEM\_INTERN\PfxInst.d – содержит определения общих инстанций PFX системы.
_WORK\DATA\SCRIPTS\SYSTEM\_INTERN\PfxInstMagic.d – содержит определения инстанций магических заклинаний PFX системы.
_WORK\DATA\SCRIPTS\SYSTEM\_INTERN\PfxInstEngine.d – содержит определения инстанций ядра PFX системы. Они не должны изменяться!
PFX эффекты могут вызываться также из .MDS файлов и синхронизироваться с анимациями. Смотри для этого соответствующую документацию.
Что можно сказать про быстродействие, то оно прямо зависит от произведённого кол-ва частиц и удаления их от камеры. Чем больше эти параметры, тем ниже быстродействие, причем оно в большей степени зависит от удаленности частиц от камеры.
Активизация следующих особенностей PFX эффектов значительно уменьшает быстродействие: – Столкновения частиц – Пометки поверхности – Остаточный след

2. Параметры PFX эффектов.

Параметры как правило редактируются Спейсером, но могут также изменяться в файлах скриптов. В этой статье рассматриваются более 40 параметров PFX эффектов. Имена параметров, их типы, задаваемые значения и примеры значений для каждой группы параметров сведены в таблицу. Параметры, имена которых оканчиваются на S, являются строковыми переменными и инициализируются одним или несколькими значениями, заключенными в кавычки и разделёнными пробелом. Если кол-во значений ошибочно, то берутся значения, стоящие в списке первыми, также допустимо не инициализировать строковую переменную.
Значение BOOL указывает, что параметр может принимать значение истина (1 или TRUE) или ложь (0 или FALSE). Значение VEC указывает, что параметр является вектором размерности n из реальных чисел. Значение ANGLE указывает, что параметр является углом и его значение задается в градусах. Значение FOR указывает ссылку на систему отсчета, действительными системами отсчета являются World (мир) и Object (объект), причем PFX эффекты для объекта значительно снижают быстродействие и должны использоваться только в том случае, если это действительно необходимо.

2.1. Излучение – Временные параметры

Тип Параметр Значение Пример
VAR FLOAT ppsValue число 64
VAR STRING ppsScaleKeys_S строка “1 0.2 0 16 0.1”
VAR INT ppsIsLooping BOOL 1
VAR INT ppsIsSmooth BOOL 0
VAR FLOAT ppsFPS число 0.5
VAR STRING ppsCreateEm_S строка ???
VAR FLOAT ppsCreateEmDelay число ???

Pps в имени переменной означает кол-во частиц в секунду (particles per second). Эти параметры управляют временным поведением излучаемых частиц. Параметр ppsValue определяет кол-во излучаемых частиц в секунду. Периоды времени излучения задаются параметром ppsScaleKeys_S. Если ScaleKeys задан, то будет воспроизведен список этих ключей с определенной скоростью (ppsFPS), причем будет выполнена интерполяция (сглаживание) между отдельными ключами, если ppsIsSmooth установлен. Если установлен параметр ppsIsLooping, список будет излучаться циклически, иначе список будет излучен один раз и эффект закончится как только исчезнут последние частицы. Фактически в секунду излучается кол-во частиц определенное формулой ppsValue * отдельное значение ppsScaleKeys. В примере в первую секунду будет выпущено 64 частицы, во вторую – 13 частиц, в третью – 0 и т.д. Если ScaleKeys не задан и параметр ppsIsLooping сброшен, то ppsValue определяет кол-во частиц, которые будут выпущены сразу в начале эффекта.
Описание параметров ppsCreateEm_S и ppsCreateEmDelay мне не известно.

Примеры:
Однократное излучение
PpsValue = 40;
PpsScaleKeys_S = ” ”;
PpsIsLooping = 0;
PpsIsSmooth = 0;
PpsFPS = 0;

Постоянное излучение
PpsValue = 40;
PpsScaleKeys_S = ” ”;
PpsIsLooping = 1;
PpsIsSmooth = 0;
PpsFPS = 0;

Излучение во временном периоде
PpsValue = 40;
PpsScaleKeys_S = “1.0”;
PpsIsLooping = 0;
PpsIsSmooth = 0;
PpsFPS = 5;

Излучение порывами
PpsValue = 40;
PpsScaleKeys_S = “1.0 0 0 0 1.0 1 6.0 0.2 0.5”;
PpsIsLooping = 1;
PpsIsSmooth = 1;
PpsFPS = 0.8;

2.2. Излучение – Пространственное распределение

Тип Параметр Значение Пример
VAR STRING shpType_S “point,line,box,circle,sphere,mesh” “mesh”
VAR STRING shpFOR_S “world,object” “world”
VAR STRING shpOffsetVec_S VEC3 “0 1 0”
VAR STRING shpDistribType_S ”RAND,UNIFORM,WALK” “WALK”
VAR FLOAT shpDistribWalkSpeed число 0.0001
VAR INT shpIsVolume BOOL 0
VAR STRING shpDim_S VEC1/3 “10”, “23 32 20”
VAR STRING snpMesh_S строка “cross.3ds”
VAR INT shpMeshRender_B BOOL 0
VAR STRING shpScaleKeys_S строка ”[1.0] [0.8 0.9 0.2] [1.0]”
VAR INT shpScaleIsLooping BOOL 0
VAR INT shpScaleIsSmooth BOOL 0
VAR FLOAT shpScaleFPS число 2

Эти параметры определяют места, в которых создаются новые частицы. Для этой цели задаются параметры форм/поверхностей на которых создаются частицы. Устанавливаются также величины, локальные смещения и временное масштабирование излучающих форм.
Параметр shpType_S задает тип излучающей поверхности, выбирается из списка. Если задан тип mesh, то параметром snpMesh_S определяется имя файла поверхности. Если установлен shpMeshRender_B, то производится рендеринг поверхности вместе с излучаемыми частицами. Тип point (излучение из точки) является самым быстрым типом.
Параметр shpFOR_S определяет должно ли следовать излучение за поворотами поверхности (object – да, world – нет).
Параметр shpOffsetVec_S задает вектор смещения локальной системы координат источника излучения.
Параметр shpDistribType_S задает распределение излучаемых частиц по поверхности. RAND – случайное место излучения, UNIFORM – место выбирается упорядоченно и равномерно (работает только с типом line и circle), WALK – место выбирается упорядоченно и равномерно, но перемещается по поверхности(работает только с типом line и circle). Параметр shpDistribWalkSpeed задает скорость перемещения по поверхности источника излучения.
Параметр shpIsVolume определяет где должны рождаться частицы, на краю поверхности – 0, на всей площади поверхности – 1.
Параметр shpDim_S задает размер излучаемой поверхности (кроме типа mesh) и является в зависимости от типа поверхности одномерным или трехмерным вектором (для line,circle,sphere – 1D, для box – 3D).
Параметры shpScaleKeys_S, shpScaleIsLooping, shpScaleIsSmooth и shpScaleFPS определяют масштабирование поверхности во времени и по описанию идентичны соответствующим pps параметрам.

2.3. Частицы – Направление полета и скорость движения

Тип Параметр Значение Пример
VAR STRING dirMode_S “NONE,RAND,DIR,TARGET,MESH” “mesh”
VAR STRING dirFOR_S “world,object” “world”
VAR STRING dirModeTargetFOR_S “world,object” “world”
VAR STRING dirModeTargetPos_S VEC3 “30 23 67”
VAR FLOAT dirAngleHead ANGLE [0..359] 100
VAR FLOAT dirAngleHeadVar ANGLE [0..179] 50
VAR FLOAT dirAngleElev ANGLE [-90..+90] 0
VAR FLOAT dirAngleElevVar ANGLE [-90..+90] 8
VAR FLOAT velAvg CM/MSEC 0.3
VAR FLOAT velVar CM/MSEC 0.1

Эти параметры определяют направление полета и скорость излучаемых частиц.
Параметр dirMode_S задает направление полета частицы.
NONE или RAND – случайное направление полета частиц, излучаются шарообразно относительно источника. DIR – направление полета частиц задается параметрами dirAngleHead и dirAngleElev, это углы соответственно направления движения и высоты подъема. Если заданы параметры dirAngleHeadVar и dirAngleElevVar, то выполняется дисперсия (изменение) заданных углов в пределах установленных величин. Замечание: по причине оптимизации углы движком точно не устанавливаются и можно получить непредсказуемое направление полета частиц, однако, юстировкой углов можно добиться приемлемого эффекта.
TARGET – излучение частиц направлено на определенную цель. Координаты цели задаются параметром dirModeTargetPos_S, в зависимости от типа цели dirModeTargetFOR_S, координаты являются локальными (для object) или глобальными (для world).
MESH – излучение с mesh поверхности, углы и дисперсии углов аналогичны значению DIR.
Параметры velAvg и velVar задают соответственно среднюю скорость и дисперсию скорости полета частиц.
Параметр dirFOR_S определяет к чему относится поверхность к объекту или миру.

2.4. Частицы – Время жизни

Тип Параметр Значение Пример
VAR FLOAT lspPartAvg MSEC 700
VAR FLOAT lspPartVar MSEC 300

Параметры lspPartAvg и lspPartVar задают соответственно среднее время и дисперсию времени жизни частиц.

2.5. Частицы – Летательные способности

Тип Параметр Значение Пример
VAR STRING flyGravity_S VEC3 “0 -0.0001 0”
VAR INT flyCollDet_B [0,1,2,3,4] 3

Параметр flyGravity_S задает вектор гравитации в относительной системе координат мира.
Параметр flyCollDet_B определяет реакцию частиц при столкновении. Имеются следующие варианты: 0 – проверка на столкновение не проводится, 1 – тормозящее отражение, 2 – ускоряющее отражение, 3 – обнуление скорости частицы, 4 – удаление частицы. При включенном параметре уменьшается быстродействие.

2.6. Частицы – Визуализация

Тип Параметр Значение Пример
VAR STRING visName_S строка “NAME.TGA/.3DS”
VAR STRING visOrientation_S “NONE,VELO,VELO3D” “VELO”
VAR INT visTexIsQuadPoly BOOL 0
VAR FLOAT visTexAniFPS число 0.5
VAR INT visTexAniIsLooping BOOL 0
VAR STRING visTexColorStart_S RGB [0..255,0..255,0..255] “155 91 25”
VAR STRING visTexColorEnd_S RGB [0..255,0..255,0..255] “155 91 25”
VAR STRING visSizeStart_S VEC3 “50 50”
VAR FLOAT visSizeEndScale [0..1..x] 2
VAR STRING visAlphaFunc_S “NONE,BLEND,ADD,MUL” “BLEND”
VAR FLOAT visAlphaStart [0..255] 255
VAR FLOAT visAlphaEnd [0..255] 255

Параметр visName_S задает имя файла визуализации частиц. Могут использоваться как TGA так и 3DS файлы соответственно для изменения или анимации частиц.
Параметр visOrientation_S определяет с какой ориентацией будет производиться рендеринг частиц.
Параметр visTexIsQuadPoly определяет типы анимации визуализации текстуры (triMesh или quadMesh). Tri частицы являются более быстрыми в сравнении с Quad частицами.
Параметр visTexAniFPS задает скорость анимации частиц.
Параметр visTexAniIsLooping определяет, должна ли останавливаться анимация частиц на последнем фрейме.
Параметры «color, size, alpha» задают соответственно цвет, размер и альфа функцию частиц в начале жизни (start) и в конце жизни (end). В процессе жизни производится линейная интерполяция от начального до конечного значений.

2.7. Другие эффекты

Тип Параметр Значение Пример
VAR FLOAT trlFadeSpeed ALPHA/MSEC [0..x] 0.4
VAR STRING trlTexture_S строка “Trail.tga”
VAR FLOAT trlWidth CM 5
VAR FLOAT mrkFadeSpeed ALPHA/MSEC [0..x] 0.1
VAR STRING mrkTexture_S строка “Mark.tga”
VAR FLOAT mrkSize CM 50
VAR INT useEmittersFOR BOOL 0
VAR STRING timeStartEnd_S строка “11 16”
VAR INT m_bIsAmbientPFX BOOL 0

Параметры визуализации траектории частиц trlTexture_S, trlFadeSpeed и trlWidth задают соответственно файл текстуры следа траектории, скорость угасания следа и ширину следа от частиц.
Параметры следов столкновения с поверхностью mrkTexture_S, mrkFadeSpeed и mrkSize задают соответственно файл текстуры оставленного следа на поверхности, скорость угасания следа и размер следа от частиц. Следы имеют форму четырехсторонних полигонов.
Параметр useEmittersFOR включает вычисление положения каждой частицы в месте излучения внутри локального фрейма. В комбинации с flyCollDet_B значительно уменьшает быстродействие.
Параметр timeStartEnd_S задает временной промежуток, в котором PFX выполняется (в примере с 11 до 16 часов).
Параметр m_bIsAmbientPFX указывает, что этот PFX может быть окружающим, т.е. с его помощью строятся погодные эффекты и он может быть отключен через Gothic.ini ( параметр [ENGINE] / noAmbientPFX ).

 
 
Copyright © 2008 GotomanRambler's Top100

 
Hosted by uCoz