Questa risposta è molto lontana dal fatto, ma dal momento che l'ho trovata su Google forse questo aiuterà ancora qualcuno. Voglio solo chiarire cosa dicevano JasonD e Notabene: è molto più facile fare calcoli di ritaglio (capire cosa dovresti vedere e cosa non dovresti vedere a causa di come stai guardando, quanto è lontano, ect .). Invece di verificare se le cose si intersecano con i piani sui bordi del tuo frustum di vista, devi semplicemente confrontare x, y, z di tutto con xMax, xMin, yMax, ect. , poiché hai semplicemente un cubo. È un po 'più complicato se vuoi avere solo una parte di qualcosa che mostra, ma la matematica è ancora meglio con un cubo unità che con un frustum.
Un paio di cose che ho trovato fuorvianti in altre risposte:
-Non stai tagliando i lati fuori dal frustum della vista, lo stai deformando in un cubo usando trasformazioni di matrice omogenee.
-Non stiamo convertendo in uno schermo 2D con questo passaggio. Questo passaggio non è necessario per farlo. Teoricamente potremmo fare tutto il nostro lavoro senza convertire prima il frustum in un cubo, il che sarebbe più intuitivo ma più difficile per la matematica - ma la grafica consiste nel fare calcoli molto velocemente poiché ci sono MOLTI calcoli al secondo per il gioco medio / qualunque cosa.
Maggiori dettagli: non è necessariamente un cubo di unità in cui ci stiamo convertendo, deve solo essere una scatola rettangolare per far funzionare i nostri calcoli max-min. In effetti in classe abbiamo usato un riquadro in cui la telecamera è rivolta verso il basso sull'asse z, z va da 0 a 1, x va da -1 a 1 e y va da -1 a 1. In generale in matematica 1, 0, e -1 sono buoni numeri per facilitare i calcoli, presumo sia per questo che non passiamo da -100 a 100 o qualcosa del genere.
TLDR: semplifica il ritaglio.
Modifica: bobobobo ha l'essenza di esso. Tutto è triangoli, in generale: D.
Fonte: partecipazione a un corso di grafica universitaria