OpenSceneGraph
| OpenSceneGraph
| |
|---|---|
| |
| |
| Podstawowe dane
| |
| Aktualna wersja | 3.6.5 (31 stycznia 2020 r.) |
| system operacyjny | Wieloplatformowy |
| język programowania | C++ |
| Kategoria | Wizualizacja naukowa , biblioteka programów |
| Licencja | Licencja publiczna OpenSceneGraph ( oparta na LGPL ) |
| niemieckojęzyczny | Nie |
| www.openscenegraph.org | |
OpenSceneGraph to system wykresów scen typu open source (SG), który działa w aplikacjach graficznych czasu rzeczywistego , takich jak: B. Używany jest FlightGear .
OpenSceneGraph został napisany w C++ , wykorzystuje OpenGL jako podstawę grafiki 3D i działa na różnych systemach operacyjnych, w tym Microsoft Windows , Mac OS X , Linux , IRIX , Solaris i FreeBSD .
Chociaż ma podobną nazwę do systemu graficznego sceny OpenSG i został uruchomiony w tym samym czasie, są to dwa różne i niezależne projekty.
historia
Projekt OpenSceneGraph został zainicjowany w 1998 roku przez Dona Burnsa. Robert Osfield dołączył do projektu w 1999 roku i pracował nad przeniesieniem gotowych komponentów do 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ącej bazy kodu, koncentrując się na modernizacji i włączeniu nowoczesnych standardów i wzorców projektowych C++.
W kwietniu 2001 roku, mając na uwadze rosnącą społeczność użytkowników i zainteresowanie opinii publicznej, Robert Osfield założył OpenSceneGraph Professional Services, który zapewnia wsparcie komercyjne, porady i szkolenia. Oznacza to pełną profesjonalizację projektu.
Pierwszą oficjalną stabilną wersją OpenSceneGraph była wersja 1.0, która została wydana w 2005 roku. Rozszerzona wersja 2.0 pojawiła się w 2007 roku i dodała wsparcie dla systemów wielordzeniowych i wielo-GPU, kilka ważnych NodeKitów oraz użycie zunifikowanego, wieloplatformowego systemu budowania CMake . Wprowadzono książki i instrukcje obsługi.
Od tego czasu projekt szybko się rozwija i staje się coraz bardziej popularny. W obecnej wersji stabilnej podpisanych jest ponad 530 współtwórców, a oficjalna lista mailingowa zawiera tysiące nazwisk.
W 2019 roku projekt został przeniesiony do fazy utrzymania, a główne prace rozwojowe zostały przeniesione do kolejnego projektu VulkanSceneGraph.
funkcje
Funkcje w wersji 1.0:
- Bogata w funkcje i szeroko stosowana implementacja wykresów scen
- Wsparcie dla funkcji zwiększających wydajność
- Zobacz Frustum , Drobne cechy i usuwanie okluzji
- Poziom detali
- Sortowanie stanu i powolna aktualizacja stanu state
- Szybkie ścieżki OpenGL i najnowsze ulepszenia
- Optymalizacja wielowątkowości i bazy danych
- Obsługa OpenGL, od 1.1 do 2.0, w tym najnowsze ulepszenia enhancement
- Ściśle powiązane wsparcie dla OpenGL Shading Language, opracowanego we współpracy z 3Dlabs
- Obsługa szerokiej gamy formatów obrazów 2D i baz danych 3D, z programami ładującymi 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 framebuffer , pbufferów i efektów framebuffer render-to-texture
- Obsługa wielowątkowych stronicowania baz danych, która może być używana w połączeniu ze wszystkimi bazami danych 3D i ładowarkami obrazów
- Generowanie baz danych na zewnątrz dla dużych obszarów geograficznych na całym świecie
- Obsługa introspekcji dla podstawowych bibliotek, która umożliwia zewnętrznym aplikacjom odpytywanie, odbieranie, ustawianie i edytowanie wszystkich klas w grafie sceny za pośrednictwem ogólnego interfejsu
- Wielowątkowa i konfigurowalna obsługa wielu procesorów / wielu maszyn GPU
Funkcje w wersji 2.8.3
- Obsługa systemu Mac OS X 10.6 (Snow Leopard)
- Obsługa ImageIO w systemie Mac OS X
- Eksport i konwersja formatu plików 3DS
- Zintegrowana technologia Autodesk FBX
- Zintegrowana obsługa FFmpeg do wyświetlania zawartości plików wideo w aplikacjach 3D
- Obsługa formatu pliku PLY
Funkcje w wersji 2.8.4:
- Wsparcie kompilacji VS2010
Funkcje w wersji 3.0.0:
- Wsparcie dla OpenGL ES 1.1 i OpenGL ES 2.0
- Obsługa OpenGL 3.x i 4.x, a także powiązanych rozszerzeń OpenGL
- Wsparcie dla Androida na tabletach i telefonach
- Wsparcie dla iOS na tabletach i telefonach (aplikacje dla użytkowników końcowych zostały już zaakceptowane w App Store )
- Wprowadzenie aplikacji Present3D do wciągających prezentacji 3D
- Nowe rozszerzalne serializatory zapewniające nowe natywne formaty binarne .osgb, .osgt ascii i plik xml .osgx
- Nowa uogólniona architektura serializowalnych metadanych
- Nowa biblioteka osgQt, która umożliwia łatwą 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 odczytywanie formatu authoringu i wymiany .fbx 3D
- Nowa wtyczka directshow do obsługi filmów w systemie Windows
- Nowa wtyczka POV do eksportowania sceny do formatu POV-Ray, która umożliwia użycie POV-Ray do fotorealistycznego śledzenia promieni
- Nowa wtyczka ply do odczytu plików ply
- Przeprojektowana wtyczka 3ds do odczytu i zapisu plików .3ds
- Poprawiona wtyczka dxf do odczytu i zapisu plików .dxf
- Wsparcie dla kompilacji Cocoa i 64-bitowego OSX
architektura
Oto przegląd architektury OpenSceneGraph: Architekturę biblioteki można podzielić na trzy główne części - podstawową bibliotekę OpenSceneGraph, osgViewer i pewną liczbę NodeKitów.
rdzeń
Podstawę biblioteki OpenSceneGraph można dalej podzielić na cztery główne moduły.
Osg
Jądro OpenSceneGraph udostępnia klasy i metody do budowy i manipulacji wykresem sceny . Zawiera klasy, które reprezentują różne typy węzłów , geometria sceny OpenGL stan abstrakcji, transformacje geometryczne i klas matematycznych 2D i 3D wektora i macierzy operacji . Uwzględniono również zaawansowane zarządzanie pamięcią .
Otwórz wątki
Projekt OpenSceneGraph zawiera bibliotekę wątków, Open threads, które reprezentuje lekki, wieloplatformowy wątek — model . Ma na celu zapewnienie minimalnego i kompletnego interfejsu wątków zorientowanego obiektowo (OO) dla programistów C++ . Jest luźno oparty na API wątków Java i standardach wątków POSIX.
Architektura z OpenThreads opiera się na „wymienne” modeli wątku, są zdefiniowane w udostępnionej biblioteki obiektów w czasie kompilacji . Należy zauważyć, że chociaż projekt wzorca fabrycznego mógł zostać użyty do osiągnięcia celu interfejsu ogólnego , wymagałoby to od programisty dostępu do każdego z 4 podstawowych typów (wątek, mutex, bariera i warunek) przydzielonych do kupa. Ze względu na koszt alokacji sterty bazowych konkretnych implementacji tych konstrukcji na niektórych platformach taka alokacja została uznana za niedopuszczalną w momencie, gdy ta biblioteka została pierwotnie napisana, a zatem wzorzec fabryki nie był używany.
Zamiast tego wybrano nieco absurdalną - ale skuteczną - technikę ukrywania niezbędnych danych / implementacji. Ta technika wykorzystuje prywatne wskaźniki void do hermetyzacji prywatnych danych obiektu. Wskaźniki void faktycznie wskazują na określone struktury danych, ale oferują jednolity interfejs dla dso.
Celem projektowym OpenThreads jest tworzenie zoptymalizowanych implementacji, które wykorzystują zoptymalizowane pod kątem platformy konstrukcje wieloprocesowe, takie jak: B. metody Sproc i wątki Windows używane w IRIX .
OsgUtil
osgUtil zawiera renderowanie - funkcjonalność backendu i narzędzia wokół skrzyżowania zajmują się grafem sceny, optymalizacją renderowania i transformacją sceny w strumieniu wywołań OpenGL. Zapewnia również środki do podstawowej interakcji ze sceną, takie jak B. dobór obiektów.
OsgDB
OpenSceneGraph zawiera również dużą kolekcję programów ładujących bazy danych i wiele manipulatorów dla formatów danych 2D / 3D . Obsługiwanych jest ponad 50 różnych formatów - najpopularniejsze formaty danych 3D, takie jak COLLADA (.dae), LightWave (.lwo), Wavefront (.obj), OpenFlight (.flt), 3D Studio Max (.3ds), DirectX ( .x) i wiele innych. OpenSceneGraph oferuje również własny natywny format ASCII -.osg. Istnieją eksportery w formacie .osg dla Blendera , Maya i 3D Studio MAX.
Obsługiwane formaty plików graficznych są .rgb, .gif , .jpg , .png , .tiff , .pic, .bmp , .dds , tga i QuickTime.
Moduł ten oferuje również abstrakcję urządzeń I/O.
OsgViewer
Biblioteka osgViewer oferuje szybki i łatwy sposób wizualizacji sceny graficznej. Jest to również abstrakcja niezależna od platformy dla różnych interfejsów systemu okien .
NodeKits
Dystrybucja projektu zawiera również dużą liczbę tzw. NodeKitów. Są to rozwiązania typowych problemów oraz powszechnie używane, bardziej zaawansowane komponenty aplikacji 3D i algorytmy graficzne. Najważniejsze z nich to
- osgAnimation - Wykorzystanie modeli szkieletowych, animacji i morfingu.
- osgFX - efekty specjalne i postprocessing.
- osgManipulator - Interaktywna manipulacja scenami 3D.
- osgParticle - Rozszerzone wykorzystanie systemu cząsteczek .
- osgQt - Integracja z Qt Toolkit oraz integracja elementów QtGUI w aplikacjach OSG.
- osgShadow - Framework do technik renderowania cieni.
- osgTerrain - Rozległe renderowanie terenu.
- osgText - Wysokiej jakości czcionki antyaliasingowe, obsługa czcionek TrueType i FreeType.
- osgVolume - Renderowanie objętości i manipulacja danymi wolumetrycznymi.
- osgWidget - Proste tworzenie GUI .
Indywidualne dowody
- ^ B Anne Ruas, Christopher Złoto: postępy w danych przestrzennych obchodzenia się: 13. Międzynarodowe Sympozjum na temat przetwarzania danych przestrzennych . Springer, 2008, ISBN 978-3-540-68566-1 , s. 370 ( google.com ).
- ↑ Martz, P.: Przewodnik szybkiego startu OpenSceneGraph. Louisville, Stany Zjednoczone, 2007.
- ↑ http://www.openscenegraph.org/projects/osg/wiki/Support/History
- ↑ Projekt scenografii wulkanu. 11 grudnia 2018, obejrzano 29 kwietnia 2021 .
- ^ Aktualności OSG. (Niedostępne już online.) 19 lutego 2010, zarchiwizowane od oryginału z 9 czerwca 2011 ; Źródło 20 lutego 2010 .
- ^ OpenSceneGraph dodaje nowe funkcje do aplikacji graficznych 3D. 5 kwietnia 2010 r. Zarchiwizowane od oryginału 15 kwietnia 2010 r. ; Źródło 10 kwietnia 2010 .
