技术背后的基本前提是什么,例如在 Oblivion 中发现的(以及其他游戏,我敢肯定;还没有玩到足够知道),当您从远处观看时,远处的物体会模糊地显示出来?例如,一座大塔在一英里外,你会看到它的模糊矩形从地平线上伸出来……显然,一个巨大的 3D 场景无法全部渲染,我知道在高度图的情况下,只有近似算法用于降低远离相机的高度图质量,但对于特定对象,显示它们的最佳方式是什么?
我在想可能是一种预渲染技术,您可以选择景观周围的特定位置,然后制作一个程序,在该位置周围绘制所有高度图和 3D 模型并拍照。它将拍摄几张照片,然后当玩家靠近该地点时,这些照片将用作天空盒。
另一种更明显的技术是存储非常粗糙的 3D 模型,但是 3D 渲染系统如何专门选择渲染建筑物的粗糙模型而不是其他不太重要的粗糙模型(并且可能无法从中查看-距离)物体?你将如何将这样的东西与你的高度图一起存储?也许按照设计,只有几个如此重要的地标,然后将它们的列表存储在一个小文件中,并在每一帧上渲染小于 x 的那些真正远距离的地标?
我知道 Halo 系列选择将游戏分成关卡,然后每个关卡都有不同的手工制作的天空盒。这就是我在第一个建议中想要的,但我不确定。我想我真的只是想在我的想法中收集其他想法或改进或问题,以便我可以用我有限的时间和知识选择哪些原型。
另一个相关主题是如何在远处显示山脉,因为它们将是高度图的一部分,而不是顶部的 3D 模型,因此它们实际上无法提供粗略的版本,并且高度图近似算法可能会出错从那样很远的距离上山(假设您甚至会尝试近似和渲染如此遥远的几何图形,而您可能不会这样做)。如果您在答案中也涵盖了这一点,则可以加分。:)
谢谢!
PS我正在使用OpenGL。我只是在寻找基本概念,但如果您选择发布示例代码,请使用 OpenGL 函数和术语!:)
编辑:感谢您的回答!出于文档目的,我发现了另一个资源:Game Programming Gems 2 中的第 4.9 章涵盖了将远处风景渲染到天空盒的概念:http: //books.google.com/books ?id=1-NfBElV97IC&lpg=PA416&ots=SOpnfijZly&dq= render%20distant%20to%20skybox&pg=PA416 (不幸的是,预览只是本章的第一页......我必须在八月份回来后尽快从我大学的图书馆里拿那本书)
同样在阅读了这些内容之后,我仍然认为 LOD 适用于距离仍然相当近的物体。如果对象甚至没有一个像素大,但您仍在将它们提供给显卡,那么无论是否使用 LOD,您都只是在浪费能量。除了绝对最大的遥远物体之外,其他一切都是如此。在大多数情况下,一些高楼和一些山脉,但从这么远的距离看不到小细节模型(灌木,甚至树木,岩石,任何其他风景......)。所以我很喜欢渲染到天空盒的技术,当我到达这座桥时,我就是这样过桥的;我会确保对所有模型都使用 LOD,我只是不会渲染这样的距离。
顺便说一句,我更多地是按照 Oblivion 游戏的思路思考,所以答案可能取决于游戏类型。