คำตอบนี้เป็นเวลานานหลังจากความจริง แต่เนื่องจากฉันพบนี้ใน google อาจจะยังคงช่วยใครบางคน ฉันแค่ต้องการชี้แจงว่า JasonD และ Notabene กำลังพูดอะไร: มันง่ายกว่ามากที่จะทำการคำนวณการตัด (คิดออกว่าคุณควรเห็นอะไรและคุณไม่ควรเห็นอะไรเพราะวิธีที่คุณมองอยู่ไกลแค่ไหน ect) .) แทนที่จะตรวจสอบว่าสิ่งต่าง ๆ ตัดกันระนาบบนขอบของมุมมอง frustum ของคุณคุณเพียงเปรียบเทียบ x, y, z ของทุกสิ่งกับ xMax, xMin, yMax, ect เนื่องจากคุณมีลูกบาศก์ มันซับซ้อนกว่านี้เล็กน้อยถ้าคุณต้องการมีเพียงบางส่วนที่จะแสดง แต่คณิตศาสตร์ก็ยังดีกว่าด้วยคิวบ์หน่วยมากกว่ากับ frustum
สองสิ่งที่ฉันพบว่าทำให้เข้าใจผิดในคำตอบอื่น ๆ :
- คุณไม่ได้ตัดด้านข้างออกจากมุมมอง frustum คุณกำลังแปรปรวนมันเป็นลูกบาศก์โดยใช้การแปลงเมทริกซ์ที่เป็นเนื้อเดียวกัน
- เราไม่ได้แปลงเป็นหน้าจอ 2D ด้วยขั้นตอนนี้ ขั้นตอนนี้ไม่จำเป็นต้องทำ ในทางทฤษฎีเราสามารถทำงานทั้งหมดของเราได้โดยไม่ต้องแปลง frustum เป็น cube ก่อนซึ่งจะเป็นสัญชาตญาณที่ใช้งานง่ายขึ้น แต่คณิตศาสตร์ยากขึ้น แต่กราฟิคนั้นเกี่ยวกับการคำนวณที่รวดเร็วมากเนื่องจากมีการคำนวณจำนวนมากต่อวินาทีสำหรับเกมเฉลี่ย / อะไรก็ตาม
รายละเอียดเพิ่มเติม: ไม่จำเป็นต้องเป็นหน่วยลูกบาศก์ที่เราแปลงไปมันแค่ต้องเป็นกล่องสี่เหลี่ยมสำหรับการคำนวณค่าสูงสุดขั้นต่ำของเราในการคำนวณ ในความเป็นจริงในชั้นเรียนเราใช้กล่องที่กล้องหันแกน z ลง z ไปจาก 0 ถึง 1, x เปลี่ยนจาก -1 เป็น 1 และ y เพิ่มจาก -1 เป็น 1 โดยทั่วไปในคณิตศาสตร์ 1, 0, และ -1 เป็นตัวเลขที่ดีสำหรับการคำนวณง่ายขึ้นฉันคิดว่านั่นเป็นสาเหตุที่เราไม่ไปจาก -100 ถึง 100 หรืออะไรทำนองนั้น
TLDR: มันทำให้การตัดง่ายขึ้น
แก้ไข: bobobobo มีส่วนสำคัญของมัน โดยทั่วไปแล้วทุกอย่างเป็นรูปสามเหลี่ยม: D
ที่มา: การเรียนกราฟิกมหาวิทยาลัย