- •Учебник
- •Оглавление
- •Введение
- •Глава 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
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).
Симпатичный дымок, не правда ли!
Компонент требует невыносимо много ресурсов! Не пренебрегайте его лишним использованием.