Informacje o transformacji współrzędnych modeli 3D
substancja
Po pierwsze
Często można zobaczyć obrazy 3D na ekranach telewizorów i wyświetlaczach w grach, ale jak wyświetlić obiekty istniejące w przestrzeni 3D, takie jak postacie i budynki poruszające się po ekranie, na ekranie 2D?
W grach 2D jako wartości współrzędnych są tylko dwuwymiarowe elementy "X i Y", a wyświetlacz jest również 2D, więc jeśli narysujesz obiekt, określając położenie współrzędnych X i Y, intuicyjnie zrozumiesz, w jaki sposób zostanie on narysowany w jakiej pozycji.
Jednak w 3D nie jest to takie proste. Jak sama nazwa wskazuje, 3D jest "3-wymiarowy" i ma trzy informacje o współrzędnych: "X, Y i Z". Ponieważ współrzędne są inne niż na wyświetlaczu, który jest 2D, nie jest możliwe narysowanie obiektu w takiej postaci, w jakiej jest.
Następnie, co należy zrobić, to "przekształcić informacje trójwymiarowe w informacje dwuwymiarowe". Jest to powszechnie określane jako "transformacja współrzędnych". Należy pamiętać, że ta transformacja współrzędnych jest niezbędna w programowaniu 3D.
Istnieje kilka typów przekształceń współrzędnych do konwersji 3D na 2D, ale istnieją trzy główne typy przekształceń współrzędnych, które obsługują programiści: "transformacja świata", "transformacja widoku" i "transformacja projekcji". Tutaj wyjaśnimy wszystko, co jest związane z transformacją współrzędnych.
Lewoskrętne i prawoskrętne układy współrzędnych
W 3D istnieją dwa układy współrzędnych, "układ współrzędnych lewoskrętny" i "układ współrzędnych prawoskrętnych", które mają różne orientacje dla każdej współrzędnej, jak pokazano na poniższym rysunku.
Direct3D używał przede wszystkim lewoskrętnego układu współrzędnych, ale istnieją również funkcje do obliczeń dla prawoskrętnych układów współrzędnych. XNA udostępnia jednak metody obliczeń tylko dla prawoskrętnych układów współrzędnych. Wydaje się, że jest to zgodne z faktem, że inne aplikacje często używają prawoskrętnych układów współrzędnych.
Wszystkie wskazówki XNA na tej stronie używają prawoskrętnego układu współrzędnych.
Lokalny układ współrzędnych (układ współrzędnych modelu)
Każdy model ma układ współrzędnych wyśrodkowany na początku układu współrzędnych. Myślę, że tworząc model za pomocą oprogramowania do modelowania, łatwiej jest go zrozumieć, jeśli wyobrazisz sobie tworzenie go z początkiem układu współrzędnych jako centrum.
Globalny układ współrzędnych
Globalny układ współrzędnych pozwala na umieszczenie modelu w dowolnym miejscu. Jeśli nie zrobisz nic w tej transformacji świata, model zostanie umieszczony w punkcie początkowym w taki sam sposób, jak współrzędne lokalne. Umieszczanie polega nie tylko na przesuwaniu się od punktu początkowego, ale także na obracaniu i skalowaniu.
Wyświetlanie układu współrzędnych
Po umieszczeniu modelu we współrzędnych świata potrzebne są informacje o tym, gdzie patrzysz i gdzie patrzysz w przestrzeni 3D. To jest to, co nazywamy "transformacjami widoku". Przekształcenia widoków są zazwyczaj często przedstawiane jako kamery.
Parametry wymagane do tej konwersji to "pozycja kamery", "punkt zainteresowania kamery" i "kierunek kamery w górę". Orientacja kamery jest określana przez te trzy parametry. Poniższy rysunek przedstawia kamerę z perspektywy innej firmy.
Poniższy rysunek jest faktycznie widziany z punktu widzenia kamery w układzie pokazanym na powyższym rysunku (w tym momencie nie przekonwertowaliśmy jeszcze współrzędnych na ekran, więc jest to tylko obraz).
W poprzednim wyjaśnieniu wydaje się, że kamera jest ustawiona, a współrzędne są przekształcane, ale w rzeczywistych obliczeniach współrzędne świata są konwertowane zgodnie z położeniem i orientacją kamery. W związku z tym punktem początkowym jest położenie kamery, jak pokazano na poniższym rysunku.
Rzutowy układ współrzędnych
Po podjęciu decyzji, z której pozycji chcesz oglądać przestrzeń 3D, następnym krokiem jest przetworzenie wyświetlania "małych obiektów, które są daleko" i "dużych obiektów, które są w pobliżu". Nazywa się to transformacją projekcyjną. Istnieją dwie metody transformacji projekcji, "projekcja perspektywiczna" i "projekcja ortogonalna", ale powszechnie używany obraz "rzutowania perspektywicznego" jest następujący.
Projekcja perspektywiczna wykorzystuje następujące parametry: Kąt widzenia, Współczynnik proporcji, Pozycja klipu do przodu i Pozycja klipu z tyłu. Obszar oznaczony "frustum" na powyższym rysunku w końcu pojawi się na ekranie.
"Kąt widzenia" określa zakres widzenia widoczny z kamery. Zmniejszenie kąta powoduje powiększenie, a zwiększenie go pomniejszenie. Kąt widzenia będzie pionową wartością ścięgien.
Współczynnik proporcji służy do określania poziomego kąta widzenia, podczas gdy kąt widzenia jest kątem pionowym. Kąt poziomy jest zwykle określany przez "kąt widzenia × proporcje", a współczynnik proporcji to w zasadzie wartość "szerokości ÷ wysokości" ekranu, który próbujesz wyświetlić. Jeśli zmienisz tę wartość, wyświetlany obiekt 3D będzie wyglądał na rozciągnięty w poziomie lub w pionie.
Pozycje klipu do przodu i Pozycja klipu tylnego są określane w celu określenia, czy obiekt jest wyświetlany w zakresie przednim, czy tylnym. Ze względu na charakter komputera nie ma możliwości wyświetlania w nieskończoność, dlatego ustalimy limit. Wartość ta wpływa również na dokładność bufora Z, dlatego nie zaleca się umieszczania go w obszarze rysunku poza zakresem, który nie musi być wyświetlany.
Obiekt przekształcony w perspektywie jest przekształcany w przestrzeń podobną do tej poniżej. Obiekty, które znajdowały się blisko kamery, są powiększane, a obiekty, które znajdowały się daleko, są zmniejszane.
Jest to zilustrowane na łatwym do zrozumienia diagramie poniżej.
Jeśli faktycznie spojrzysz na to z punktu widzenia kamery, wygląda to jak poniżej.
Inną metodą transformacji rzutowej jest rzut prostokątny, który rzutuje widoczny obszar, taki jak ten poniżej. Ponieważ szerokość i wysokość są stałe niezależnie od głębokości, rozmiar obiektu nie zmienia się wraz z głębokością.
Układ współrzędnych ekranu
Po transformacji rzutowania jest on konwertowany na współrzędne rzeczywistego ekranu. Mimo że jest to ekran, położenie i zakres wyświetlacza zmieniają się w zależności od ustawień rzutni ustawionych na urządzeniu. Jednak w przypadku gier, współrzędne klienta okna to często rzutnia w takiej postaci, w jakiej jest, więc nie sądzę, że musisz się zbytnio martwić.
Współrzędne ekranu (0, 0) są konwertowane ze współrzędnych rzutowania (-1, 1, z). Podobnie współrzędne ekranu (szerokość, wysokość) są konwertowane ze współrzędnych rzutowania (1, -1, z).