Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник по GLScene.doc
Скачиваний:
255
Добавлен:
16.12.2018
Размер:
7.18 Mб
Скачать

II. Молния

Поместите на форму GLThorFXManager, его свойство Cadencer поставьте равным GLCadencer1. У объекта, из которого будет идти молния, выберите свойство Effects. В появившемся окне нажмите кнопку “+” и добавьте ThorFX. У этого эффекта в свойстве Manager выберите GLThorFXManager1. Все.

Свойства молнии настраиваются в GLThorFXManager:

Свойство

Описание

Target

Координаты, относительно источника молнии, куда будет бить молния.

GlowSize

Размер молнии.

Wildness

Амплитуда молнии.

В runtime молния создается аналогично огню.

III. Дождь

Для создания “простого” дождя будем использовать систему частиц (PFX renderer). Основной недостаток системы – игнорирование освещения, что заметно при взгляде на дождь сверху. Используя PointLightPFX и AspectRatio со значением 0,05 получаем линию, похожую на каплю в движении, если задать нужный угол (Rotation), скорость (PFX Source->InitialVelocity) и разброс (PFX Source->PositionDispersion), то получается неплохой эффект дождя. Далее предполагается, что уже сделаны все необходимые для отображения сцены действия, т.е. на форму помещён инспектор объектов GLScene, создана камера и т.д.

Для создания эффекта надо:

• Создать в инспекторе объектов сцены GLParticleFXRenderer (Scene objects->Add object->Particle Systems->PFX Renderer).

• Далее создайте PointLightPFXManager из вкладки "GLScene PFX".

• Создайте GLCadencer.

• Подключаем к PointLightPFXManager GLParticleFXRenderer и GLCadencer.

• В объекте-источнике добавляем Effects->Add->PFX Source и подключаем свойству Manager

PointLightPFXManager.

Теперь надо выставить параметры:

• PointLightPFXManager->AspectRatio=0.05 тонкие частицы

• PointLightPFXManager->ParticleSize=0.1 делаем их помельче

• PointLightPFXManager->ColorInner=[0.5,1,1,1] полупрозрачные

• PFX Source->ParticleInterval=0.001 чем меньше, тем больше

• PFX Source->PositionDispersionRange=[1,0,1] разброс по осям

• PFX Source->PositionDispersion=5 множитель разброса

Параметры выставлены. Теперь запишите в GLCadencer такую строчку: GLSceneViewer1.Invalidate. Если вы этого не сделаете, частицы будут перерисовываться только если изменять размер формы или опускать её за пределы экрана. Но здесь есть исключение. Так частицы могут перерисовываться и если у объекта-источника вызвать, например, метод Turn(deltatime*10).

Вот картинка, хорошо иллюстрирующая, как работает созданный нами дождь на деле.

IV. Снег

Для создания снега:

• Создать в инспекторе объектов сцены GLParticleFXRenderer (Scene objects->Add object->Particle

Systems->PFX Renderer).

• Создаем PointLightPFXManager из вкладки "GLScene PFX".

• Подключаем к нему GLParticleFXRenderer и работающий GLCadencer.

• В объекте-источнике добавляем Effects->Add->PFX Source

Теперь выставляем параметры:

• PointLightPFXManager->AspectRatio=0.5 легкое искажение формы.

• PointLightPFXManager->ParticleSize=0.1 делаем помельче.

• PointLightPFXManager->ColorInner=clrWhite белые пушинки.

• PFX Source->ParticleInterval=0.001 чем меньше, тем больше.

• PFX Source->PositionDispersionRange=[1,0,1] разброс по осям.

• PFX Source->PositionDispersion=5 множитель разброса.

• PFX Source->VelocityDispersion=1 разлёт частиц.

Параметры выставлены. Теперь запишите в GLCadencer такую строчку: GLSceneViewer1.Invalidate. Если вы этого не сделаете, частицы будут перерисовываться только если изменять размер формы или опускать её за пределы экрана. Но здесь есть исключение. Так частицы могут перерисовываться и если у объекта-источника вызвать, например, метод Turn(deltatime*10).

Вот какой пушистый снежок получился.

V. Дым

Клубы пара создаются, используя PerlinPFX:

• создаем PerlinPFXManager из вкладки "GLScene PFX"

• подключаем к нему "GLParticleFXRenderer" (в инспекторе объектов сцены) и работающий GLCadencer

• в объекте-"источнике" добавляем Effects->Add->PFX Source

выставляем параметры:

• GLPerlinPFXManager->Brightness=0.2 приглушаем яркость

• GLPerlinPFXManager->ColorMode=scmFade более мягкая текстурка

• GLPerlinPFXManager->ColorInner=[1,1,1,0.5] чуть прозрачности

• GLPerlinPFXManager->ParticleSize=1.5 крупные клубы пара

• PFX Source->InitialPosition=[0,-3,0] эмиттер создаем внизу

• PFX Source->InitialVelocity=[0,0.5,0] и направляем вверх

• PFX Source->ParticleInterval=0.005 чем меньше, тем хуже

• PFX Source->PositionDispersionRange=[4,0,1] разброс вдоль линии

• PFX Source->RotationDispersion=1 немного вращения

• PFX Source->VelocityDispersion=1 разлёт частиц

Параметры выставлены. Теперь запишите в GLCadencer такую строчку: GLSceneViewer1.Invalidate. Если вы этого не сделаете, частицы будут перерисовываться только если изменять размер формы или опускать её за пределы экрана. Но здесь есть исключение. Так частицы могут перерисовываться и если у объекта-источника вызвать, например, метод Turn(deltatime*10).

Симпатичный дымок, не правда ли!

Компонент требует невыносимо много ресурсов! Не пренебрегайте его лишним использованием.