Ця відповідь буде довго після факту, але оскільки я знайшов це в Google, можливо, це все-таки допоможе комусь. Я просто хочу уточнити, що говорили JasonD і Notabene: Набагато простіше робити обрізні обчислення (з'ясовуйте, що ви повинні бачити, а що ви не повинні бачити, через який шлях ви дивитесь, наскільки це далеко, тощо. .). Замість того, щоб перевіряти, чи все перетинає площини на кордонах вашої точки зору, ви просто порівнюєте x, y, z усього з xMax, xMin, yMax, ect. , оскільки у вас просто куб. Це трохи складніше, якщо ви хочете мати лише щось із показаних, але математика все-таки краща з одиничним кубом, ніж з фрустумом.
Кілька речей, які я знайшов оманливими в інших відповідях:
-Ви не стрижете сторони огляду фрустуму, ви перетворюєте його на куб, використовуючи однорідні перетворення матриці.
-Ми не перетворюємося на 2D-екран з цим кроком. Цей крок не потрібен для цього. Теоретично ми могли б виконати всю свою роботу, не перетворивши спочатку фрукт на куб, що було б більш інтуїтивно, але важче математику - але графіка - це все, щоб робити обчислення дуже швидко, оскільки є багато обчислень за секунду для середньої гри / що завгодно.
Більш детально: це не обов'язково одиничний куб, який ми перетворюємо, він просто повинен бути прямокутним коробкою, щоб ми могли розробити макс-хв розрахунки. Насправді в класі ми використовували вікно, де камера спрямована вниз по осі z, z йде від 0 до 1, x йде від -1 до 1, а y - від -1 до 1. Загалом у математиці 1, 0, і -1 - хороші цифри для спрощення обчислень, я вважаю, що тому ми не переходимо від -100 до 100 або щось подібне.
TLDR: Це робить відсікання простішим.
Редагувати: bobobobo має суть цього. Все - це трикутники, загалом: D.
Джерело: Приймаючи університетський клас графіки