3D引擎是否需要分析地图上的每个对象以查看它是否会渲染。我的理解是,线从中心投影的一个像素在视图计划,发动机会发现,与它相交的最接近的计划,但是那不是意味着每个像素的引擎需要在地图上分析所有对象,有没有办法限制分析的对象。3D引擎是否需要在渲染之前分析所有地图对象
感谢您的帮助。
3D引擎是否需要分析地图上的每个对象以查看它是否会渲染。我的理解是,线从中心投影的一个像素在视图计划,发动机会发现,与它相交的最接近的计划,但是那不是意味着每个像素的引擎需要在地图上分析所有对象,有没有办法限制分析的对象。3D引擎是否需要在渲染之前分析所有地图对象
感谢您的帮助。
这样的程序被称为frustum-culling algorithm。
你也可以在这里找到更多关于它的信息: -
当心,你寻求的是不一样的“occlusion culling”(另一个相关链接“Most efficient algorithm for mesh-level, optimal occlusion culling?)”,这是当一个对象被完全隐藏在另一个彼此优化。
注意,大多数游戏引擎的对象渲染(很多三角形的包 - 通过draw calls,粗略地讲),而不是通过跟踪每个像素(ray-tracing),你可能会明白。
在大多数实时应用中,光线追踪过于昂贵。
非常感谢你,但我认为你错过了我想要的东西,在做平截头体剔除之前,我需要一些东西来限制锥体剔除的对象以提高效率。比如当截锥体剔除限制物体分析到截锥体体积内使得遮挡剔除速度更快时,我不能分析每次我进行截锥体剔除时地图的所有对象。 – habibhassani
@habibhassani你的意思是一个算法/数据结构可以利用这个假设:前一帧和当前帧的结果(视图内的对象列表)没有那么不同?如果是这样,pdf链接可能会涵盖你想要的。 – javaLover
这就是加速度数据结构的任务,如网格,kd-trees,边界体积等级等。 –
@NicoSchertler谢谢,为什么不把它放在答案中!你得到我想要的东西 – habibhassani