OpenSceneGraph - OpenSceneGraph

OpenSceneGraph
Osglogo2.0.png
Стабильный выпуск
3.6.5 / 31 января 2020 г.; 10 месяцев назад (2020-01-31)[1]
Репозиторий Отредактируйте это в Викиданных
Написано вC ++
Операционная системаКроссплатформенность
Тип3D графика
ЛицензияОбщественная лицензия OpenSceneGraph (LGPL основан)
Интернет сайтwww.openscenegraph.org
www.openscenegraph.com

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

Инструментарий написан на стандартном C ++ с помощью OpenGL,[2] и работает на различных операционные системы включая Майкрософт Виндоус, macOS, Linux, IRIX, Солярис и 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 текст
  • Полная поддержка кадровый буфер объекты, буферы и эффекты преобразования в текстуру кадрового буфера
  • Поддержка многопоточного разбиения на страницы базы данных, которую можно использовать вместе со всеми трехмерными базами данных и загрузчиками изображений.
  • Создание крупномасштабной страничной базы данных с геопространственным рельефом всей земли
  • Поддержка интроспекции для основных библиотек, позволяющая внешним приложениям запрашивать, получать, устанавливать и работать со всеми классами в графе сцены через общий интерфейс
  • Многопоточная и настраиваемая поддержка машин с несколькими ЦП / ГП

Возможности версии 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

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

ВерсияДата выхода
3.05 февраля 2013 г.[9]
3.224 июля 2013 г.[10]
3.420 июля 2015 г.[11]
3.4.128 августа 2017 г.[12]
3.67 апреля 2018 г.[13]
3.6.128 мая 2018
3.6.229 июн 2018
3.6.314 сентября 2018 г.
3.6.426 июля 2019 г.
3.6.531 января 2020 г.

Архитектура

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

Основной

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

OSG

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

OpenThreads

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

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

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

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

osgUtil

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

osgDB

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

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

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

osgViewer

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

NodeKits

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

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

Прием и усыновление

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

Существует множество программных продуктов, построенных на основе OpenSceneGraph; среди прочего, Виртуальный ландшафтный проект и ViewTec TerrainView. Список пользователей OSG содержит компании как Боинг, НАСА, FlightGear, Norcontrol и много других.[14][15][16][17][18]

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

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

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

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

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

Смотрите также

Рекомендации

  1. ^ «Стабильные релизы».
  2. ^ а б Энн Руас, Кристофер Голд (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. Получено 2010-02-20.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. Получено 2017-09-23.
  10. ^ Пользователь, Супер. «Выпуск OpenSceneGraph 3.2». www.openscenegraph.org. Получено 2017-09-23.
  11. ^ Пользователь, Супер. "Релиз OpenSceneGraph-3.4". www.openscenegraph.org. Получено 2017-09-23.
  12. ^ Пользователь, Супер. "Релиз OpenSceneGraph-3.4.1". www.openscenegraph.org. Получено 2017-09-23.
  13. ^ Пользователь, Супер. «Релиз OpenSceneGraph-3.6». www.openscenegraph.org. Получено 2018-08-14.
  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

внешняя ссылка