当前位置:  开发笔记 > 编程语言 > 正文

Sphere World Implementation C++

如何解决《SphereWorldImplementationC++》经验,为你挑选了2个好方法。

什么是实现,存储和渲染球形世界的最佳方式,例如孢子或无限的但没有孢子的中间阶段,以及多个世界无限宇宙.不要假设地球本身是如何产生的或其大小/规模.



1> thekidder..:

对于渲染,您需要使用某种细节层次的算法,以便从靠近行星的表面无缝移动到远处.有许多动态LOD算法(见这里).较旧的算法(称为ROAM)可以适用于处理球形物体或行星(球形ROAM).几何clipmaps是一个新的,更流行的算法,可以适合于球形表面,以及.

至于存储数据,您可能需要查看纹理,高度图等的程序生成(取决于您的需要).这类似于Infinity和Spore的工作方式.你可以在这里阅读一些关于程序纹理的内容.程序高度图更简单,取决于您想要地形的复杂/真实程度.在最简单的层面上,您可以通过perlin噪声函数简单地移动顶点高度.



2> dagorym..:

如果您正在寻找存储表面数据的内容,您可以查看HEALpix.它是天文学界开发的专门用于绘制天空(另一个球面)的软件.

HEALpix创建一个网格,用于描述曲面的位置和大小,并为每个曲面分配一个ID.然后,您可以使用该ID作为键或索引来访问有关该特定级别的详细信息.

HEASpix提供了查找相邻曲面区域的方法,并可为每个网格点提供中心和顶点位置.

它是一个分层网格,允许您根据需要细分每个面,因此理论上您可以在低分辨率下部分网格,如果需要,可以在更高级别的细节处使用其他部分.它有一个很好的属性,它是无限可分的(达到你的内存限制),并且给定分辨率下网格的每个像素与该分辨率级别的所有其他像素具有相同的区域.

分发包提供了许多您可能不需要的东西,但核心库应该是有用的.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有