Руководства, Инструкции, Бланки

Glscene руководство img-1

Glscene руководство

Категория: Руководства

Описание

Использование библиотеки GLScene для создания 3Dприложений - тема научной статьи по информатике, читайте бесплатно текст научно-исследовательской рабо

Использование библиотеки GLScene для создания 3Dприложений Текст научной статьи по специальности « Информатика » Аннотация
научной статьи по информатике, автор научной работы — Трофимов Ю. А.

В данной статье рассматриваются вопросы, связанные с возможностью реализации 3Dграфики при создании различных приложений с помощью среды программирования Borland Delphi. Даются начальные сведения по графическим стандартам, 3Dдвижкам, подробно рассматривается установка библиотеки GLScene, приводятся примеры простейших программ.

Научная статья по специальности " Информатика " из научного журнала "Известия Пензенского государственного педагогического университета им. В.Г. Белинского", Трофимов Ю. А.

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

Трофимов Ю. А. Использование библиотеки GLScene для создания 3Dприложений // Известия ПГУ им. В.Г. Белинского. 2008. №12. URL: http://cyberleninka.ru/article/n/ispolzovanie-biblioteki-glscene-dlya-sozdaniya-3dprilozheniy (дата обращения: 23.12.2016).

Трофимов Ю. А. "Использование библиотеки GLScene для создания 3Dприложений" Известия Пензенского государственного педагогического университета им. В.Г. Белинского (2008). URL: http://cyberleninka.ru/article/n/ispolzovanie-biblioteki-glscene-dlya-sozdaniya-3dprilozheniy (дата обращения: 23.12.2016).

Трофимов Ю. А. (2008). Использование библиотеки GLScene для создания 3Dприложений. Известия Пензенского государственного педагогического университета им. В.Г. Белинского URL: http://cyberleninka.ru/article/n/ispolzovanie-biblioteki-glscene-dlya-sozdaniya-3dprilozheniy (дата обращения: 23.12.2016).

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

Трофимов Ю. А. Использование библиотеки GLScene для создания 3Dприложений // Известия ПГУ им. В.Г. Белинского. 2008. №12 С.121-124.

Трофимов Ю. А. "Использование библиотеки GLScene для создания 3Dприложений" Известия Пензенского государственного педагогического университета им. В.Г. Белинского (2008).

Трофимов Ю. А. (2008). Использование библиотеки GLScene для создания 3Dприложений. Известия Пензенского государственного педагогического университета им. В.Г. Белинского

Другие статьи

Delphi World - GLScene - Космосим на GLScene

Если вы плохо знаете или только начинаете изучать
  • программирование на Delphi,
  • создание web-сайтов,
  • разработку баз данных,
  • и т.п.
Вы можете пройти профессиональное обучение онлайн на разнообразных специализированных курсах.
Это не обычные учебные курсы, а открытые на территории производственного предприятия .
Вас будут обучать профессиональные программисты на настоящих "боевых" задачах.
Записаться можно, перейдя по следующей ссылке: обучение sql с нуля

GLScene - Космосим на GLScene. Часть 2


Часть 2. Простейшее движение корабля, эффекты пламени, фон, создание планет, астероидов.

Есть различные методы создания звездного фона. В большинстве игр для этой цели используются или сферы(кубы) с соответствующей текстурой или спрайты. В общем-то спрайты они даже лучше, чем сферы, хоть и требуют некоторых знаний стереометрии и спрайтовая реализация куда сложнее. Лучше они тем, что меньше искажений, да и проще хранить спрайты, чем текстуру размером 6400x4800. Да и скорость вывода зачастую больше, но все же для начала проще реализовать сферу. Ну в GLScene реализовать это проще простого, хотя я уверен, что на картах с 8Мб или 16Мб видео это может сильно тормозить. Ну что ж, допустим, что у камеры DepthOfView установлен 400. Значит сферу надо создавать размером около 390.

Далее после создания сферы встает другая проблема - текстура, при наложении текстуры на сферу она сильно искажается. Для этого надо подредактировать текстуру под сферу. У кого есть Adobe Photoshop с помощью необходимых фильтров могут добиться этого, у меня же его нет, но вот прога, переведенная мною с С++ на Дельфи, она сделает все, что необходимо.

Воспользовавшись моей прогой и получил необходимую текстуру надо сделать банальное. Просто зайти в свойство Material у некоторой Sphere и добавить туда текстурку. Ну и придется каждый тик Cadencer-а приравнивать позицию сферы к позиции камеры, чтобы объект не мог долететь до границы. Правда в GLScene есть небольшая фича с рендерингом и прозрачные объекты на этом шаре рендериться не будут, но на этот случай вот этот файл. Просто замените такой же файл в GLScene этим. Что делает этот файл. Этот файл делает у всех объектов дополнительное свойство Sorted. То есть дает возможность указывать следует сортировать этот объект или нет. Для незнающих поясню: GLScene сортирует объекты по некоторому принципу, или "прозрачное последним", или "чем ближе тем раньше". Рекомендую второе. Кроме того этот файл добавляет в каденесер фичу Cadencer.deltaTime - и каждый тик каденсера туда этот deltatime и записывается.

В общем-то так называемый планетарный класс вот он:

Все планеты хрянятся в отдельном ini-файле, вот его формат:

Орбита считается как косинус или синус умноженный на соответствующий коэффициент и на расстояние до планеты. Для движения планеты и лун и объекта TPlanet есть функция Life, вызов которой надо написать в каденсере. Все текстуры должны находятся в папке: images\textures\planets. Модели для астероидов в папке models\asteroids\. Для астероидов в папке images\textures\asteroids\. Формат представления ini-файлов астероидов:

  • TCustomShip - минимальный класс для любого корабля
  • TShip - класс для "человеческого" корабля
  • TAIShip - небольшой класс минимального AI, тупого до невозможности.

Как им пользоваться:

В FormCreate надо будет нечто вроде этого:

Естественно в var должны быть указаны соответствующие переменные. А в GLCadencer1Progress требуется указать:

О том, как там все работает напишу в следующей статье, так сказать во второй части к этой части, а пока можете попытаться разобраться самим, кроме того надо еще доделать процедуры Brain и Fire, а пока немного о формате для корабля:

Формат файлов для огня:

Вышеприведенные свойства соответствуют аналогичным у любого FireFX. А приведенные, как пример - наиболее оптимальные. Формат для двигателей:

Первая строка - количество engine-ов (NE). Далее размер для спрайта свечения у engine-а. Далее текстурка для спрайта. В следующих NE строках позиции каждого спрайта (они используются и для пламени).

Еще небольшое примечание:

В общем вот работающие файлы этой статьи, разве что без текстуры для звезд, да и без нее весит 2Мб.

Glscene руководство

С этого урока я начинаю новую серию уроков, посвященных программированию трехмерной графики на Delphi. А работать мы будем с бесплатным и очень функциональным графическим движком под названием GLScene. который в свою очередь основан на OpenGL. Но что же такое GLScene. Как раз этому и будет посвящен этот первый урок.

GLScene – это графический трехмерный движок для Delphi. В качестве API GLScene использует библиотеку OpenGL. Про GLScene я уже писал здесь. а скачать всегда новую версию glscene можно по ссылке http://sourceforge.net/projects/glscene/files/. GLScene является бесплатным для некоммерческого, а также и для коммерческого использования и распространяется в интернете с открытым исходным программным кодом. С помощью GLScene программирование трёхмерной графики в Delphi становится более простым.

Разработка движка началась еще в 1999 году Майком Лишке, а с версии 0.5 движок был выложен в интернете с открытым исходным кодом. В настоящий момент версия движка — 1.1 (октябрь 2010), он избавился от большого количества ошибок, пополнился новым функционалом и стал гораздо быстрее благодаря различным оптимизациям.

Для создания простой сцены достаточно потратить совсем немного времени, разместив необходимые компоненты. К таким компонентам относятся камеры, примитивы, источники света, а также другие полезные объекты. То есть можно добавить на сцену шар, указать его параметры, расположение. Конечно же, кроме примитивов, в GLScene существует возможность загружать объекты произвольной формы, заранее спроектированные в специальных трехмерных графических редакторах, таких как 3DS Studio Max, Maya и других.

GLScene поддерживает для загрузки и обработки следующие форматы файлов: 3ds, obj, vrml, smd, lwo, md3, md2, nmf, oct, b3d, gls, gl2, ms3d, lod, Nurbs и некоторые другие. GLScene позволяет работать со скелетной анимацией, что существенно упрощает создание анимированных игровых персоонажей.

Естественно есть возможность накладывания и изменения материала объекта. Материал в GLScene представляет собой совокупность текстур и параметров, которые могут быть применены к любым объектам на сцене. В GLScene уже встроенны готовые огонь, вода и деревья.

GLScene поддерживает физику ODE и Newton Game Dynamics. Кроме этого есть небольшой собственный движок расчёта столкновений с учётом законов сохранения импульса (DCE).

На сайте http://sourceforge.net/projects/glscene/files/ доступно огромное количество готовых примеров, демонстрирующих различные возможности движка.

В следующем уроке я дам подробную инструкцию по установке GLScene.

Пример графики на GLScene

GLScene — Актуальные — Игровые движки — Файлы для игроделов

  • Язык программирования: Delphi
  • Платформы: Windows
  • Достоинства: бесплатный, активно развивается и дорабатывается
  • Недостатки: непрост в освоении.

    GLScene – это открытый (предоставляется исходный код) графический движок для Delphi, использующий технологию OpenGL. GLScene можно использовать бесплатно для коммерческих и некоммерческих проектов.

    Движок GLScene значительно облегчает и ускоряет программирование трёхмерной графики для компьютерных игр и презентаций.

    Разработка разрабатывается с 1999 года Майком Лишке (Mike Lischke), в последствии стал свободным и начал развиваться совместно с комьюнити.

    На данный момент движок достаточно прогрессивно развивается, дорабатывается под новые функции и т.д. Движок достаточно оптимизирован, работает весьма быстро.

    GLScene имеет удобный визуальный интерфейс, который позволяет дизайн-тайме создавать 3D-объекты OpenGL. Данный графический движок поддерживает огромное количество различных объектов, а также дополнительных визуальных VCL-компонентов. С помощью GLScene разработчики могут создавать действительно мощные трёхмерные приложения на Delphi.

    Поддерживаются такие форматы 3D моделей: 3ds, obj, vrml, smd, md2, md3, nmf, oct, lwo, b3d, gl2, gls, ms3d, Nurbs, lod, и д.р. Для экспорта движок используется форматы obj и smd.

    У GLScene имеется собственный движок для расчёта столкновений, учитывающий законы сохранения импульса DCE. Однако он поддерживает интеграцию со свободными физическими движками, например с ODE, Newton Dynamics и др.

    GLScene весьма неплохой выбор для начинающих и профессиональных программистов, работающих на Delphi.

    Официальный сайт: http://glscene.org
    Русский сайт движка GLScene: http://www.glscene.ru - движок, проекты и утилиты, а также общение на русском языке поможет вам узнать о интересующих вопросах.


    GLScene is an OpenGL based 3D library for Delphi. It provides visual components and objects allowing description and rendering of 3D scenes in an easy, no-hassle, yet powerful manner.

    GLScene is not just an OpenGL wrapper or utility library, it has grown to become a set of founding classes for a generic 3D engine with Rapid Application Development in mind. GLScene allows you to quickly design and render 3D scenes without having to learn the intricacies of OpenGL, if you know how to design a TForm, you'll easily master the basic operations of GLScene. The library comes with a large collections of demos showcasing the ease of use, and demonstrating RAD wasn't done at the expense of CPU/GPU horsepower.

    Платформы: Windows NT/2000, Windows XP, Windows 2003, Windows Vista, Windows 7

  • Glscene руководство

    Шаблон:Карточка Шаблон:Категория по дате GLScene — графический движок. написанный для создания графических приложений на языках программирования Delphi. Free Pascal и C++. использующий библиотеку OpenGL в качестве интерфейса программирования приложений. GLScene является свободным программным обеспечением и распространяется с лицензией Mozilla Public License. С его помощью программирование трёхмерной графики становится более простым и быстрым. Последние версии движка также доступны для использования в Lazarus.

    Разработка данного движка началась в 1999 году Майком Лишке [1]. а с версии 0.5 была выложена с открытым исходным кодом и передана на попечение администратору проекта Эрику Гранже. В настоящий момент версия движка имеет номер 1.2.0.x, он избавился от массы ошибок, пополнился новыми функциями и стал быстрее благодаря различным оптимизациям.

    GLScene позволяет программистам создавать 3D-объекты OpenGL в design-time с использованием интерфейса, показанного на картинке. Большое количество объектов и дополнительных визуальных компонентов VCL помогает программистам создавать мощные 3D-приложения для Delphi, C++Builder и Lazarus.

    Загружаемые форматы файлов моделей: 3ds, obj, vrml, smd, md2, md3, nmf, oct, lwo, b3d, gl2, gls, ms3d, Nurbs, lod, и некоторые другие.

    Сохраняемые форматы файлов моделей: glsm, obj и smd.

    Поддерживаемая физика: ODE. Newton Game Dynamics. Также есть небольшой собственный движок расчёта столкновений с учётом законов сохранения импульса DCE.

    Некоторые объекты GLScene

    TGLCamera — объект камера. Это точка, из которой смотрят на трёхмерный мир. Камере можно задавать положение и целевой объект, на который она смотрит. Варьируя её параметр FocalLength, можно изменять фокусное расстояние камеры. Параметры DepthOfView и NearPlaneBias отсекают дальние и ближние объекты. Отсечение дальних объектов может сильно повысить скорость работы.

    Таким образом, поле зрения камеры — это усечённый конус, ограниченный с обеих сторон параметрами DepthOfView и NearPlane, угол которого задан через параметр FocalLength.

    TGLSceneViewer — объект просмотрщик трёхмерного мира. Его нужно кинуть на форму и установить ему свойство Camera, то есть указав камеру, с которой надо смотреть на мир. После этого он будет показывать то, что видит указанная камера.

    TGLDummyCube — объект, не содержащий графики, но имеющий позицию (position), ротацию в виде векторов направления (direction) и верха (up) и масштаб (scale). При помощи этих свойств объекту можно придавать различные положения в пространстве. А используя несколько TGLDummyCube’ов, прикреплённых друг к другу, можно создавать сложные пространственные конструкции, как, например, скелет, в котором кости прикриплены друг к другу. Кроме того TGLDummyCube удобен для использования в качестве целевого объекта камеры TGLCamera.

    TGLMaterialLibrary — библиотека материалов. Находящиеся в ней материалы переносятся в видеопамять видеокарты. Все материалы могут использоваться разными объектами GLScene одновременно. Каждый материал может иметь свою текстуру или использовать текстуры других материалов со своими настройками её отображения. Таким образом, например, загрузив текстуру машины зелёного цвета, можно использовать её в другом материале, но изменив её цвет на, скажем, синий.

    TGLFreeForm — статичная трёхмерная модель. Используется, чтобы загрузить, например, здания, ландшафты, деревья и прочие подобные объекты. Чтобы загрузить 3D-модель в GLScene достаточно двух строчек кода:

    Также надо добавить в uses модуль загрузчика моделей. Для моделей 3ds это GLFile3DS, для моделей smd — GLFileSMD, и т. д. по аналогии. После загрузки модель полностью попадает в видеопамять, и процессорное время на её отображение практически не тратится. При изменении матрицы этого объекта, в видеопамять пересылается только новая матрица.

    TGLActor — анимированная трёхмерная модель. Используется, чтобы загрузить модели людей, монстров, других движущихся объектов. Загрузка аналогична загрузке модели в TGLFreeForm. Чтобы запустить анимацию достаточно двух строчек.

    В отличие от моделей, находящихся в TGLFreeForm, здесь рендеринг частично возложен на центральный процессор. Когда происходит анимирование модели со скелетной анимацией, то для каждого положения каждой кости в каждый момент времени происходит перерасчёт положения вершин модели, после чего они пересылаются в видеопамять и отображаются на экране. Этот подход более медленный, но зато позволяет добиться практически идеальной плавности движений.

    TGLPoints — позволяет рисовать на экране точки. Добавлять точки нужно в список Positions. Чтобы точки были цветными, нужно добавлять цвета в список Colors. Если в него добавлен только один цвет, то все точки будут этого цвета. Если количество цветов равно количеству точек, то каждая точка будет своего цвета.

    TGLLines — позволяет рисовать линии и сплайны. Линии задаются точками, добавлять которые можно в список Nodes через процедуру NodesAdd. Линии по заданным точкам рисуются в зависимости от способа отображения LineSplineMode. Если это lsmSegments, то каждые две точки означают отдельную линию. Если lsmLines, то линии проводятся от точки к точке. Если какой-то другой режим, то по точкам рисуется сплайн, то есть плавная линия, проходящая через все заданные точки. Плавность линии зависит от параметра Division. Чем он больше, тем линия плавнее. Если в опции LinesOption включён параметр loUseNodeColorForLines, то для каждой точки линии можно будет использовать свой цвет. Цвета задаются в NodeColor.

    Также есть возможность выделять разными способами точки по которым строятся линии. Способ задаётся в параметре LineNodesAspect.

    • lnaInvisible — выделение отсутствует.
    • lnaAxes — выделение осями.
    • lnaCube — выделение кубами
    • lnaDodecahedron — выделение двенадцатигранниками.

    TGLLightSource — источник освещения, который освещает всю трёхмерную сцену. Их в OpenGL может быть максимум восемь. Поэтому в GLScene их тоже восемь. Светит данный источник освещения или нет, определяется параметром Shining (светимость).

    За цвет освещения отвечают три параметра: Ambient, Diffuse и Specular. Ambient — это общее освещение сцены, не зависящее от положения источника света, как освещённость в тени в солнечный день. Diffuse — направленный свет, зависит от положения источника. То есть, если поверхность отвёрнута от него, то он её не освещает. Specular — зеркальный свет. Зависит ещё и от нормали поверхности. С его помощью можно делать яркие блики, как например яркая точка на железном блестящем шарике от лампочки.

    За ослабление яркости света в зависимости от удаления от источника отвечают три параметра: ConstAttenuation, LinearAttenuation, QuadraticAttenuation. Первый — это постоянное ослабление (в общем не зависит от расстояния, а просто можно считать, что управляет яркостью источника света), второй — линейное ослабление, третий — квадратичное.

    Источник света может быть прожектором. Для этого его параметр SpotDirection нужно выставить в lsSpot и указать параметры прожектора. SpotDirection — указывает направление света прожектора. SpotCutOff — угол конуса прожектора. Если он равен 180 градусам, то считается, что это не прожектор, а обычный источник освещения. Если меньше 90, то прожектор. SpotExponent — коэффициент изменения яркости от центральной точки пятна прожектора до его краёв.

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

    Примечания