- •Учебник
- •Оглавление
- •Введение
- •Глава 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
Глава 16. GlAtmosphere.
GLAtmosphere – это полусфера, которая нужна для создания эффекта атмосферы вокруг планеты, что собственно, следует из названия. Однако можно приспособить его под отображение, например, силовых полей, но только шарообразной формы. Компонент представляет собой шар с двумя смешанными цветами, внутри находится сфера – “планета”. Создаётся GLAtmosphere в “GLScene Editor”, вкладка “Environment objects”.
основные свойства:
Свойство |
Описание |
AtmosphereRadius и PlanetRadius |
Радиусы атмосферы и планеты, их разница будет толщиной атмосферы, от которой напрямую зависит плотность освещения. |
BlendingMode |
Режим смешивания: по прозрачности или по цвету. |
HightAtmColor |
Внешний цвет атмосферы (задавать нужно вручную, выпадающий список не работает). |
LowAtmColor |
Внутренний цвет, атмосферы (задавать нужно вручную, выпадающий список не работает). |
ObjectsSorting |
“Сортировка по сортам” определяет, как будут сортироваться объекты (по классам; без сортировки; смешивание просчитывается в конце; то, что сложнее всего; самое близкое). |
Оpasity |
Степень непрозрачности. |
PlaneRadius |
Радиус ядра (сферы по центру). |
Slices |
Количество углов (чем больше углов – тем сильнее GLAtmosphere похож на круг). |
Sun |
Обязательно необходимо его задать (иначе GLAtmosphere не отобразится). Определяет, относительно какого объекта определять верх и низ. Соответственно если это верх – он будет окрашен в светлый цвет и наоборот. |
Плохую демку к компоненту GLAtmosphere можно посмотреть в стандартной папке Demos по адресу Demos\specialsFX\Atmosphere.
Этот компонент преглюченный. Зачастую на этапе проектирования при изменении некоторых параметров сцена просто не перерисовывается, чтобы сцена перерисовалась, нужно кликнуть по форме. Это не единственный глюк, при попытке выбрать (не задать
вручную!) цвет он просто не выбирается, а остаётся предыдущим.
Глава 17. Спецэффекты.
I. Огонь
Огонь моделируется системой частиц – партиклов (particle). Поместите на форму GLFireFXManager, его свойство Cadencer поставсе равным GLCadencer1. У объекта, который вы хотите сделать горящим, выберите свойство Effects. В появившемся окне нажмите кнопку + и добавьте FireFX. У этого эффекта в свойстве Manager выберите GLFireFXManager1. Теперь объект загорелся.
Свойства огня настраиваются в GLFireFXManager:
-
Свойство
Описание
FireBurst
Скорость горения.
FireCrown
Чем больше этот параметр, тем большие расстояния от объекта будет захватывать огонь.
FereDensity
Чем больше этот параметр, тем четче прорисованы частички огня.
FireDir
Направление, куда сносятся частички огня, как бы огонь сдувается ветром.
FireEvaporation
Если это свойство меньше 1, то партиклы сплющиваются по вертикали, если больше 1, то вытягиваются.
FireRadius
Радиус огня.
InitialDir
Направление огня.
InnerColor
Цвет в центре частичек.
OuterColor
Цвет на краях частичек.
ParticleInterval
Частота появления частиц, чем меньше – тем чаще.
ParticleLife
Время жизни партиклов.
ParticleSize
Размер частиц.
Создание огня в режиме runtime:
Объявите переменные
var
FireManager: TGLFireFXManager; FireFX: TGLBFireFX;
Создайте FireManager, нужный для настроек огня
FireManager:= GLFireFXManager.Create(nil);
Настройте FireManager
FireManager.Cadencer := GLCadencer1; FireManager.ParticleInterval := 0.04;
Создайте эффект, добавьте его в список эффектов объекта, например сферы:
FireFX := TGLBFireFX.Create(Sphere1.Effects); Sphere1.Effects.Add(FireFX);
FireFX.Manager := FireManager;
GLFireFXManager не самый скоростной компонент, поэтому не пренебрегайте его излишним использованием.