Przekształcanie widoku (Direct3D 9)
W tej sekcji przedstawiono podstawowe pojęcia związane z przekształcaniem widoku i przedstawiono szczegółowe informacje na temat konfigurowania macierzy przekształcania widoku w aplikacji Direct3D.
Widok przekształca widza w przestrzeni światowej, przekształcając wierzchołki w przestrzeń kamery. W przestrzeni kamery, aparat, lub widz, jest na początku, patrząc w pozytywnym kierunku z. Pamiętaj, że direct3D używa leworęcznego układu współrzędnych, więc z jest pozytywny w scenie. Macierz widoków przenosi obiekty na całym świecie na całym świecie — początek przestrzeni kamery — i orientację.
Istnieje wiele sposobów tworzenia macierzy widoków. We wszystkich przypadkach aparat ma pewną logiczną pozycję i orientację w przestrzeni światowej, która jest używana jako punkt wyjścia do utworzenia macierzy widoków, która zostanie zastosowana do modeli w scenie. Macierz widoków tłumaczy i obraca obiekty, aby umieścić je w przestrzeni kamery, gdzie kamera znajduje się na początku. Jednym ze sposobów utworzenia macierzy widoków jest połączenie macierzy tłumaczenia z macierzami obrotu dla każdej osi. W tym podejściu stosuje się następujące ogólne równanie macierzy.
W tej formule V to tworzona macierz widoków, T jest macierzą translacji, która zmienia położenie obiektów na świecie, a Rₓ przez Rz są macierzami obrotowymi, które obracają obiekty wzdłuż osi x, y i z. Macierze translacji i rotacji są oparte na położeniu logicznym i orientacji aparatu w przestrzeni światowej. Jeśli zatem położenie logiczne aparatu na świecie wynosi <10 20 10 100>, celem macierzy tłumaczenia jest przeniesienie obiektów -10 jednostek wzdłuż osi x, -20 jednostek wzdłuż osi y i -100 jednostek wzdłuż osi z. Macierze obrotu w formule są oparte na orientacji aparatu, pod względem tego, ile osi przestrzeni kamery są obracane poza wyrównaniem do przestrzeni światowej. Jeśli na przykład wspomniany wcześniej aparat wskazuje prosto w dół, jego oś z wynosi 90 stopni (pi/2 radianów) z osią z przestrzeni światowej, jak pokazano na poniższej ilustracji.
przestrzeni światowej
Macierze obrotu stosują rotacje równe, ale przeciwległe wielkości modelom w scenie. Macierz widoków dla tego aparatu zawiera obrót -90 stopni wokół osi x. Macierz obrotu jest połączona z macierzą tłumaczenia w celu utworzenia macierzy widoków, która dostosowuje położenie i orientację obiektów na scenie, tak aby ich górna część stoi przed aparatem, dając wygląd, że aparat znajduje się nad modelem.
Konfigurowanie macierzy widoków
Funkcje pomocnika D3DXMatrixLookAtLH i D3DXMatrixLookAtRH tworzą macierz widoków na podstawie lokalizacji aparatu i punktu widzenia.
Poniższy przykład tworzy macierz widoków dla współrzędnych leworęcznych.
D3DXMATRIX out;
D3DXVECTOR3 eye(2,3,3);
D3DXVECTOR3 at(0,0,0);
D3DXVECTOR3 up(0,1,0);
D3DXMatrixLookAtLH(&out, &eye, &at, &up);
Funkcja Direct3D używa macierzy świata i wyświetlania w celu skonfigurowania kilku wewnętrznych struktur danych. Za każdym razem, gdy ustawiasz nowy świat lub macierz widoków, system ponownie oblicza skojarzone struktury wewnętrzne. Ustawienie tych macierzy często jest czasochłonne w obliczeniach. Możesz zminimalizować liczbę wymaganych obliczeń, łącząc świat i wyświetlając macierze w macierzy widoku świata ustawionej jako macierz świata, a następnie ustawiając macierz widoków na tożsamość. Zachowaj buforowane kopie poszczególnych środowisk i wyświetl macierze, które można modyfikować, łączyć i resetować macierz świata zgodnie z potrzebami. Aby uzyskać jasność, próbki rzadko stosują tę optymalizację.
Tematy pokrewne