2d程序宇宙生成


16

我想创建一个平坦的宇宙,首先整个宇宙是空白的。

那将由视差滚动星云背景图像表示。

我要做的是将行星表示为宇宙中的圆盘状物体。它们可以是各种尺寸。

圆盘的内部将由一个陆地组成,然后外部将是一个水体,其后是空气。

程序上创建这些瓷砖的最佳方法是什么,例如空气将由各种气体以及各种矿产和资源的土地组成。

我的第一个想法是创建纹理图像,然后从这些纹理中划出圆圈,但是问题是这些纹理必须水平和垂直地包裹。是否有完整的程序方式来做到这一点?


这样的问题最好用某种视觉方式来回答,以描述您所追求的。下面的好答案可能是技术性太强或技术性不足。
理查德·法比安

Answers:


14

可以使过程纹理(尤其是基于噪声的纹理)平铺。见这个线程在GDNet了一些讨论,以及日记帐分录。还有一个链接,听起来很有趣,尽管我不能说它的真实性。

至于程序化的世界,是由开发Infinity的家伙写的这篇文章。他的系统是3D的,但您可能可以轻松地适应这些技术。

关于程序内容的生成,也有一个完整的Wiki


1
PFF。我需要学习打字更快。这基本上就是我在下面的编辑器窗口中所拥有的... +1给您,先生。
bummzack 2011年

欢呼声,我会努力的。
Joseph Le Brech

2

在我看来,您想要的是矩形纹理,顶部带有空气,底部带有灰尘。通过使U纹理坐标代表围绕圆的角度,使V纹理坐标代表距圆心的距离,可以将矩形纹理映射到圆。对于较大的行星,U可以绕行星缠绕几次。

要将常规2D坐标XY转换为上述UV坐标,可以像这样进行数学运算:

y -= planet_center.y;
x -= planet_center.x;
u = atan2( y, x );
v = sqrt( y*y + x*x );

应注意避免将其计算得太靠近行星中心。


我正在沿着i.imgur.com/gpCTc.jpg这样的宇宙垂直横截面进行思考,这 陆地,海洋,空气,虚空。等
约瑟夫·勒布雷希

这是将空间划分为类型的合理方法,但要使其看起来像球形行星,将是一个挑战。
bmcnett 2011年

并不需要使其看起来太像行星。足够比例的随机土地,水,空气,以及所有其他六角形行星以及其他所有行星,均以六边形网格排列。
Joseph Le Brech

嗯,那么您将要生成很多六角形纹理图块,并且要限制陆地/空气等之间的边缘出现在相邻图块之间的可预测位置吗?
bmcnett 2011年

是的,以球形的方式。因此,随机选择每一层(土地,水..)的大小,然后在该土地质量中为行星放置随机的地砖,每一层都相同。
Joseph Le Brech
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.