GLScene

GLScene
GLScene
Glscene-logo.png
Интерфейс GLScene
Интерфейс GLScene
Тип

Графический движок

Разработчик

Mike Lischke (первоначальный автор), Eric Grange (нынешний maintain'ер)

Написана на

Delphi, FreePascal

Операционная система

Кроссплатформенное программное обеспечение

Последняя версия

1.1 (22 августа 2010)

Тестовая версия

SVN revision 5991 (17 ноября 2011)

Лицензия

Mozilla Public License 1.1

Сайт

glscene.sf.net

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

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

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

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

Поддерживаемые для сохранения форматы файлов: 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 достаточно двух строчек кода:

  // Указываем какую библиотеку материалов использовать.
GLFreeForm1.MaterialLibrary := GLMaterialLibrary1;
  // Загружаем 3D-модель.
GLFreeForm1.LoadFromFile('mymodel.3ds');

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

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

  // Грузим модель со скелетной анимацией 'mymodel.smd'.
GLActor1.LoadFromFile('mymodel.smd');
  // Добавляем анимацию ходьбы из файла 'walk.smd'.
GLActor1.AddDataFromFile('walk.smd');
  // Переключаемся на анимацию ходьбы 'walk'. 
GLActor1.SwitchToAnimation('walk');
  // Запускаем проигрывание анимации в циклическом режиме.
GLActor1.AnimationMode := aamLoop;

В отличие от моделей, находящихся в 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 — коэффициент изменения яркости от центральной точки пятна прожектора до его краёв.

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

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Полезное


Смотреть что такое "GLScene" в других словарях:

  • GLScene — is a free OpenGL based library for the Delphi programming language. It provides visual components and objects allowing description and rendering of 3D scenes.Development of the original library was started in 1999 by Mike Lischke… …   Wikipedia

  • GLScene — Este artículo o sección necesita referencias que aparezcan en una publicación acreditada, como revistas especializadas, monografías, prensa diaria o páginas de Internet fidedignas. Puedes añadirlas así o avisar al autor principal del artículo en… …   Wikipedia Español

  • Lazarus (software) — This article concerns the software IDE named Lazarus. For other uses of the name, see Lazarus (disambiguation). Infobox Software name = Lazarus caption = Lazarus IDE 0.9.25 Screen print (Linux, GTK1) developer = volunteers latest release version …   Wikipedia

  • Quake Army Knife — Infobox Software name = Quake Army Knife caption = Screenshot of QuArK s map editor. developer = released = latest release version = 6.6.0 Beta 1 latest release date = release date|2008|05|06 latest preview version = latest preview date =… …   Wikipedia

  • OGRE — (Object Oriented Graphics Rendering Engine) Тип Графический движок Разработчик …   Википедия

  • QuArK — Quake Army Knife Рабочее окно QuArK скриншот редактора карт QuArK …   Википедия

  • OpenGL — Original author(s) Silicon Graphics Developer(s) Khronos Group Stable release 4.2 …   Wikipedia

  • Game engine — A game engine is a system designed for the creation and development of video games. There are many game engines that are designed to work on video game consoles and personal computers. The core functionality typically provided by a game engine… …   Wikipedia

  • Crystal Space — Developer(s) Jorrit Tyberghein et al. Stable release 1.4.0 / January 25, 2010; 20 months ago ( …   Wikipedia

  • Source (game engine) — Source engine …   Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»