OpenSceneGraph
Стабильная версия | 3.6.5
/ 31 января 2020 г [1] |
---|---|
Репозиторий | |
Написано в | С++ |
Операционная система | Кросс-платформенный |
Тип | 3D графика |
Лицензия | Публичная лицензия OpenSceneGraph ( на основе LGPL ) |
Веб-сайт | www www |
OpenSceneGraph — это с открытым исходным кодом для 3D-графики интерфейс программирования приложений (библиотека или фреймворк), [2] используется разработчиками приложений в таких областях, как визуальное моделирование , компьютерные игры , виртуальная реальность , научная визуализация и моделирование .
Инструментарий написан на стандартном C++ с использованием OpenGL . [2] и работает на различных операционных системах , включая Microsoft Windows , macOS , Linux , IRIX , Solaris и FreeBSD . Начиная с версии 3.0.0, OpenSceneGraph также поддерживает разработку приложений для мобильных платформ, а именно iOS и Android .
С 2021 года на смену проекту придет проект VulkanSceneGraph, библиотека на основе Vulkan. [3] OpenSceneGraph находится на стадии технического обслуживания с 2019 года.
История
[ редактировать ]Проект OpenSceneGraph был инициирован Доном Бернсом в 1998 году. Роберт Осфилд присоединился к проекту в 1999 году, работая над портированием готовых компонентов для Microsoft Windows. В сентябре 1999 года исходный код проекта стал открытым, и был создан официальный веб-сайт проекта . К концу года Осфилд взял на себя проект и начал масштабный рефакторинг существующей кодовой базы, уделяя особое внимание модернизации, охватывающей современные стандарты C++ и шаблоны проектирования .
В апреле 2001 года, принимая во внимание растущее сообщество пользователей и интерес общественности, Роберт Осфилд создал OpenSceneGraph Professional Services, предоставляющий коммерческую поддержку, консалтинг и услуги по обучению. Это означает полную профессионализацию проекта.
Первой официальной стабильной версией OpenSceneGraph была версия 1.0, выпущенная в 2005 году. В 2007 году последовала расширенная версия 2.0, в которой была добавлена поддержка многоядерных и многопроцессорных систем, несколько важных NodeKit и использование унифицированной многоплатформенной системы сборки CMake . Были представлены книги и руководства для пользователей. [4]
С тех пор проект быстро развивается и становится все более популярным. Под текущей стабильной версией подписано более 530 участников, а официальный список рассылки содержит тысячи имен. [5] [ нужно обновить ]
В 2019 году проект был переведен на этап обслуживания, при этом основные усилия по разработке были направлены на его проект-преемник VulkanSceneGraph. [6]
Функции
[ редактировать ]Возможности версии 1.0: [7]
- Многофункциональная и широко распространенная графа сцены. реализация
- Поддержка функций повышения производительности
- Просмотр усеченной пирамиды , мелких элементов и отсечение окклюзии
- Уровень детализации
- Сортировка состояний и отложенное обновление состояний
- Быстрые пути OpenGL и последние расширения
- Многопоточность и оптимизация базы данных
- Поддержка OpenGL версий 1.1–2.0, включая последние расширения.
- Тесно связанная поддержка языка шейдеров OpenGL, разработанного совместно с 3Dlabs.
- Поддержка широкого спектра форматов 2D-изображений и 3D-баз данных с загрузчиками, доступными для таких форматов, как OpenFlight , TerraPage , OBJ , 3DS , JPEG , PNG и GeoTIFF.
- Эффекты частиц
- Поддержка сглаженного TrueType. текста
- Полная поддержка объектов кадрового буфера , pbuffers и эффектов рендеринга кадрового буфера в текстуру.
- Поддержка многопоточной подкачки базы данных, которую можно использовать вместе со всеми 3D-базами данных и загрузчиками изображений.
- Создание крупномасштабной постраничной базы данных геопространственной местности всей Земли.
- Поддержка самоанализа для основных библиотек, позволяющая внешним приложениям запрашивать, получать, устанавливать и работать со всеми классами в графе сцены через универсальный интерфейс.
- Многопоточная и настраиваемая поддержка компьютеров с несколькими процессорами и несколькими графическими процессорами.
Возможности версии 2.8.3 [8]
- Mac OS X 10.6 (Snow Leopard) Поддержка
- Поддержка ImageIO в Mac OS X
- Экспорт формата файла 3DS и преобразование файлов
- Интегрированная технология Autodesk FBX
- Интегрированная поддержка FFmpeg для отображения содержимого видеофайлов в 3D-приложениях.
- Поддержка формата файлов PLY
Возможности версии 2.8.4: [9]
- Поддержка сборки VS2010
Возможности версии 3.0.0: [10]
- Поддержка 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 на основе Autodesk FBX DSK, который позволяет читать формат 3D-авторской разработки и обмена .fbx.
- Новый плагин DirectShow для работы с фильмами под Windows
- Новый плагин pov для экспорта сцены в формат POV-Ray, позволяющий использовать POV-Ray для фотореалистичной трассировки лучей.
- Новый плагин ply для чтения файлов ply.
- Обновленный плагин 3ds для чтения и записи файлов .3ds.
- Обновленный плагин dxf для чтения и записи файлов .dxf.
- Поддержка сборки Cocoa и 64-битной OSX.
История выпуска стабильной версии
[ редактировать ]Версия | Дата выпуска |
---|---|
3.0 | 5 февраля 2013 г. [11] |
3.2 | 24 июля 2013 г. [12] |
3.4 | 20 июля 2015 г. [13] |
3.4.1 | 28 августа 2017 г. [14] |
3.6 | 7 апреля 2018 г. [15] |
3.6.1 | 28 мая 2018 г. |
3.6.2 | 29 июня 2018 г. |
3.6.3 | 14 сентября 2018 г. |
3.6.4 | 26 июля 2019 г. |
3.6.5 | 31 января 2020 г. |
Архитектура
[ редактировать ]Архитектуру библиотеки можно разделить на три основных подмножества — базовую библиотеку OpenSceneGraph, osgViewer и набор NodeKits.
Основной
[ редактировать ]Основу библиотеки OpenSceneGraph можно разделить на четыре основных модуля.
ОСГ
[ редактировать ]Ядро OpenSceneGraph предоставляет классы и методы для построения графа сцены и управления им . Он содержит классы, представляющие различные типы узлов , геометрию сцены, абстракцию состояний OpenGL , геометрические преобразования , а также математические классы для 2D и 3D векторных и матричных операций . расширенное управление памятью Также включено .
OpenThreads
[ редактировать ]Проект OpenSceneGraph содержит библиотеку потоков OpenThreads , которая представляет собой облегченную кроссплатформенную потоков модель . Он предназначен для предоставления минимального и полного объектно-ориентированного (ОО) интерфейса потоков для программистов C++ . Он в общих чертах смоделирован на основе API потоков Java и стандартов POSIX Threads .
Архитектура объектов OpenThreads построена на основе «заменяемых» моделей потоков, которые определяются во время компиляции в общей библиотеке . Важно отметить, что хотя можно было бы использовать фабричный шаблон для достижения цели универсального интерфейса , от программиста потребовалось бы выделить каждый из 4 фундаментальных типов (поток, мьютекс, барьер и условие) на куча . Из-за затрат, связанных с выделением кучи базовых конкретных реализаций этих конструкций на некоторых платформах, такое распределение считалось неприемлемым во время первоначальной написания этой библиотеки, и поэтому шаблон фабрики не использовался.
Вместо этого был выбран несколько заумный, но эффективный метод, обеспечивающий сокрытие необходимых данных/реализации . Этот метод использует частные указатели void для инкапсуляции частных данных объекта. Указатели void на самом деле указывают на конкретные структуры данных, но предоставляют единый интерфейс для dso.
Целью разработки OpenThreads является создание оптимизированных реализаций с использованием оптимизированных для платформы конструкций многопроцессорной обработки, таких как методы sproc, используемые в IRIX, и потоки Windows.
osgUtil
[ редактировать ]osgUtil содержит функции рендеринга внутренние и утилиты, обеспечивающие обход графа сцены , оптимизацию рендеринга и преобразование сцены в поток вызовов API OpenGL . Он также предоставляет средства базового взаимодействия со сценой, такие как выбор объекта.
osgDB
[ редактировать ]Эта библиотека предназначена для загрузки файлов 3D-моделей. Он поддерживает множество манипуляторов форматов 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 .
Этот модуль также обеспечивает абстракцию устройств ввода-вывода. Остальные плагины-загрузчики форматов файлов зарегистрированы в osgDB.
ОСГГА
[ редактировать ]Это библиотека абстракции графического интерфейса, необходимая для разных платформ.
osgViewer
[ редактировать ]Библиотека osgViewer обеспечивает быстрый и простой способ визуализации графической сцены. Это также независимая от платформы абстракция для различных оконной системы интерфейсов .
osgProducer
[ редактировать ]OSG также поставляется с osgProducer , который представляет собой независимую от платформы программу просмотра, поддерживающую несколько графических контекстов и многопоточность. [16] [17]
NodeKit
[ редактировать ]Дистрибутив проекта также содержит множество так называемых NodeKits . Это решения распространенных проблем и часто используемые более совершенные компоненты 3D-приложений и графические алгоритмы. К числу наиболее значимых относятся
- osgAnimation — использование скелетных моделей, анимация и морфинг.
- osgFX — Специальные эффекты и постобработка изображений.
- osgManipulator — Интерактивное манипулирование 3D-сценой.
- 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 и многие другие. [18] [19] [20] [21] [22]
На уровне сообщества разработчиков ПО с открытым исходным кодом несколько проектов использовали OSG в качестве механизма рендеринга:
- FlightGear (программное обеспечение для моделирования полета)
- OpenMW (переработка движка с открытым исходным кодом для Morrowind )
OpenSceneGraph получил реализацию javascript/WebGL под названием OSG.JS , которая используется многими онлайн-просмотрщиками 3D-сцен, включая Sketchfab и Clara.io .
переход от C++ к javascript через Emscripten OGStudio В настоящее время также разрабатывается .
Среди других продуктов, использующих OSG, следует упомянуть:
- Remo 3D OSG Редактор сцен
См. также
[ редактировать ]- OSG.JS
- OpenGL
- ОГРЕ
- Дельта3D
- Иррлихт Двигатель
- Кристальное пространство
- Библиотека визуализации
- OpenSG
- ОссимПланета
- Гром
- Открыть Инвентор
- Unity (игровой движок)
Ссылки
[ редактировать ]- ^ «Стабильные релизы» . www.openscenegraph.com .
- ^ Перейти обратно: а б Энн Руас; Кристофер Голд (2008). Прогресс в обработке пространственных данных: 13-й международный симпозиум по обработке пространственных данных . Спрингер. п. 370. ИСБН 978-3-540-68566-1 .
- ^ «Проект VulkanSceneGraph» . openscenegraph.github.io . Проверено 5 июля 2021 г.
- ^ Марц, П.: Краткое руководство OpenSceneGraph. Луисвилл, США, 2007 г.
- ^ «Поддержка/История — osg» . www.openscenegraph.org . Архивировано из оригинала 26 мая 2015 года.
- ^ «Проект VulkanSceneGraph» . www.openscenegraph.com .
- ^ «Новости ОСГ» . www.openscenegraph.org . Архивировано из оригинала 9 июня 2011 г. Проверено 20 февраля 2010 г.
- ^ «OpenSceneGraph добавляет новые функции в приложения 3D-графики» . 5 апреля 2010 г. Архивировано из оригинала 15 апреля 2010 г.
- ^ http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.8.4/NEWS.txt [ постоянная мертвая ссылка ]
- ^ http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-3.0.0/NEWS.txt [ постоянная мертвая ссылка ]
- ^ Торрес, Хорди. «Выпуск OpenSceneGraph 3.0» . www.openscenegraph.org . Проверено 23 сентября 2017 г.
- ^ «Выпуск OpenSceneGraph 3.2» . openscenegraph.github.io . Проверено 23 сентября 2017 г.
- ^ «Выпуск OpenSceneGraph-3.4» . www.openscenegraph.org . Проверено 23 сентября 2017 г.
- ^ «Выпуск OpenSceneGraph-3.4.1» . www.openscenegraph.org . Проверено 23 сентября 2017 г.
- ^ «Выпуск OpenSceneGraph-3.6» . www.openscenegraph.org . 7 апреля 2018 года . Проверено 14 августа 2018 г.
- ^ Эйлетт, Рут. «Введение в граф открытой сцены» (PDF) . Университет Хериот-Ватт .
- ^ «Введение в OpenSceneGraph» . openscenegraph.sourceforge.net . Проверено 5 июля 2021 г.
- ^ «Случаи использования» . www.openscenegraph.com .
- ^ «ОпенСценГраф» . openscenegraph.github.io . Проверено 13 марта 2024 г.
- ^ «Проект виртуальной местности» . vterrain.org .
- ^ «ВьюТек Инк. - Продукция» . www.viewtec.net . Архивировано из оригинала 28 февраля 2009 г.
- ^ «Дельта3денжин 2023» . easd-design.com . Проверено 13 марта 2024 г.
Внешние ссылки
[ редактировать ]- www
.openscenegraph .org — официальный сайт проекта. - Двоичные файлы AlphaPixel OSG — предварительно скомпилированные двоичные файлы для Windows, Mac и Linux x86 и x64.
- SigmaOSG — учебные пособия по OpenSceneGraph (содержит все предыдущие материалы OSGHelp с устаревшего сайта OSGHelp)
- Сценографы и Openscenegraph для разработки 3D-программ
- OpenSceneGraph — веб-страница с информацией о библиотеке на www.OpenGL.org (одна из четырех продвигаемых библиотек)