Biblioteka wizualizacji

Biblioteka wizualizacji
Pierwsze wydanie 7 maja 2007 ; 15 lat temu ( 07.05.2007 )
Wersja stabilna
1.0.0 / 16 maja 2012 ; 10 lat temu ( 2012-05-16 )
Napisane w C++
System operacyjny Międzyplatformowe
Typ Grafika 3D
Licencja Uproszczona licencja BSD
Strona internetowa biblioteka wizualizacji .org

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:

  1. Zaimplementuj intuicyjne, cienkie i przenośne opakowanie C++ wokół OpenGL 4.
  2. Bądź w pełni kompatybilny ze starszymi wersjami OpenGL (1.x, 2.x i 3.x).
  3. 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.
  4. Zapewnij ogólną i szczegółową strukturę, której można użyć do złożenia niestandardowych technik renderowania.
  5. Unikaj ograniczeń architektonicznych paradygmatu uber-scene-graph.
  6. 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ń.

Zobacz też

Linki zewnętrzne