Graphics 渲染大量网格(对象)

Graphics 渲染大量网格(对象),graphics,mesh,Graphics,Mesh,我有一个项目,我希望在16平方英里的景观上渲染大量网格。虽然网格并非都是唯一的,但它们有很多(可能只有1000个网格,但使用了数百万个) 我想知道是否有关于这个主题的论文或(好的)资源。我已经找到了大量关于地形/景观渲染的论文,但不知何故没有找到任何关于大量网格渲染的论文 编辑 所谓网格,我指的是景观中的物体、建筑物、树木等。所谓“网格”,你指的是景观中的物体,如建筑物、车辆、树木、灌木丛等吗?也就是说,你不是在谈论构成地面本身的网格吗 如果是这样,我认为您需要查看常规可见性检查,以便在进行地形

我有一个项目,我希望在16平方英里的景观上渲染大量网格。虽然网格并非都是唯一的,但它们有很多(可能只有1000个网格,但使用了数百万个)

我想知道是否有关于这个主题的论文或(好的)资源。我已经找到了大量关于地形/景观渲染的论文,但不知何故没有找到任何关于大量网格渲染的论文

编辑 所谓网格,我指的是景观中的物体、建筑物、树木等。所谓“网格”,你指的是景观中的物体,如建筑物、车辆、树木、灌木丛等吗?也就是说,你不是在谈论构成地面本身的网格吗

如果是这样,我认为您需要查看常规可见性检查,以便在进行地形渲染时,能够查询给定网格是可见的,还是隐藏在山丘/山谷墙后面

此外,您当然需要研究“实例化”,因此您只需为每个唯一网格保留一个数据集,并在确定该位置后,通过将其转换到其显示的每个位置来重新使用该数据集

如果你错过了,看论文也可能会很有启发性。

解决方案被称为。A会让你一眼就明白这个概念:)

基本上,八叉树将允许您快速消除在渲染过程中看不到的网格(因为它们在您后面或太远)


对于距离较远的网格,可以使用降低的分辨率预先计算类似的网格,以便仍然可以具有地平线并将其附着到树的节点。如果树的某个部分有一定的距离,您只需使用简化的网格,而不是具有高细节的网格。

我不确定这是否是您的情况,但是冒名顶替者呢?就我所记得的,人们可以使用3D纹理或类似的东西来伪造大量的几何数据。这可能就是你的情况。

它是用于渲染森林和类似的东西。

< P>有大量重要的领域需要考虑的是有大量对象的大场景的高效绘制。一个是通过仅绘制从当前摄影机角度可见的内容来最小化冗余工作,另一个是最大限度地提高渲染可见内容的效率

有两种主要方法可以最小化冗余渲染工作。首先,要避免绘制超出摄影机视野的任何对象。可以使用各种数据结构来加速可见性剔除:八叉树、四叉树、球面树、bsp树(通常更适合于不太开放的环境而不是景观)等。某种层次场景安排也有助于加速此类剔除。同样的数据结构也可以用于跳过屏幕上低于特定大小阈值的对象的渲染

其次,要避免渲染被较近对象遮挡的对象。遮挡剔除有许多不同的技术,一些通过遮挡查询使用GPU加速,另一些完全在CPU上操作。遮挡剔除的值在某种程度上取决于典型的摄影机角度、地形粗糙度和地形上对象的大小。一个相对平坦、开阔的地形,只有一些小物体,或者一个摄像头主要向下看地面,而不是向外看地平线,这将减少遮挡剔除的机会。场景的某些层次组织将再次有助于遮挡剔除,就好像父对象被遮挡一样,您可以跳过对其子对象的测试

最小化需要渲染的对象集后,可以将注意力转向最大化可见对象的渲染效率。细节级别技术在这里很有用(较低的多边形网格用于远距离对象)。另一个答案中提到的冒名顶替技术是另一种有用的方法,用简单的广告牌代替复杂的几何图形。实例化几何体的各种方法也值得追求——现代图形硬件只需一次调用图形API,即可渲染具有不同位置和其他变体的同一几何体的多个副本。最后,这里应用了所有有效使用图形硬件的标准技术:排序以获得最大的渲染效率(在某种程度上取决于硬件),最小化每帧的冗余工作,高效地打包几何体,优化顶点和像素着色器,等等

提到的每个领域本身都相当复杂,有许多论文、书籍和文章详细阐述了这些细节。希望这里提到的技术足以为您指明谷歌研究的正确方向