我认为也许可以使用预渲染技术,在景观周围选择特定位置,然后制作一个程序,绘制该位置周围的所有高度图和3D模型并拍照。会拍摄几张照片,当玩家接近该位置时,将使用这些照片作为天空盒。
另一种更明显的技术是存储粗略的3D模型,但是3D渲染系统如何具体选择渲染建筑物的粗略模型而不是其他不太重要(可能无法从那个距离看到)的对象的粗略模型?如何与您的高度图一起存储类似的东西?也许是通过设计,只有几个这样的重要地标,然后只需在一个小文件中存储它们的清单,并在每一帧中呈现不到x非常远的距离的那些。
我知道《光环》系列选择将游戏分成级别,然后每个级别都有一个不同的手工天空盒。这就是我在第一个建议中所追求的,但我不确定。我想我真的只是在尝试收集其他想法或改进或我的想法中的问题,以便我可以选择哪些想法用我的有限时间和知识进行原型制作。
另一个相关的主题是如何显示远处的山,因为它们将成为高度图的一部分,而不是其上的3D模型,因此它们实际上无法具有粗略版本,而高度图近似算法可能会使山从这么远的距离出现问题(假设您甚至会尝试近似和渲染这样遥远的几何体,您可能不会)。如果您在答案中涵盖了这一点,那就更好了。:)
谢谢!
附:我正在使用OpenGL。 我只是寻找基本概念,但是如果您选择发布示例代码,请使用OpenGL函数和术语! :)
编辑:感谢回答!为了文档记录,这里有另一个资源: 《游戏编程宝典2》第4.9章介绍了将远景渲染到天空盒的概念: http://books.google.com/books?id=1-NfBElV97IC&lpg=PA416&ots=SOpnfijZly&dq=render%20distant%20to%20skybox&pg=PA416 (不幸的是,预览只显示了该章节的第一页...我得在8月回到大学图书馆取那本书)
此外,在阅读了这些内容之后,我仍然认为LOD适用于距离相对较近的对象。如果对象甚至不到一个像素大小,但你仍然将它们传送到显卡,那么无论是否使用LOD,你都在浪费功率。这种情况适用于除了最大的远景对象以外的所有对象;在大多数情况下,只有一些高楼大厦和一些山脉,而小细节模型(灌木丛、树木、岩石等其他景观...)在这样的距离下是看不见的。因此,我喜欢将远景渲染到天空盒的技术,当我遇到这个问题时,我会采用这种方法;而且我会确保对所有模型使用LOD,只是不会渲染如此远的距离。
顺便说一下,我想更多地思考一个《上古卷轴4:奥布里翁》类型的游戏,所以答案可能取决于游戏类型。