Biblioteka wizualizacji
Pierwsze wydanie | 7 maja 2007 |
---|---|
Wersja stabilna | 1.0.0 / 16 maja 2012
|
Napisane w | C++ |
System operacyjny | Międzyplatformowe |
Typ | Grafika 3D |
Licencja | Uproszczona licencja BSD |
Strona internetowa |
Visualization Library ( VL ) to oprogramowanie pośrednie C++ typu open source dla aplikacji graficznych 2D/3D oparte na OpenGL 4, przeznaczone do tworzenia przenośnych aplikacji dla systemów operacyjnych Microsoft Windows , Linux i Mac OS X.
Cele projektowe
Biblioteka wizualizacji została zaprojektowana w celu:
- Zaimplementuj intuicyjne, cienkie i przenośne opakowanie C++ wokół OpenGL 4.
- Bądź w pełni kompatybilny ze starszymi wersjami OpenGL (1.x, 2.x i 3.x).
- Dostarczaj funkcje i wydajność nowoczesnych procesorów graficznych również do aplikacji niezwiązanych z grami, takich jak rzeczywistość wirtualna, wizualizacja naukowa i medyczna, symulatory, szkolenia i tak dalej.
- Zapewnij ogólną i szczegółową strukturę, której można użyć do złożenia niestandardowych technik renderowania.
- Unikaj ograniczeń architektonicznych paradygmatu uber-scene-graph.
- Daj programiście jak najwięcej kontroli, dbając jednocześnie o brudne szczegóły.
Projekt wewnętrzny
Projekt biblioteki wizualizacji opiera się na specjalizacji i separacji algorytmów i struktur danych, w przeciwieństwie do wielu innych frameworków 3D należących do tak zwanej rodziny „uber scene graph ”, czyli tych silników 3D, które przechowują wszystkie informacje renderowania w jednej strukturze hierarchicznej. W ten sposób biblioteka wizualizacji wykorzystuje różne struktury danych (prawdopodobnie hierarchiczne) do zarządzania poszczególnymi domenami potoku renderowania.
Na przykład drzewo transformacji jest przechowywane w oddzielnej strukturze danych grafu drzewiastego, a obiekty będące częścią sceny („Aktorzy” w żargonie Biblioteki Wizualizacji) mogą swobodnie odnosić się do węzła drzewa transformacji.
Aktorzy są przetrzymywani we własnej strukturze danych partycjonowania sceny, z której ich widoczność jest testowana pod kątem widoku frustum iz którego ostatecznie są wyodrębniani w czasie renderowania, aby znaleźć się w kolejce renderowania. Pozwala to VL być niezależnym i korzystać z praktycznie każdego rodzaju techniki zarządzania scenami, takiej jak PVS, portal/sector, KdTree , quadtrees , octrees itp.
Shadery są również koncepcją, która jest niezależna od reszty logiki i nie wymaga żadnej hierarchicznej struktury danych do użycia przez Aktora. Jednak VL zapewnia klasę ShaderNode, jako usługę wysokiego poziomu, która pozwala użytkownikowi aktualizować Shadery i zarządzać nimi w sposób hierarchiczny przy użyciu reguł dziedziczenia podobnych do tych powszechnie dostępnych we frameworkach opartych na uber-scene-graph. Potok renderowania opiera się na podobnym podejściu modułowym, dzięki czemu wysoce spersonalizowane techniki renderowania mogą być wdrażane poprzez składanie i ponowne wykorzystywanie komponentów VL.
Główne cechy
- Obsługa OpenGL: 1.x, 2.x, 3.x, 4.x.
- Obsługiwane systemy operacyjne: Windows XP, Vista, 7, Mac OS, Linux
- Wiązania GUI: Win32, MFC, Qt4, wxWidgets, SDL, GLUT.
- Formaty plików 3D: 3DS, OBJ, PLY (binarne i ascii), STL (binarne i ascii), AC3D, MD2. Można podłączyć więcej.
- Obsługiwane formaty plików graficznych: JPG, PNG, TGA, TIFF, BMP, DDS, DICOM. Można podłączyć więcej.
- Wizualizacja wolumenu: renderowanie wolumenu raycast (funkcje przenoszenia, izopowierzchnia itp.), wycinki wyrównane do ekranu, wydajna implementacja marszowych kostek.
- Teksturowanie: tekstury 1D/2D/3D, cubemapy, wieloteksturowanie, tablice tekstur, prostokąty tekstur, renderowanie do tekstury, generowanie współrzędnych tekstur, łączenie tekstur, generowanie mipmappingu i mipmap, filtrowanie anizotropowe, skompresowane tekstury, tekstury głębi, tekstury całkowitoliczbowe, inne znormalizowane tekstury, bufory tekstur, tekstury multisample.
- Obsługa OpenGL Shading Language od 1.x do 4.x, w tym shaderów geometrii i teselacji.
- Automatyczne zarządzanie przezroczystością.
- Automatyczne sortowanie stanu renderowania i minimalizacja konfiguracji.
- Automatyczne zarządzanie Vertex Buffer Objects.
- Rozbudowana obsługa obiektów bufora ramki.
- Dostarczone menedżery scen: ogólne hierarchiczne drzewo woluminów, KdTree, oparty na portalu wykres scen.
- Wysokiej jakości renderowanie tekstu Unicode i funkcje i klasy manipulacji tekstem.
- Oparta na GLSL zaawansowana biblioteka wektorów/macierzy C++.
- Funkcje optymalizacji geometrii, redukcja/dziesiątkowanie trójkątów, usuwanie podwójnych wierzchołków itp.
- Wizualizacja molekularna.
- Generowanie ekstruzji.
- Interpolacja liniowa i Catmull-Rom po ścieżce.
- Dwusześcienne powierzchnie Béziera.
- Wzmocnienie krawędzi i sylwetki.
- Wirtualny system plików: abstrakcyjny system plików, który w przejrzysty sposób umożliwia dostęp do plików dyskowych, plików pamięci, plików .zip i .gz.
- Rozszerzalny system zasobów do obsługi nowych typów zasobów i formatów plików.
- Dużo dokumentacji i wiele przykładów.
Status rozwoju
Pierwsze publiczne wydanie Biblioteki wizualizacji miało miejsce 7 maja 2007 r.
Biblioteka wizualizacji jest obecnie w drugiej stabilnej wersji, VL 2011.05.1140, która następuje po pierwszej, VL 2009.07.640. Chociaż projekt pozostał zasadniczo taki sam, najnowsza stabilna wersja różni się od swojej poprzedniczki głównie pod względem: obsługi OpenGL 3 i 4, a w szczególności shaderów teselacji, zmiennych uniformów o podwójnej precyzji, nowych formatów tekstur, takich jak wielopróbkowe tekstury i obiekty tekstur, rozbudowanej obsługi obiektów bufora ramki i lepsze dostrojenie dla aplikacji intensywnie korzystających z GLSL , wśród wielu innych ulepszeń.