OpenSceneGraph
Wersja stabilna | 3.6.5 / 31 stycznia 2020 r
|
---|---|
Magazyn | |
Napisane w | C++ |
System operacyjny | Międzyplatformowe |
Typ | Grafika 3D |
Licencja | Licencja publiczna OpenSceneGraph ( oparta na LGPL ) |
Strona internetowa |
|
OpenSceneGraph to otwarty interfejs programowania aplikacji graficznych 3D (biblioteka lub framework), używany przez twórców aplikacji w takich dziedzinach, jak symulacja wizualna , gry komputerowe , rzeczywistość wirtualna , wizualizacja naukowa i modelowanie .
Zestaw narzędzi jest napisany w standardowym języku C++ przy użyciu OpenGL i działa w różnych systemach operacyjnych , w tym Microsoft Windows , macOS , Linux , IRIX , Solaris i FreeBSD . Od wersji 3.0.0 OpenSceneGraph obsługuje również tworzenie aplikacji na platformy mobilne, czyli iOS i Android .
Od 2021 roku projekt jest zastępowany przez projekt VulkanSceneGraph, bibliotekę opartą na Vulkan. OpenSceneGraph jest w fazie konserwacji od 2019 roku.
Historia
Projekt OpenSceneGraph został zainicjowany przez Dona Burnsa w 1998 roku. Robert Osfield dołączył do projektu w 1999 roku, pracując nad przeniesieniem gotowych komponentów dla systemu Microsoft Windows. Projekt stał się open source we wrześniu 1999 roku i powstała oficjalna strona internetowa projektu . Pod koniec roku Osfield przejął projekt i rozpoczął szeroko zakrojoną refaktoryzację istniejącego kodu, kładąc nacisk na modernizację, obejmującą nowoczesne standardy C++ i wzorce projektowe .
W kwietniu 2001 roku, mając na uwadze rosnącą społeczność użytkowników i zainteresowanie opinii publicznej, Robert Osfield stworzył OpenSceneGraph Professional Services, świadczący usługi wsparcia komercyjnego, doradcze i szkoleniowe. Oznacza to pełną profesjonalizację projektu.
Pierwszą oficjalną stabilną wersją OpenSceneGraph była wersja 1.0, wydana w 2005 roku. Rozszerzona wersja 2.0 pojawiła się w 2007 roku, dodając obsługę systemów wielordzeniowych i wieloprocesorowych, kilka ważnych NodeKitów i użycie zunifikowanego wieloplatformowego systemu kompilacji CMake . Wprowadzono książki i podręczniki użytkownika.
Od tego czasu projekt szybko się rozwija i zyskuje coraz większą popularność. W aktualnej stabilnej wersji podpisanych jest ponad 530 współpracowników, a oficjalna lista mailingowa zawiera tysiące nazwisk.
W 2019 roku projekt został przeniesiony do fazy konserwacji, a główny wysiłek rozwojowy został skierowany do jego następcy, projektu VulkanSceneGraph.
Cechy
Funkcje w wersji 1.0:
- Bogata w funkcje i szeroko stosowana implementacja wykresów scen
- Obsługa funkcji zwiększających wydajność
- Zobacz frustum , małe elementy i usuwanie okluzji
- Poziom detali
- Sortowanie stanów i aktualizowanie stanów leniwych
- Szybkie ścieżki OpenGL i najnowsze rozszerzenia
- Optymalizacja wielowątkowości i baz danych
- Wsparcie dla OpenGL, od 1.1 do 2.0, w tym najnowsze rozszerzenia
- Ściśle powiązana obsługa OpenGL Shading Language, opracowana we współpracy z 3Dlabs
- Obsługa szerokiej gamy formatów obrazów 2D i baz danych 3D, z modułami ładującymi dostępnymi dla formatów takich jak OpenFlight , TerraPage, OBJ , 3DS , JPEG , PNG i GeoTIFF
- Efekty cząsteczkowe
- Obsługa wygładzonego tekstu TrueType
- Bezproblemowa obsługa obiektów bufora ramki , buforów bufora i efektów renderowania bufora ramki do tekstury
- Obsługa wielowątkowego stronicowania bazy danych, którego można używać w połączeniu ze wszystkimi programami ładującymi bazy danych 3D i obrazy
- Wielkoskalowe generowanie stronicowanej bazy danych terenu geoprzestrzennego całej ziemi
- Wsparcie introspekcji dla podstawowych bibliotek, umożliwiające aplikacjom zewnętrznym wysyłanie zapytań, pobieranie, ustawianie i operowanie na wszystkich klasach w grafie sceny za pośrednictwem ogólnego interfejsu
- Wielowątkowa i konfigurowalna obsługa wielu procesorów/wielu procesorów graficznych
Funkcje w wersji 2.8.3
- systemu Mac OS X 10.6 (Snow Leopard).
- Obsługa ImageIO w systemie Mac OS X
- Eksport plików w formacie 3DS i konwersja plików
- Zintegrowana technologia Autodesk FBX
- Zintegrowana obsługa FFmpeg do wyświetlania treści plików wideo w aplikacjach 3D.
- Obsługa formatu plików PLY
Funkcje w wersji 2.8.4:
- Obsługa kompilacji VS2010
Funkcje w wersji 3.0.0:
- Obsługa OpenGL ES 1.1 i OpenGL ES 2.0
- Obsługa OpenGL 3.x i 4.x wraz z powiązanymi rozszerzeniami OpenGL
- Wsparcie dla Androida na tabletach i telefonach
- Wsparcie dla IOS na tabletach i telefonach (aplikacje użytkowników końcowych zostały już zaakceptowane w App Store)
- Wprowadzenie aplikacji Present3D do wciągających prezentacji 3D
- Nowe rozszerzalne serializatory, które udostępniają nowe natywne formaty plików binarnych .osgb, .osgt ascii i .osgx xml
- Nowa uogólniona architektura metadanych z możliwością serializacji
- Nowa biblioteka osgQt, która ułatwia integrację !OpenSceneGraph z Qt, w tym przeglądanie stron internetowych za pomocą QWebKit.
- Nowa wtyczka FBX oparta na Autodesk FBX DSK, która umożliwia odczyt formatu tworzenia i wymiany plików .fbx 3D
- Nowa wtyczka directshow do obsługi filmów pod Windows
- Nowa wtyczka POV do eksportowania sceny do formatu POV-Ray, umożliwiająca wykorzystanie POV-Ray do fotorealistycznego ray tracingu
- Nowa wtyczka warstwy do odczytu plików warstwy
- Zmodernizowana wtyczka 3ds do odczytu i zapisu plików .3ds
- Zmodernizowana wtyczka dxf do odczytu i zapisu plików .dxf
- Wsparcie dla Cocoa i 64-bitowej wersji OSX
Historia wydań wersji stabilnej
Wersja | Data wydania |
---|---|
3.0 | 5 lutego 2013 r |
3.2 | 24 lipca 2013 r |
3.4 | 20 lipca 2015 r |
3.4.1 | 28 sierpnia 2017 r |
3.6 | 7 kwietnia 2018 r |
3.6.1 | 28 maja 2018 r |
3.6.2 | 29 czerwca 2018 r |
3.6.3 | 14 września 2018 r |
3.6.4 | 26 lipca 2019 r |
3.6.5 | 31 stycznia 2020 r |
Architektura
Architekturę biblioteki można podzielić na trzy główne podzbiory — podstawową bibliotekę OpenSceneGraph, osgViewer i zestaw NodeKits.
Rdzeń
Podstawę biblioteki OpenSceneGraph można dalej podzielić na cztery główne moduły.
osg
Rdzeń OpenSceneGraph zapewnia klasy i metody do konstruowania i manipulowania wykresem sceny . Zawiera klasy reprezentujące różne typy węzłów , geometrię sceny, abstrakcję stanu OpenGL , transformacje geometryczne , a także klasy matematyczne dla operacji wektorowych i macierzowych 2D i 3D . Zawiera również zaawansowane zarządzanie pamięcią .
Otwarte wątki
Projekt OpenSceneGraph zawiera bibliotekę wątków OpenThreads , która jest lekkim wieloplatformowym modelem wątków . Ma na celu zapewnienie minimalnego i kompletnego interfejsu wątku obiektowego (OO) dla programistów C++ . Jest luźno wzorowany na API wątków Java i standardach wątków POSIX .
Architektura OpenThreads została zaprojektowana w oparciu o „wymienialne” modele wątków, które są definiowane w czasie kompilacji we współdzielonej bibliotece obiektów . Należy zauważyć, że chociaż projekt wzorca fabrycznego mógł zostać wykorzystany do osiągnięcia celu, jakim jest ogólny interfejs , wymagałoby to od programisty przydzielenia każdego z 4 podstawowych typów (wątek, muteks, bariera i warunek) na sterta . Ze względu na koszt związany z alokacją sterty podstawowych konkretnych implementacji tych konstrukcji na niektórych platformach, taka alokacja została uznana za niedopuszczalną w czasie, gdy ta biblioteka była pierwotnie pisana, a zatem wzorzec fabryczny nie był używany.
Zamiast tego wybrano nieco zawiłą - ale skuteczną - technikę, aby zapewnić niezbędne ukrywanie danych/implementacji . Ta technika wykorzystuje prywatne wskaźniki pustki do enkapsulacji prywatnych danych obiektu. Puste wskaźniki w rzeczywistości wskazują na konkretne struktury danych, ale zapewniają jednolity interfejs dso.
Celem projektowym OpenThreads jest konstruowanie zoptymalizowanych implementacji przy użyciu zoptymalizowanych pod kątem platformy konstrukcji wieloprocesorowych, takich jak metody sproc używane w wątkach IRIX i Windows.
osgUtil
osgUtil zawiera funkcje zaplecza renderującego i narzędzia zajmujące się przechodzeniem grafu sceny , optymalizacją renderowania i przekształcaniem sceny w strumień wywołań API OpenGL . Zapewnia również środki podstawowej interakcji ze sceną, takie jak wybieranie obiektów.
osgDB
Ta biblioteka ma za zadanie ładowanie plików modeli 3D. Obsługuje wiele formatów danych 2D/3D . Obsługiwanych jest ponad 50 różnych formatów — najpopularniejsze to formaty danych 3D, takie jak COLLADA (.dae), LightWave (.lwo), Wavefront (.obj), OpenFlight (.flt), 3D Studio Max (.3ds), DirectX (.x) i wiele innych. OpenSceneGraph zapewnia również własny natywny ASCII .osg. Istnieją eksportery do formatu .osg dostępne dla Blendera , Maya i Studio 3D MAX.
Obsługiwane formaty obrazu to .rgb, .gif , .jpg , .png , .tiff , .pic, .bmp , .dds , .tga i quicktime .
Ten moduł zapewnia również abstrakcję urządzeń we/wy. Inne wtyczki ładujące format plików są zarejestrowane w osgDB.
osgGA
Jest to biblioteka abstrakcji GUI wymagana dla różnych platform.
osgViewer
Biblioteka osgViewer zapewnia szybki i łatwy sposób wizualizacji sceny graficznej. Jest to również abstrakcja niezależna od platformy dla różnych systemu okien .
osgProducent
OSG jest również dostarczany z osgProducer , który jest po prostu niezależną od platformy przeglądarką obsługującą wiele kontekstów graficznych i wielowątkowość.
NodeKity
Dystrybucja projektu zawiera również szereg tzw. NodeKits . Są to rozwiązania typowych problemów i często używanych bardziej zaawansowanych komponentów aplikacji 3D i algorytmów graficznych. Wśród najbardziej znaczących są
- osgAnimation — Wykorzystanie, animacja i morfing modeli szkieletowych.
- osgFX — Efekty specjalne i postprocessing obrazu.
- osgManipulator — Interaktywna manipulacja scenami 3D.
- osgParticle — Zaawansowane wykorzystanie systemu cząstek .
- osgQt — Integracja z zestawem narzędzi Qt i włączenie elementów QtGUI do aplikacji OSG.
- osgShadow — Framework dla technik renderowania cieni.
- osgTerrain — Rozbudowane renderowanie terenu .
- osgText — Wysokiej jakości czcionki antyaliasingowe, obsługa czcionek TrueType i FreeType.
- osgVolume — Renderowanie wolumetryczne i manipulacja danymi wolumetrycznymi.
- osgWidget — Proste tworzenie GUI .
Przyjęcie i adopcja
OpenSceneGraph nie zapewnia żadnej funkcjonalności dla wyższej logiki „gier”, jest narzędziem tylko do renderowania. Istnieje kilka pełnowymiarowych silników do tworzenia gier komputerowych (lub tak zwanych poważnych gier ) wykorzystujących OSG jako podstawę do renderowania grafiki, z których najpowszechniejszym frameworkiem jest Delta3D .
Istnieje ogromna różnorodność oprogramowania zbudowanego na bazie OpenSceneGraph; między innymi Virtual Terrain Project i ViewTec TerrainView . Lista użytkowników OSG zawiera takie firmy jak Boeing , NASA , FlightGear , Norcontrol i wiele innych.
Na poziomie społeczności open source kilka projektów przyjęło OSG jako zaplecze renderujące:
- FlightGear (oprogramowanie do symulacji lotu)
- OpenMW (odtwarzanie silnika Open Source dla Morrowind )
OpenSceneGraph otrzymał implementację javascript/WebGL o nazwie OSG.JS , która jest używana przez wiele internetowych przeglądarek scen 3D, w tym Sketchfab i Clara.io .
Obecnie opracowywane jest również opakowanie z C++ na javascript przez Emscripten OGStudio.
Wśród innych produktów korzystających z OSG należy wymienić:
- Edytor scen Remo 3D OSG
Zobacz też
- OSG.JS
- OpenGL
- OGR
- Delta3D
- Silnik Irrlicht
- Kryształowa przestrzeń
- Biblioteka wizualizacji
- OpenSG
- planeta ossim
- Grome
- Otwórz Inventora
- Unity (silnik gry)
Linki zewnętrzne
-
www .openscenegraph .org - oficjalna strona projektu - Pliki binarne AlphaPixel OSG — prekompilowane pliki binarne dla systemów Windows, Mac i Linux x86 i x64.
- SigmaOSG — samouczki OpenSceneGraph (zawiera wszystkie wcześniejsze materiały OSGHelp z wycofanej witryny OSGHelp)
- Scenegraphs i Openscenegraph do tworzenia oprogramowania 3D
- OpenSceneGraph - strona informacyjna biblioteki na www.OpenGL.org (jedna z czterech promowanych bibliotek)