Главная страница
Навигация по странице:

  • GLScene руководство новичка , Jat-Studio, 2009 Введение

  • GLScene руководство новичка , Jat-Studio, 2009 Установка GLScene

  • Первый шаг

  • GLScene руководство новичка , Jat-Studio, 2009

  • GLScene руководство новичка , Jat-Studio, 2009 Как это работает

  • GLScene руководство новичка , Jat-Studio, 2009 Первое приложение или « Привет мир

  • GLScene руководство новичка , Jat-Studio, 2009 Основы трехмерной графики

  • Система координат .

  • Числа с плавающей точкой .

  • Руководство новичка by JatStudio 2009 glscene руководство новичка, JatStudio, 2009


    Скачать 0.63 Mb.
    НазваниеРуководство новичка by JatStudio 2009 glscene руководство новичка, JatStudio, 2009
    Дата26.02.2019
    Размер0.63 Mb.
    Формат файлаpdf
    Имя файлаGLSceneRUS.pdf
    ТипРуководство
    #68935
    страница1 из 5
      1   2   3   4   5

    GLScene
    Руководство новичка
    by
    Jat-Studio
    2009
    GLScene
    руководство
    новичка
    , Jat-Studio, 2009

    Содержание
    1.
    Введение
    2.
    Что такое
    GLScene ?
    3.
    Установка
    GLScene
    4.
    Как это работает
    ?
    5.
    Первое приложение или
    «
    Привет мир

    6.
    Основы
    3D графики
    6.1.
    Система координат
    6.2.
    Числа с
    плавающей точкой
    6.3.
    Векторы
    6.4.
    Просчет сцены
    (
    Рендеринг
    )
    6.5. OpenGL
    7.
    Компоненты
    7.1. GLScene
    7.2. GLScene PFX
    7.3. GLScene Utils
    7.4. GLScene Shaders
    8.
    Объекты
    8.1.
    Общие свойства объектов
    8.2.
    Базовая геометрия
    8.3.
    Дополнительная геометрия
    8.4.
    Объект
    Сетка
    (Mesh)
    8.5.
    Объекты
    , построенные по точкам
    8.6.
    Системы частиц
    8.7.
    Объекты окружающего пространства
    8.8. HUD объекты
    8.9. GUI объекты
    8.10.
    Специальные объекты
    8.11.
    Безделушки
    (Doodad object)
    8.12.
    Остальные объекты
    9.
    Создание объектов во время выполнения приложения
    (Runtime)
    9.1.
    Создание нового класса
    10.
    Проба пера
    : 3D
    Тетрис
    10.1.
    Дизайн
    10.2.
    Структура
    10.3.
    Класс
    T3DTBlock
    10.4.
    Домашнее задание
    11.
    Ссылки
    12.
    Заключение
    GLScene
    руководство
    новичка
    , Jat-Studio, 2009

    Введение
    Эта книга предназначена для любого
    , кто хочет быстро начать использование
    GLScene.
    Это не официальная документация по
    GLScene, за исключением комментариев непосредственно в
    исходном коде
    Я
    также настоятельно рекомендую использовать исходный код
    , как первичный источник информации
    Особенно учитывая тот факт
    , что исходный код постоянно модифицируется разработчиками
    Другой важный источник информации о
    GLScene – это демки
    . GLScene не так сложен
    , как кажется поначалу
    , но все же необходимо проявлять особое внимание и
    не
    «
    изобретать велосипед
    », когда вам понадобится что
    - то новое
    Я
    предупреждаю читателей
    , что я
    не разработчик
    GLScene, а
    всего лишь пользователь
    Если вы уже опытный пользователь
    GLScene, то вы сочтете этот документ слишком простым
    , но я
    рад любой обратной связи от вас
    Некоторые пункты учебника не описаны
    , так как я
    о них очень мало знаю
    Они будут помечаться маркером
    [
    Нет
    данных
    ].
    Jat-Studio,
    Ульяновск
    , август
    2009
    г
    Jat-Studio@yandex.ru
    GLScene
    руководство
    новичка
    , Jat-Studio, 2009

    Что
    такое
    GLScene
    Вероятно
    , вы уже видели примеры использования
    GLScene, или даже работали в
    ней непосредственно
    Если сказать просто
    , то
    GLScene – это библиотека компонент
    Delphi для работы с
    графикой через
    OpenGL. OpenGL – это графический
    API, изначально разрабатываемый
    Silicone Graphics. OpenGL – это стандартная библиотека
    , которая установлена сегодня почти на каждом компьютере
    . GLScene делает создание и
    развитие
    OpenGL- приложений очень простым и
    легким
    . GLScene- приложения
    , сделанные в
    Delphi прежде всего предназначаются
    , прежде всего
    , для платформы
    Windows.
    Но есть клон
    GLScene для
    Kylix, делающий возможным портирование
    (
    перенос
    ) приложений в
    Linux.
    Но я
    никогда этого не делал и
    не знаю
    , остаются ли все функции рабочими
    Нет поддержки у
    платформы
    Mac.
    GLScene был основан
    Майком
    Лишком
    (Mike Lischk) и
    с самого начала развивался как библиотека с
    открытым кодом
    (OpenSource) для сообщества программистов
    (Programmer’s
    Community).
    Позже проект принял
    Эрик
    Грандж
    (Eric Grange) и
    с тех пор этот проект устойчиво развивается
    Теперь есть множество администраторов
    GLScene.
    Официальный сайт
    GLScene http://www.sourceforge.net
    Есть бесчисленное количество объектов
    , созданных на
    GLScene, в
    пределах от простых демок до сложных научных приложений
    GLScene
    руководство
    новичка
    , Jat-Studio, 2009

    Установка
    GLScene
    Желательно чтобы вы установили всю библиотеку
    GLScene.
    Это предоставляет вам выгоды наличия доступа к
    широкому диапазону демонстрационных приложений
    , дающих информацию по различным особенностям
    GLScene.
    Есть много способов получить код библиотеки
    Вы можете перейти по ссылке и
    загрузить последний код снимка здесь
    : http://glscene.sourceforge.net/download.htm
    Допустим исходники
    GLScene лежат у
    вас в
    • C:\library\GLScene
    Первый
    шаг
    :

    Запустите
    Delphi.

    Откройте
    Tools – Environment Options – Library.

    Кликните по кнопке с
    тремя точками напротив
    Library path и
    добавьте все папки с
    GLScene.
    GLScene
    руководство
    новичка
    , Jat-Studio, 2009


    Кликните
    Ок для подтверждения

    И
    еще раз
    Ок в
    предыдущем окне
    Теперь нужно подготовить нашу систему к
    запуску
    GLScene.
    Для этого в
    папке с
    GLScene ищем все файлы с
    расширением
    *.dll*.

    Копируйте найденные файлы в
    папку
    Windows\system32.

    Копируйте файл
    GLScene.inc из папки
    Source в
    папку с
    Delphi6.dpk
    GLScene
    руководство
    новичка
    , Jat-Studio, 2009

    Теперь переходим в
    Delphi.
    По умолчанию
    Delphi создает чистый проект при запуске
    Он нам не нужен
    Закрываем все

    Кликните
    File - Close All.
    Дальше расскажу о
    установке
    GLScene на
    Delphi6.
    Для другой версии
    Delphi просто подгоняйте под свое

    Кликните
    File – Open и
    откройте файл
    GLScene6.dpk.

    Компилируйте
    (compile) и
    установите
    (install) библиотеку
    Можете также установить другие компоненты
    (
    какие есть
    ).
    Если все прошло нормально
    , то вид палитры компонент должен измениться
    :
    GLScene
    руководство
    новичка
    , Jat-Studio, 2009

    Как
    это
    работает
    ?
    Вы
    , вероятно
    , привыкли к
    технологии
    Delphi VCL и
    созданию объектов во время проектировки
    (Design time).
    Проектирование
    Delphi- формы
    – прямая процедура
    Визуальные компоненты
    , что вы кидаете на форму
    , всегда видимы при проектировке
    В
    GLScene все немного не так
    Некоторые объекты во время проектирования не отображаются в
    принципе
    Эта глава объяснит философию и
    способы организации
    GLScene.
    Согласно соглашениям об именах
    Delphi каждый класс
    GLScene начинается с
    префикса
    TGL…
    Прежде всего
    , вы должны иметь ввиду
    , что
    GLScene, как и
    другие библиотеки
    Delphi, имеет строгую иерархию
    Каждый объект является потомком более общего объекта и
    содержит в
    себе некоторые новые свойства
    , по сравнению с
    родительским объектом
    Этот более общий объект также является потомком еще более общего и
    т д
    Эти отношения называют parent <-> child отношениями
    (
    буквально
    – родитель
    <-> ребенок
    ).
    Каждый объект может иметь бесконечное множество потомков и
    только одного родителя
    Вершина дерева объектов
    – TGLScene, базовый класс
    , все остальные объекты
    – его потомки
    В
    иерархии
    GLScene есть одна очень интересная деталь
    Объект всегда имеет родителя и
    владельца
    Причем родитель и
    владелец не то же самое
    Владелец должен быть всегда
    TGLScene, потому
    , что регистрируется объект именно здесь
    Родитель же может быть другим объектом или классом
    TGLScene.Objects.
    На базовом уровне в
    GLScene есть два объекта
    :
    компоненты
    (Components)
    и
    объекты
    сцены
    (Scene objects).
    Компоненты расположены в
    четырех вкладках компонентов
    Могут быть помещены на форме и
    доступны только в
    инспекторе объектов
    (object inspector).
    Их можно рассмотреть как
    «
    сервисные компоненты
    », которые нужны для обслуживания сцены
    Объекты сцены могут быть добавлены
    , отредактированы или удалены в
    редакторе сцены
    (Scene editor).
    Объекты сцены фактически представляют собой все содержание отрисовываемой
    (rendering) сцены
    Объекты сцены также отображены в
    инспекторе объектов
    , но предпочтительнее работать с
    ними именно через редактор сцены
    Ну
    , хотя бы
    , потому что функциональные возможности здесь выше чем в
    инспекторе объектов
    Редактор сцены
    – это сердце
    GLScene.
    Чтобы открыть его необходимо сначала поместить на форму объект
    TGLScene.
    По двойному щелчку на нем открывается
    Редактор сцены
    Здесь вы можете добавить
    , выбрать
    , переместить или удалить объекты сцены
    , которые представлены с
    помощью древовидной структуры
    Вы также можете здесь видеть эффекты всех объектов и
    их поведение
    GLScene
    руководство
    новичка
    , Jat-Studio, 2009

    Первое
    приложение
    или
    «
    Привет
    мир

    Много программных справочников содержат обязательный пример
    «
    Привет мир
    !».
    Это обычно простое приложение где пользователь нажимает кнопку и
    появляется окно с
    сообщением
    «
    Привет мир
    !».
    Это необходимо для читателей
    , которые хотят сразу же сделать что
    - то практически
    По
    - моему эквивалентом этому в
    трехмерном графическом программировании является отображение трехмерного вращающегося куба
    Здесь указано
    , шаг за шагом
    , создание подобного вращающегося куба в
    GLScene:
    1.
    Создаем новое приложение в
    Delphi.
    2.
    Двойным щелчком по
    GLScene добавляем
    GLScene1 – белый кубик на вкладке компонентов
    GLScene.
    3.
    Двойным щелчком по
    GLSceneViewer добавляем
    GLSceneViewer1 – белый кубик с
    камерой на вкладке компонентов
    GLScene.
    4.
    Выбираем alClient в
    свойстве
    Align объекта
    GLSceneViewer1 для того чтобы сцена развернулась во все окно
    5.
    Двойным щелчком по
    GLCadencer добавляем
    GLCadencer1 – метроном на вкладке компонентов
    GLScene для синхронизации всех объектов
    GLScene.
    6.
    Выбираем
    GLScene1 в
    свойстве
    Scene объекта
    GLCadencer1 для того чтобы метроном работал в
    нашей сцене
    7.
    Двойным щелчком по
    GLScene1 на нашей форме открываем редактор сцены
    (Scene Editor).
    8.
    Добавляем камеру
    – правый клик на
    Cameras в
    редакторе сцены
    – Add Camera.
    9.
    Выбираем
    GLCamera1 и
    устанавливаем
    Position.X := 5, Position.Y := 5, Position.Z
    := 5 в
    свойствах объекта
    ; чтобы установить камеру за сценой
    10.
    Правым кликом по
    Scene objects в
    редакторе сцены
    – Add object – LightSource добавляем на сцену источник света
    11.
    Выбираем
    GLLightSource1 и
    устанавливаем
    Position.Z := 10 в
    свойствах для того чтобы источник света был подальше от объекта
    , чем камера
    12.
    Правым кликом по
    Scene object в
    редакторе сцены
    – Add object – Basic Geometry –
    Cube добавляем в
    середину сцены кубик
    13.
    Выбираем
    GLCamera1 и
    устанавливаем
    TargetObject := GLCube1 в
    свойствах объекта чтобы наша камера
    «
    смотрела
    » на куб
    14.
    Выбираем
    GLSceneViewer1 и
    устанавливаем
    Camera := GLCamera1 чтобы в
    окне отображалось то
    , что
    «
    видит
    » наша камера
    15.
    Двойным щелчком по
    GLCube1 в
    Object TreeView создаем событие
    Progress нашего кубика
    16.
    Добавляем в
    событие строчку кода
    :
    GLCube1.TurnAngle := GLCube1.TurnAngle + deltaTime * 100; чтобы наш кубик вращался вокруг оси
    Z.
    17.
    Можете нажать
    F9 и
    увидеть ваш первый крутящийся куб
    !
    Вы можете сказать
    , что вращающийся куб
    – тривиальная вещь
    И
    это действительно так с
    GLScene, но если рассмотреть то
    , что требуется
    , чтобы отрисовать вращающийся куб на современных аппаратных средствах и
    операционной системе без
    GLScene, то станет ясно
    , какую работу сделали за нас разработчики этой библиотеки
    В
    GLScene несколько тысяч строк программы
    Конечно
    , не все это используется
    , чтобы отрендерить вращающийся куб
    , но
    , кроме этого
    , мы имеем еще и
    код
    OpenGL со всеми возможными драйверами
    Таким образом
    , мы обладаем управлением самой вершиной этой системы
    , чтобы например отрендерить вращающийся куб с
    помощью лишь одной строчки кода
    GLScene
    руководство
    новичка
    , Jat-Studio, 2009

    Основы
    трехмерной
    графики
    GLScene – очень мощный инструмент
    , но вы должны знать хоть что
    - то о
    трехмерной графике для работы с
    ним
    Можете пропустить эту главу
    , если вы знакомы с
    этой темой
    Есть много теории о
    трехмерной графике
    Я
    хочу указать лишь некоторые основные вещи
    , которые необходимы при использовании
    GLScene.
    Система
    координат
    .
    Трехмерный мир описывается математически с
    помощью трех осей
    X, Y и
    Z.
    Все они пересекаются в
    некоторой точке
    (
    начале отсчета
    ) с
    координатами
    [0, 0, 0] под углом
    90° друг к
    другу
    Ориентация этих осей в
    пространстве может сначала немного запутать вас
    Математически оси распределены так
    : направление вверх
    - вниз
    – ось
    Y, влево
    - вправо
    – ось
    X и
    глубина
    – ось
    Z.
    Но стандарт
    OpenGL немного другой
    : направление вверх
    - вниз
    – ось
    Z, влево
    - вправо
    – ось
    X и
    , наконец
    , ось
    Y – глубина
    Таким образом
    , вы должны помнить
    , что система координат
    OpenGL отлична
    , например
    , от других трехмерных графических редакторов
    Вы можете включить отображение осей установкой свойства
    ShowAxes := True у
    любого объекта сцены
    Они будут представлены красными
    , синими и
    зелеными пунктирными линиями
    , как во время разработки
    , так и
    в запущенных проектах
    Некоторые объекты все же
    , используют обычную систему координат
    – например
    TGLGraph или
    TGLTerrainRenderer.
    И
    наконец
    , расположение осей будет зависеть от поворота камеры
    Вы можете поместить ваш объект в
    любом месте сцены и
    с любой ориентацией
    По умолчанию объект при создании направлен
    «
    лицом
    » в
    положительную сторону оси
    Y.
    А
    вершина
    (
    верх
    ) объекта направлена в
    положительную сторону оси
    Z.
    Важно понять различие между глобальной и
    местной
    (
    локальной
    ) системой координат
    У
    каждого дочернего объекта
    GLScene есть своя собственная местная
    (
    локальная
    ) система координат
    Если родительский объект изменяет свое положение
    (
    позицию
    ) или поворачивается на определенный угол
    , то глобальное положение как родителя
    , так и
    ребенка изменится
    , хотя местная
    (
    локальная
    ) система координат каждого объекта останется без изменений
    Поначалу этот момент кажется непонятным
    , но это важная особенность
    , которая позволяет сохранять организацию иерархии объектов сцены
    Числа
    с
    плавающей
    точкой
    .
    OpenGL использует одинарную
    (single) систему точности
    Что это означает
    ?
    Это означает
    , что каждое десятичное число имеет длину
    8 бит
    Рассмотрим это подробнее
    Реальные десятичные числа могут иметь неограниченное количество цифр после десятичного разделителя
    (
    обычно запятая
    ).
    Взять например константу
    π
    (
    Пи
    ).
    Компьютер способен вычислить число
    π
    (
    Пи
    ) со множеством знаков после запятой
    , количество которых зависит от способностей памяти конкретной машины
    Но это не очень практично
    Так какой же установить предел
    ?
    Думаю
    , каждый может понять различие между
    3.14 и
    3.1415926535.
    Delphi имеет мощную поддержку различных типов
    В
    Delphi y нас есть такие типы для представления десятичных чисел
    , как
    single, double
    и
    extended.
    Тип
    single 8 битов длиной
    , то есть для хранения числа используется блок памяти размером
    8 бит
    Количество цифр в
    таком числе ограничено
    Константа
    π
    (
    Пи
    ) вида
    3.1415926 имеет формат типа
    single.
    Но что случится
    , если добавить к
    этому числу
    , например
    1000?
    Результат должен быть
    3000.1415926, но в
    этом числе слишком много цифр для формата типа
    single.
    В
    этом случае урезаются
    «
    лишние
    » последние цифры в
    числе и
    результат будет таким
    : 3000.1415.
    Помните
    , работая с
    большими числами
    , что тип
    single недостаточно точен
    Если вам нужна дополнительная точность при вычислениях
    , например при каких
    - либо научных расчетах
    , то можете использовать тип
    extended, чтобы получить бòльшую точность
    Но если используется графический вывод
    OpenGL, то все числа с
    типом
    extended понизят свою точность до точности типа
    single.
    GLScene
    руководство
    новичка
    , Jat-Studio, 2009

    Не рекомендуется использовать стандартный математический модуль в
    приложениях
    , использующих библиотеку
    GLScene.
    Так как функции этого модуля слишком медленны для просчета при отрисовке сцены в
    режиме реального времени
    Поэтому по
    - возможности избегайте использовать этот модуль
    Векторы
      1   2   3   4   5


    написать администратору сайта