Ta odpowiedź jest długo po fakcie, ale ponieważ znalazłem to w google, może to jeszcze komuś pomoże. Chcę tylko wyjaśnić, co mówili JasonD i Notabene: O wiele łatwiej jest wykonywać obliczenia obcinania (dowiedz się, co powinieneś zobaczyć, a czego nie powinieneś widzieć z powodu tego, w jaki sposób patrzysz, jak daleko jest, itp. .). Zamiast sprawdzać, czy rzeczy przecinają płaszczyzny na obrzeżach fragmentu widoku, po prostu porównujesz x, y, z wszystkiego do xMax, xMin, yMax itp. , ponieważ masz po prostu sześcian. Jest to trochę bardziej skomplikowane, jeśli chcesz mieć tylko część czegoś do pokazania, ale matematyka jest nadal lepsza z kostką jednostkową niż z frustum.
Kilka rzeczy, które wprowadziłem w błąd w innych odpowiedziach:
-Nie ścinasz boków od frustum widoku, w pewnym sensie wypaczasz go w sześcian przy użyciu homogenicznych przekształceń macierzy.
- W tym kroku nie konwertujemy do ekranu 2D. Ten krok nie jest konieczny do tego. Teoretycznie moglibyśmy wykonać całą naszą pracę bez konwersji frustum na kostkę, co byłoby bardziej intuicyjne, ale trudniejsze matematyczne - ale grafika polega na wykonywaniu obliczeń naprawdę szybko, ponieważ w przypadku przeciętnej gry / czegokolwiek jest dużo obliczeń na sekundę.
Więcej szczegółów: Konwertujemy niekoniecznie sześcian jednostkowy, po prostu musi to być prostokątne pudełko, aby zadziałały nasze obliczenia maks. Min. W rzeczywistości w klasie użyliśmy ramki, w której kamera jest skierowana w dół względem osi Z, z wynosi od 0 do 1, x zmienia się od -1 do 1, a y zmienia się od -1 do 1. Ogólnie w matematyce 1, 0, a -1 to dobre liczby ułatwiające obliczenia, zakładam, że dlatego nie przechodzimy od -100 do 100 czy coś takiego.
TLDR: Ułatwia przycinanie.
Edycja: sedno ma bobobobo. Ogólnie wszystko jest trójkątami: D.
Źródło: Biorąc udział w grafice uniwersyteckiej