Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

OpenSceneGraph является открытым исходным код 3D графики интерфейс прикладного программирования , [2] используется разработчиками приложений в таких областях, как визуальное моделирование , компьютерные игры , виртуальная реальность , научная визуализация и моделирование .

Пособие написано в стандарте C ++ с использованием OpenGL , [2] и работает на различных операционных системах , включая Microsoft Windows , MacOS , Linux , IRIX , Solaris и FreeBSD . Начиная с версии 3.0.0, OpenSceneGraph также поддерживает разработку приложений для мобильных платформ, а именно iOS и Android .

История [ править ]

Проект OpenSceneGraph был инициирован Доном Бернсом в 1998 году. Роберт Осфилд присоединился к проекту в 1999 году, работая над портированием готовых компонентов для Microsoft Windows. В сентябре 1999 года проект был открыт с исходным кодом, и был создан официальный веб-сайт проекта . К концу года Осфилд взял на себя проект и начал обширный рефакторинг существующей кодовой базы, делая упор на модернизацию, охватывая современные стандарты C ++ и шаблоны проектирования .

В апреле 2001 года, учитывая растущее сообщество пользователей и интерес общественности, Роберт Осфилд создал OpenSceneGraph Professional Services, предоставляя коммерческую поддержку, консультации и услуги обучения. Это означает полную профессионализацию проекта.

Первой официальной стабильной версией OpenSceneGraph была версия 1.0, выпущенная в 2005 году. Расширенная версия 2.0 последовала в 2007 году, добавив поддержку многоядерных систем и систем с несколькими графическими процессорами, несколько важных NodeKits и использование унифицированной многоплатформенной системы сборки CMake . Были представлены книги и руководства для пользователей. [3]

С тех пор проект быстро растет и становится все более популярным. Под текущей стабильной версией подписано более 530 участников, а официальный список рассылки содержит тысячи имен. [4]

Особенности [ править ]

Обзор архитектуры opencenegraph.

Возможности версии 1.0: [5]

  • Многофункциональная и широко распространенная реализация графа сцены
  • Поддержка функций повышения производительности
    1. Просмотр усеченной кости , мелких деталей и отсечения окклюзии
    2. Уровень детализации
    3. Сортировка состояний и ленивое обновление состояний
    4. Быстрые пути OpenGL и последние расширения
    5. Многопоточность и оптимизация базы данных
  • Поддержка OpenGL от 1.1 до 2.0, включая последние расширения
  • Тесно связанная поддержка OpenGL Shading Language, разработанная совместно с 3Dlabs
  • Поддержка широкого спектра 2D изображений и 3D баз данных форматов, с погрузчиками доступных форматов , таких как OpenFlight , TerraPage , OBJ , 3DS , JPEG , PNG и GeoTIFF
  • Эффекты частиц
  • Поддержка сглаженного текста TrueType
  • Бесшовная поддержка фреймбуфера объектов, pbuffers и рамки буфера рендеринга в текстуру эффекты
  • Поддержка многопоточного разбиения на страницы базы данных, которую можно использовать вместе со всеми трехмерными базами данных и загрузчиками изображений.
  • Создание крупномасштабной страничной базы данных с геопространственным рельефом всей Земли
  • Поддержка самоанализа для основных библиотек, позволяющая внешним приложениям запрашивать, получать, устанавливать и работать со всеми классами в графе сцены через общий интерфейс
  • Многопоточная и настраиваемая поддержка машин с несколькими процессорами и графическими процессорами

Возможности версии 2.8.3 [6]

  • Поддержка Mac OS X 10.6 (Snow Leopard)
  • Поддержка ImageIO в Mac OS X
  • Экспорт файлов в формате 3DS и преобразование файлов
  • Интегрированная технология Autodesk FBX
  • Встроенная поддержка FFmpeg для отображения содержимого видеофайлов в 3D-приложениях.
  • Поддержка формата файла PLY

Возможности версии 2.8.4: [7]

  • Поддержка сборки VS2010

Возможности версии 3.0.0: [8]

  • Поддержка OpenGL ES 1.1 и OpenGL ES 2.0
  • Поддержка OpenGL 3.x и 4.x вместе со связанными расширениями OpenGL
  • Поддержка Android на планшетах и ​​телефонах
  • Поддержка IOS на планшетах и ​​телефонах (приложения конечных пользователей уже приняты в App Store)
  • Представление приложения Present3D для иммерсивных 3D-презентаций
  • Новые расширяемые сериализаторы, которые предоставляют новые собственные форматы двоичных файлов .osgb, .osgt ascii и .osgx xml.
  • Новая обобщенная сериализуемая архитектура метаданных
  • Новая библиотека osgQt, которая упрощает интеграцию! OpenSceneGraph с Qt, включая просмотр веб-страниц через QWebKit.
  • Новый плагин FBX, основанный на Audodesk FBX DSK, который позволяет читать форматы создания и обмена .fbx 3D.
  • Новый плагин directshow для работы с фильмами под Windows
  • Новый плагин pov для экспорта сцены в формат POV-Ray, позволяющий использовать POV-Ray для фотореалистичной трассировки лучей
  • Новый плагин ply для чтения файлов ply
  • Обновленный плагин 3ds для чтения и записи файлов .3ds.
  • Обновленный плагин dxf для чтения и записи файлов .dxf.
  • Поддержка сборки какао и 64-битной OSX

История выпусков стабильной версии [ править ]

Архитектура [ править ]

Архитектуру библиотеки можно разделить на три основных подмножества - базовую библиотеку OpenSceneGraph, osgViewer и набор NodeKits.

Ядро [ править ]

Базу библиотеки OpenSceneGraph можно разделить на четыре основных модуля.

osg [ править ]

Ядро OpenSceneGraph предоставляет классы и методы для построения и управления графом сцены . Он содержит классы, представляющие различные типы узлов , геометрию сцены, абстракцию состояния OpenGL , геометрические преобразования , а также математические классы для 2D и 3D векторных и матричных операций . Также включено расширенное управление памятью .

OpenThreads [ править ]

Проект OpenSceneGraph содержит библиотеку потоков OpenThreads , которая представляет собой облегченную кроссплатформенную модель потоков . Он предназначен для обеспечения минимального и полного объектно-ориентированного (OO) интерфейса потоков для программистов на C ++ . Он слабо смоделирован на основе API потоков Java и стандартов потоков POSIX .

Архитектура из OpenThreads построена вокруг «заменяемых» моделей резьбы , которые определяются при компиляции в общей библиотеке объекта . Важно отметить, что хотя дизайн фабричного шаблона можно было бы использовать для достижения цели универсального интерфейса , от программиста потребовалось бы выделить каждый из 4 основных типов (поток, мьютекс, барьер и условие) на куча . Из-за затрат, связанных с распределением в куче базовых конкретных реализаций этих конструкций на некоторых платформах, такое распределение считалось неприемлемым в то время, когда эта библиотека была первоначально написана, и, таким образом, фабричный шаблон не использовался.

Вместо этого был выбран несколько заумный, но эффективный метод, обеспечивающий сокрытие необходимых данных / реализации . Этот метод использует частные указатели void для инкапсуляции частных данных объекта. Указатели void фактически указывают на конкретные структуры данных, но предоставляют единый интерфейс для dso.

Целью разработки OpenThreads является создание оптимизированных реализаций с использованием оптимизированных для платформы многопроцессорных конструкций, таких как методы sproc, используемые в IRIX, и потоках Windows.

osgUtil [ править ]

osgUtil содержит рендеринг серверной функциональности и утилиты заботиться о сцене обхода графа , что делает оптимизацию и преобразовывать сцены в поток OpenGL вызовов. Он также предоставляет средства базового взаимодействия со сценой, такие как выбор объекта.

osgDB [ править ]

OpenSceneGraph также поставляется с большой коллекцией загрузчиков баз данных и множеством манипуляторов форматов данных 2D / 3D . Более 50 различных форматов поддерживаются - наиболее распространенные форматы данных 3D, такие как COLLADA (.dae), LightWave (.lwo), Wavefront (.obj), OpenFlight (.flt), 3D Studio Max (.3ds), DirectX ( .x) и многие другие. OpenSceneGraph также предоставляет собственный формат ASCII .osg. Существуют средства экспорта в формат .osg, доступные для Blender , Maya и 3D Studio MAX.

Поддерживаемые форматы изображений: .rgb, .gif , .jpg , .png , .tiff , .pic, .bmp , .dds , .tga и quicktime .

Этот модуль также обеспечивает абстракцию устройства ввода-вывода.

osgViewer [ править ]

Библиотека osgViewer обеспечивает быстрый и простой способ визуализации графической сцены. Это также независимая от платформы абстракция для различных интерфейсов оконных систем .

NodeKits [ править ]

Дистрибутив проекта также содержит множество так называемых NodeKits . Это решения общих проблем и часто используемые более продвинутые компоненты 3D-приложений и графические алгоритмы. Среди наиболее значимых:

  • osgAnimation - использование, анимация и морфинг скелетных моделей.
  • osgFX - Специальные эффекты и постобработка изображений.
  • osgManipulator - Интерактивное манипулирование трехмерной сценой.
  • osgParticle - Расширенное использование системы частиц .
  • osgQt - интеграция с инструментарием Qt и включение элементов QtGUI в приложения OSG.
  • osgShadow - фреймворк для методов рендеринга теней.
  • osgTerrain - Обширный рендеринг ландшафта .
  • osgText - качественные шрифты с антиалиасингом, поддержка шрифтов TrueType и FreeType.
  • osgVolume - Объемный рендеринг и объемные манипуляции с данными.
  • osgWidget - Простое создание графического интерфейса .

Прием и усыновление [ править ]

OpenSceneGraph не предоставляет никаких функций для более высокой «игровой» логики, это инструмент только для рендеринга. Существует несколько полномасштабных движков для создания компьютерных игр (или так называемых серьезных игр ), использующих OSG в качестве основы для рендеринга графики, наиболее распространенной структурой является Delta3D .

Существует множество программных продуктов, построенных на основе OpenSceneGraph; среди прочего, Virtual Terrain Project и ViewTec TerrainView . Список пользователей OSG содержит такие компании, как Boeing , NASA , FlightGear , Norcontrol и многие другие. [14] [15] [16] [17] [18]

На уровне сообщества с открытым исходным кодом несколько проектов приняли OSG в качестве серверной части рендеринга:

  • FlightGear (программное обеспечение для моделирования полета)
  • OpenMW (движок с открытым исходным кодом для Morrowind)

OpenSceneGraph получил реализацию javascript / WebGL под названием OSG.JS, которая используется многими онлайн-программами просмотра трехмерных сцен, включая Sketchfab и Clara.io .

В настоящее время также разрабатывается переход с C ++ на javascript через Emscripten OGStudio .

Среди других продуктов, использующих OSG, необходимо упомянуть:

  • Редактор сцены Remo 3D OSG
  • http://www.palomino3d.org/

См. Также [ править ]

  • OSG.JS
  • OpenGL
  • ОГРЭ
  • Delta3D
  • Двигатель Irrlicht
  • Кристальное пространство
  • Библиотека визуализации
  • OpenSG
  • ossimPlanet
  • Гром
  • Открыть Inventor
  • Unity (игровой движок)

Ссылки [ править ]

  1. ^ «Стабильные релизы» .
  2. ^ a b Энн Руас, Кристофер Голд (2008). Прогресс в обработке пространственных данных: 13-й Международный симпозиум по обработке пространственных данных . Springer. п. 370. ISBN 9783540685661.CS1 maint: использует параметр авторов ( ссылка )
  3. ^ Марц, П .: Краткое руководство по OpenSceneGraph. Луисвилл, США, 2007 год.
  4. ^ http://www.openscenegraph.org/projects/osg/wiki/Support/History
  5. ^ "Архивная копия" . Архивировано из оригинала 2011-06-09 . Проверено 20 февраля 2010 .CS1 maint: заархивированная копия как заголовок ( ссылка )
  6. ^ http://www.openscenegraph.org/projects/osg/wiki/News/Press/OSG2.8.3
  7. ^ http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.8.4/NEWS.txt
  8. ^ http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-3.0.0/NEWS.txt
  9. ^ Торрес, Хорди. «Релиз OpenSceneGraph 3.0» . www.openscenegraph.org . Проверено 23 сентября 2017 .
  10. ^ Пользователь, Super. «Релиз OpenSceneGraph 3.2» . www.openscenegraph.org . Проверено 23 сентября 2017 .
  11. ^ Пользователь, Super. «Релиз OpenSceneGraph-3.4» . www.openscenegraph.org . Проверено 23 сентября 2017 .
  12. ^ Пользователь, Super. «Релиз OpenSceneGraph-3.4.1» . www.openscenegraph.org . Проверено 23 сентября 2017 .
  13. ^ Пользователь, Super. «Релиз OpenSceneGraph-3.6» . www.openscenegraph.org . Проверено 14 августа 2018 .
  14. ^ http://www.openscenegraph.com/index.php/gallery/use-cases
  15. ^ http://www.openscenegraph.org/projects/osg/wiki/Screenshots
  16. ^ http://vterrain.org/
  17. ^ http://www.viewtec.net/index.php?page=products
  18. ^ http://www.delta3d.org

Внешние ссылки [ править ]

  • www .openscenegraph .org - официальный сайт проекта
  • AlphaPixel OSG Binaries - предварительно скомпилированные двоичные файлы для Windows, Mac и Linux x86 и x64.
  • SigmaOSG - OpenSceneGraph Tutorials (содержит все предыдущие материалы OSGHelp с удаленного сайта OSGHelp)
  • Сценеграфы и Openscenegraph для разработки программного обеспечения для 3D
  • OpenSceneGraph - информационная веб-страница библиотеки на www.OpenGL.org (одна из четырех продвигаемых библиотек)