请在 3D 图形编程中对 Frustum Culling 进行一个很好的解释。我需要学习 3D(到目前为止从未进行过认真的图形编程),而且我很难理解手册中使用的一些术语以及我正在使用的书籍。
我目前正在尝试通读 Java 3D API 规范,因为这些书似乎和这本书一样。
请在 3D 图形编程中对 Frustum Culling 进行一个很好的解释。我需要学习 3D(到目前为止从未进行过认真的图形编程),而且我很难理解手册中使用的一些术语以及我正在使用的书籍。
我目前正在尝试通读 Java 3D API 规范,因为这些书似乎和这本书一样。
“平截头体”是 3D 场景的区域,在该区域之外不会绘制任何内容。它是一个截断的金字塔,由 4 侧屏幕的可见性限制以及也由相机矩阵定义的“近”和“远”可见性限制(通常垂直于视图方向)限制。
使用 3D API 绘制的图形基元被裁剪到视锥体:只有在视锥体内的基元部分会出现。完全在截锥体之外的基元根本不会出现。
但是,即使您的图元没有出现在屏幕上,尝试绘制它也不是免费的:提交给硬件的每个图元都需要时间。而且,由于完全在截锥体之外的原语根本不出现,这是浪费时间。
因此,视锥体剔除是对基元或(更经济有效)整个对象的初步排序,以确定它们是否完全在视锥体之外。当它确定一个对象或图元在截锥体之外时,截锥体剔除通过根本不尝试绘制它来节省时间。