Diese Antwort ist lange nach der Tatsache, aber da ich dies auf Google gefunden habe, wird dies vielleicht noch jemandem helfen. Ich möchte nur klarstellen, was JasonD und Notabene gesagt haben: Es ist viel einfacher, Beschneidungsberechnungen durchzuführen (finde heraus, was du sehen solltest und was nicht, weil du so aussiehst, wie weit es ist, ect .). Anstatt zu prüfen, ob sich die Ebenen an den Rändern Ihres Betrachtungskegelstumpfs überschneiden, vergleichen Sie einfach die x, y, z von allem mit xMax, xMin, yMax, ect. , da hast du einfach einen würfel. Es ist etwas komplizierter, wenn Sie nur einen Teil von etwas zeigen möchten, aber die Mathematik ist mit einem Einheitswürfel immer noch besser als mit einem Kegelstumpf.
Ein paar Dinge, die ich in anderen Antworten irreführend fand:
- Sie scheren nicht die Seiten des Betrachtungsstumpfs ab, sondern verziehen ihn mit homogenen Matrixtransformationen in einen Würfel.
-Wir konvertieren mit diesem Schritt nicht in einen 2D-Bildschirm. Dieser Schritt ist dazu nicht erforderlich. Theoretisch könnten wir all unsere Arbeit erledigen, ohne den Kegelstumpf zuerst in einen Würfel umzuwandeln. Das wäre intuitiver, aber schwieriger. Bei Grafiken geht es jedoch darum, Berechnungen sehr schnell durchzuführen, da es für ein durchschnittliches Spiel / was auch immer eine Menge Berechnungen pro Sekunde gibt.
Weitere Details: Es ist nicht unbedingt ein Einheitenwürfel, in den wir konvertieren, es muss nur ein rechteckiges Feld sein, damit unsere Max-Min-Berechnungen funktionieren. Tatsächlich haben wir in der Klasse ein Kästchen verwendet, in dem die Kamera auf die z-Achse zeigt, z von 0 nach 1 geht, x von -1 nach 1 geht und y von -1 nach 1. Im Allgemeinen in Mathe 1, 0, und -1 sind gute Zahlen, um Berechnungen zu vereinfachen. Ich nehme daher an, dass wir nicht von -100 auf 100 oder so gehen.
TLDR: Dies erleichtert das Zuschneiden.
Edit: Bobobobo hat das Wesentliche. Alles ist ein Dreieck, im Allgemeinen: D.
Quelle: Teilnahme an einem Grafikkurs der Universität