Co to jest kamera OpenGL®?

„Kamera OpenGL®” to nazwa nadana wirtualnej pozycji widza w scenie Open Graphics Library® (OpenGL®). Określa go pozycja widza w scenie, a następnie lokalizacja lub kierunek, w którym patrzy widz. Pozycja kamery w scenie OpenGL® określi, jaka część sceny zostanie wyrenderowana na urządzeniu wyświetlającym i pod jakim kątem. Do opisu kamery OpenGL® używane są dwie macierze: macierz widoku modelu i macierz projekcji, które opisują odpowiednio położenie kamery i sposób renderowania obiektów, na które patrzy. Kamerę można poruszać w obrębie sceny, aby pokazać różne obszary lub zasymulować ruch, chociaż w wielu przypadkach łatwiej lub bardziej efektywnie jest przesuwać obiekty w scenie zamiast kamery.

Podczas nauki OpenGL® niektórzy programiści mają trudności ze zrozumieniem stosunkowo abstrakcyjnych właściwości kamery OpenGL®. Dzieje się tak głównie dlatego, że niektóre przekształcenia i inne funkcje nie działają w kamerze w taki sam sposób, jak w przypadku standardowego obiektu OpenGL®. Ponadto złożone operacje z kamerą OpenGL® zwykle wymagają biegłości w matematyce macierzowej i zrozumienia potoku transformacji OpenGL®. Istnieją pewne wygodne funkcje obsługi bibliotek OpenGL®, chociaż w bardziej interaktywnych aplikacjach może być trudno polegać wyłącznie na zestawach narzędzi pomocniczych.

Pozycja kamery OpenGL® jest definiowana za pomocą macierzy modelview. Kamerę można umieścić w dowolnym miejscu sceny i przesuwać lub obracać wzdłuż dowolnej osi. W wielu aplikacjach, zwłaszcza takich, które zawierają tylko kilka obiektów, łatwiej jest zastosować odwrotne przekształcenia do obiektów w scenie, aby stworzyć wrażenie ruchu. Zasadniczo cała scena porusza się w tym przypadku wokół statycznej kamery. W przypadku większych scen łatwiej jest poradzić sobie ze złożonością potoku i matematyki macierzy, aby swobodnie poruszać kamerą, pozostawiając scenę statyczną.

Atrybuty kamery OpenGL® są kontrolowane przez macierz projekcyjną. Używając analogii z kamerą, matryca projekcyjna może być traktowana jako typ używanego obiektywu. Macierz rzutowania jest często modyfikowana, aby tworzyć rzuty ortogonalne, które nie mają dostosowania perspektywy, oraz rzuty perspektywiczne, które uwzględniają odległość przy określaniu rozmiaru obiektów. Inne efekty, takie jak obiektyw typu rybie oko, ogniskowa lub różne proporcje, można ustawić za pomocą matrycy projekcyjnej.