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

VI. Блики от источников света

Очень красивый эффект даёт использование GLLensFlare (Add object->Special Objects->LensFlare) –

это имитация бликов от источника света, которые обычно возникают при съемке на видеокамеру.

Свойства:

Свойство

Описание

Elements

Элементы бликов, значения:

1. feGlow – переводится как жар, по исполнению это большой круглый спрайт с цветом плавно меняющимся от центра к краю, он всегда остается полупрозрачным, даже если альфа канал равен 1;

2. feRing – кольцо;

3. feStreaks – длинные лучи;

4. feRays – короткие лучи;

5. feSecondaries – несколько круглых бликов центры их находятся на одной линии, выходящей из LensFlare.

GlowGradient

Плавное изменение между цветом FromColor в центре и ToColor с краю.

Size

Размер.

NumSecs

Количество Secondaries.

NumStreaks

Число длинных лучей.

RaysGrasient

Задается цвет коротких лучей.

Resolution

Качество прорисовки – чем меньше этот параметр тем ниже качество, но выше скорость.

RingGradient

Градиентное изменение цвета от центрального радиуса FromColor к крайним ToColor.

SecondariesGradient

Цвет коротких лучей.

Squeese

Сплющенность. Если меньше 1, то растягивается по горизонтали, если больше 1, то растягивается по вертикали.

StreakAngle

Угол поворота лучей.

StreaksGradient

Плавное изменение между цветом FromColor в центре и ToColor на кончиках лучей.

StreakWidth

Толщина лучей.

Этот компонент хорошо кушает ресурсы компьютера.

Перед некоторыми объектами LensFlare становится невидимым, что бы этого избежать поставьте свойства AutoZtest=False, FlareIsNotOcculed=true после этого он будет рисоваться, как и все объекты в порядке расположения в GLScene Editor’е.

Весьма недурно, согласитесь.

VI. GLBlur

Этот эффект непосредственно связан с освещением и добавляет реализму сценам. Чтобы понять принцип работы взгляните на пиктограмму (значёк) компонента GLBlur: солнце светит настолько сильно, что человеческий глаз не в силах должным образом воспринять расположенную в удалённости сферу. Поэтому часть сферы становится засвеченной. Данный эффект не использует шейдеров. Так же учтите, blur эффект и bloom эффект это не одно и тоже! Ниже вы можите видеть итог работы компонента GLBlur.

Очень важно знать меру применению GLBlur. Так не надо использовать его со слабыми источниками света вроде фанариков, ламп, прожекторов и со сфокусированными источниками – различными лазерами.

А теперь попробуем создать наконец проект, в котором будем использовать GLBlur. Поместите на форму GLScene1 (инспектор объектов сцены), GLSceneViewer. В инспекторе объектов создайте камеру, свойству GLCamera.Position.Z присвойте значение 2; свойству GLSceneViewer.Camera присвойте GLCamera. Так же в инспекторе объектов создайте куб. Поместите на форму GLCadencer и напишите событии OnProgress код:

procedure TForm1.GLCadencer1Progress(Sender: TObject; const deltaTime, newTime: Double);

begin

GLCube1.TurnAngle:=newTime*90;

end;

Теперь добавьте в сцену (в инспекторе объектов AddObject->Special objects->GLBlur).

Установите у него свойство Preset равным pDream.

Хороший пример вы можете найти в демках по GLScene в каталоге: …\Demos\rendering\Blur. В нём вы увидете какие значения может принимать свойство Preset.

Ещё одни хороший пример находится по пути …\Demos\rendering\BlurAdvanced.

VI. GLMotion blur

Этот эффект обозначает смазывание изображения при движении объекта. Использовать его можно во многих целях, в больших играх его можно применять для создания страшной сцены, не забыв при этом добавить какой-нибуть ужасненький звук (такое явления можно наблюдать, например, в F.E.A.R).

Принцип действия этого спецэффекта заключается в том, что через определенные промежутки времени картинка с экрана копируется в буфер, делается немного прозрачной и добавляется к новой картинке.

Вот описание некоторых свойств компонента GLBlur.

Свойство

Описание

BlurDeltaTime

Время, через которое делаются копии изображения.

.Material.FrontProperties.Diffuse.Alpha

Размытость изображения.

BlurBottom, BlurLeft, BlurRight, BlurTop

Задают смещение изображения вниз, влево, вправо, вверх.

А теперь попробуем создать наконец проект, в котором будем использовать GLMotionBlur. Поместите на форму GLScene1 (инспектор объектов сцены), GLSceneViewer. В инспекторе объектов создайте камеру, свойству GLCamera.Position.Z присвойте значение 2; свойству GLSceneViewer.Camera присвойте GLCamera. Так же в инспекторе объектов создайте куб. Поместите на форму GLCadencer и напишите событии OnProgress код:

procedure TForm1.GLCadencer1Progress(Sender: TObject; const deltaTime, newTime: Double);

begin

GLCube1.TurnAngle:=newTime*90;

end;

Теперь добавьте в сцену (в инспекторе объектов AddObject->Special objects->GLBlur).

Установите у него свойство Preset равным pDream.

Здесь использовался GLMotion blur.

Хороший пример вы можете найти в демках по GLScene в каталоге: …Demos\rendering\Blur\. В нём вы увидете какие значения может принимать свойство Preset.