Что такое процедурные модели
Часто возникает потребность изобразить явление или объект, не представимые при помощи статической модели в анимацией. В таких случая на первый план выступают процедурные модели - модели, геометрия которых формируется программно прямо во время отрисовки кадра. Примерами могут служить частицы, взрывы, lens flare.
Процедурные модели, как и статические (RF2), прописываются в поле ModelFile объекта. Также сохраняется возможность прикреплять модель на порты.
Синтаксис: название_модели;параметр1;...;параметрN
Количество параметров определяется конкретной процедурной моделью.
Примеры:
FLARE;200;40;0;255;255;10;20;flare1
(модель FLARE требует 7 параметров и название текстуры)
LENSFLARE;100;8;0;0.1;0.2;0.3;0.5;0.7;0.8;1;200;100;100;100;100;100;150;200;128;1024;lensfx (модель LENSFLARE требует переменное число параметров) vehicles\sts_cobra.RF2:PARTICLES;HELI_SMOKE(0,PORT_exgaust)
(модель PARTICLES прикреплена к порту статической модели)
Регистр в названии модели не имеет значения.
LENSFLARE
Модель изображает засветку линз камеры при взгляде на яркий источник света. Реализуется как несколько спрайтов с текстурой, двигающихся определенным образом.
Синтаксис:
LENSFLARE;ObjectRadius;LensCount;Lens1offset..LensNoffset;Lens1radius..LensNradius;FrameWidth;TextureWidth;Material;Flags
Таблица. Параметры модели LENSFLARE.
Параметр
Значение
ObjectRadius
Радиус объекта. Поскольку LENSFLARE часто будет помещаться внутрь модели, изображающей источник света, этот параметр нужен для того, чтобы LENSFLARE на закрывался самим фонарём.
LensCount
Количество линз в объективе.
LensNoffset
Относительное положение спрайта на прямой [0..1], см. рис.
LensNradius
Размер каждого спрайта (радиус, пикселов, в расчете на разрешение экрана 800x600).
FrameWidth
Ширина спрайта на текстуре (в пикселах).
TextureWidth
Ширина текстуры (в пикселах).
Material
Название материала.
Flags
Флаги, см. таблицу
Таблица. Флаги модели LENSFLARE.
Флаг
Значение
1
Отключить затухание на краях экрана. Для того, чтобы эффект не исчезал сразу после выхода центра объекта из поля экрана, параметр ObjectRadius должен быть установлен правильно.
Рисунок. Все спрайты располагаются на отрезке, проходящем через источник света и центр экрана. Параметр LensNOffset задает положение спрайта на отрезке. 0 - в позиции источника, 1 - симметрично к позиции источника относительно центра экрана, 0.5 - в центре экрана.
Пример. Текстура для модели LensFlare.
Примечание. Для модели LENSFLARE часто используется материал TRANSPARENT, BLENDING: OVERLAY, режим HIGHQUALITY:YES (в режиме OVERLAY альфа-канал не обязателен).
Пример:
LENSFLARE;100;8;0;0.1;0.2;0.3;0.5;0.7;0.8;1;200;100;100;100;100;100;150;200;128;1024;lensfx;0
Программирование.
Объект LensFlare обрабатывает сообщение MSG_LENSFLAREINTESITY для изменения интенсивности.
Параметры:
(DWORD)inparm = pId + smId<<16
(float*)outparm = Intensity [0..1]
FLARE
Модель изображает легкое свечение вокруг источника света. Реализуется как спрайт с текстурой, который всегда поворачивается к наблюдателю.
Синтаксис:
FLARE;FlareRadius;ObjectRadius;Flags;ColorR;ColorG,ColorB;Opacity;Material
Таблица. Параметры модели FLARE.
Параметр
Значение
FlareRadius
Размер спрайта (радиус, см)
Object Radius
Размер объекта (радиус, см). Поскольку FLARE часто будет помещаться внутрь модели, изображающей источник света, этот параметр нужен для того, чтобы FLARE на закрывался самим фонарём.
Flags
Флаги модели (см. ниже)
ColorR,ColorG,ColorB
Позволяет задать цвет спрайта, чтобы, например, подогнать цвет текстуры к цвету источника света: [0..255]
Opacity
Позволяет уменьшить прозрачность спрайта: [0..255]. (255 - без изменений, как на текстуре).
Material
Название материала.
Таблица. Флаги модели FLARE.
Значение
Описание
1
Цвет спрайта дополнительно умножать на цвет модуляции ночного освещения. Таким образом, спрайт будет виден только ночью.
2
Flare - эффект, возникающий на сетчатке глаза в результате переотражения яркого света, из-за чего возникает свечение. Поэтому визуально свечение появляется поверх всего изображения. Однако, если нужно, чтобы предметы, находящиеся ближе, могли частично загораживать свечение (например, если FLARE применяется для имитации туманности) - можно установить этот флаг.
4
Использовать ориентацию как для billboard. Без установленного флага спрайт всегда параллелен плоскости экрана. С установленным флагом спрайт ориентируется так,чтобы нормаль плоскости была направлена точно в камеру. Используется когда с помощью этого объекта необходимо изобразить просто billboard.
8
Flare будет видим только со стороны против оси Z. Используется для фар машин - flare повешены на порты, оси z направлены по наравлению движения.
Пример. Текстура для модели Flare.
Примечание. Для модели FLARE часто используется материал TRANSPARENT, BLENDING: OVERLAY, режим HIGHQUALITY:YES (в режиме OVERLAY альфа-канал не обязателен).
Пример:
FLARE;200;40;0;255;255;10;20;flare1
POINTLIGHT
Модель представляет собой динамический источник света. Он организован как процедурная модель, а не как отдельный класс объекта т.к. в этом случае удобно аттачить источники на порты моделей.
Синтаксис:
POINTLIGHT;ColorR;ColorG;ColorB;Radius;Flags;Cone;Material
Таблица. Параметры модели POINTLIGHT.
Параметр
Значение
Flags
Флаги модели (см. ниже)
ColorR,ColorG,ColorB
Цвет источника света, 0..255.
Radius
Радиус источника света
Flags
Флаги источника света (см. таблицу)
Cone
Для направленных источников, угол вершины конуса, в градусах, [5..175]
Material
Название материала. Материал должен использовать шейдер POINTLIGHT. См. документацию по шейдерам.
Таблица. Флаги модели POINTLIGHT.
Название
Значение
Описание
PLF_ENABLED
1
Источник включен.
PLF_DIRECTED
2
Источник направленный.
PLF_TORCH
4
Источник мигает (имитация факела).
Внимание: даже если источник - не направленный, все равно нужно указывать материал с шейдером POINTLIGHT, хотя текстура от него использоваться не будет.
Пример:
POINTLIGHT;255;255;255;1000;1;0;POINTLIGHT1
POINTLIGHT;255;255;255;1000;3;90;POINTLIGHT1