- •Учебник
- •Оглавление
- •Введение
- •Глава 1
- •I. Установка
- •II. Удаление
- •Глава 2. Первый проект
- •Глава 3. Создание сцены в режиме design time
- •Создание объектов:
- •Глава 4. Примитивные объекты. Вкладка Basic geometry.
- •Глава 5. Ориентация, координаты.
- •Глава 6. Движение.
- •Глава 7. Как узнать, сколько сейчас fps?
- •Глава 8. Полноэкранный режим.
- •Глава 9. Работа с материалами.
- •I. Прямое обращение к .Material
- •Глава 10. Использование 3d моделей.
- •I. Форматы моделей
- •Глава 11. Прокси объекты.
- •Глава 12. Создание земной поверхности с glTerrainRenderer.
- •Глава 13. Создание земной поверхности с glFreeForm.
- •Глава 14. Итоги работы с glTerainrender и glFreeForm.
- •Глава 15. Создание земной поверхности с glHeightField.
- •Глава 15. Создание неба.
- •Глава 16. GlAtmosphere.
- •Глава 17. Спецэффекты.
- •I. Огонь
- •II. Молния
- •III. Дождь
- •IV. Снег
- •VI. Блики от источников света
- •Глава 18. Растительность.
- •I. Деревья и кустарники
- •II. Трава
- •Глава 19. Работа со шрифтами и вывод надписей.
- •I. Вывод текста через компонент glWindowsBitmapFont
- •II. Проблема с glWindowsBitmapFont в Windows Vista
- •Глава 20. Выделение объекта мышкой.
- •Глава 21. Создание сцены в режиме runtime.
- •Глава 22. Тени.
- •Глава 23. Туман.
- •Глава 24. Vbo или расширение arb_vertex_buffer_object в OpenGl.
- •Глава 25. Fbo или расширение ext_framebuffer_object в OpenGl.
- •Глава 26. Рисование на канве.
- •Глава 27. Использование чистого OpenGl.
- •Глава 28. Звуки.
- •I. Проигрывание звуков с помощью bass
- •II. Проигрывание звуков с помощью fmod
- •III. Проигрывание звуков с помощью OpenAl
- •Глава 29. Игровое меню.
- •Глава 30. Примитивная физика dce.
- •Глава 31. Физика ode.
- •II. Основы библиотеки ode(: tglodeManager и tglodeJointList) на примере создания подобия боулинга.
- •Глава 32. Физика Newton.
- •Глава 33. Ручная проверка коллизий.
- •V. Ручная проверка коллизии
- •Глава 34. Шейдеры. Терменология.
- •Глава 35. Шейдеры. История и компоненты.
- •Глава 36. Шейдеры glsl. Введение.
- •Глава 37. Шейдеры glsl. Использование без компонентов. Самый примитивный шейдер.
- •Глава 38. Шейдеры glsl. Немного о спецификации. Типы данных и переменные
- •Стандартные функции
- •Поддерживаемые компоненты векторов
- •Глава 40. Шейдеры glsl. Текстурирование.
- •Глава 41. Шейдеры glsl. Использование без компонентов. Мультитекстурирование. Смешение трёх цветов по базовой карте.
- •Глава 42. Шейдеры glsl. Использование через компонент glslShader. Часть первая – Первые шаги.
- •Глава 43. Шейдеры glsl. Использование через компонент glslShader. Часть вторая – знакомимся со светом. Передача параметров в шейдер.
- •Глава 44. Шейдеры glsl. Использование через компонент glslShader. Часть третья – текстуры.
- •Глава 45. RenderMonkey.
- •Глава 46. Оптимизация программы.
- •Глава 47. Практика. Создание мира
- •Приложение
- •I. Типы векторов и матриц
- •II. Работа с векторами
- •III. Работа с матрицами
- •IV. Методы объектов glScene
- •Предметный указатель по компонентам glScene
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.