生成漂亮的Starfield模式

时间:2011-02-16 20:14:14

标签: algorithm sdl

我正在尝试为使用C ++和SDL的游戏生成滚动星空。我正在使用一种简单,天真的算法,它只能在黑色背景上创建大量白色像素。然而,这个“星空”看起来太不自然了 - 可能是因为随机数生成器的质量很差(我使用rand()函数)。

是否有任何特殊算法可用于生成看起来或多或少逼真的星空?

感谢。

4 个答案:

答案 0 :(得分:3)

总是this经典。亮点:

  

[...]想象星星是3D空间中的点,它们都沿着Z轴向观察者移动。在每个时间步,星星的3D坐标将被投影到屏幕上并显示。

  

为了获得更平滑的效果,我们可以在它们第一次出现时使星星变黑(这样你就不会注意到它们),然后在它们靠近时变亮。

  

有两种方式可以模仿浩瀚的感觉。首先是简单地模拟一个巨大的空间区域,至少可以说这是不切实际的。第二是让恒星以一定的速度移动。

答案 1 :(得分:1)

前段时间我发现this useful tutorial创造了一个“逼真”的明星场。它不是C ++,但是一旦你明白了它就应该很容易适应。

答案 2 :(得分:1)

你可以使用Lloyd's algorithm来放松随机点并使它们成为半随机点。我在map generator中读到了这个想法,但它也可以用来创建最终分布的星形场。

答案 3 :(得分:0)

你可能不希望它真正随机。当你真的想要散布各个像素时,你最终会在某些地方出现像素斑点。你最好的选择可能是编写一个较小的部分,然后反复重复以获得完整的星空外观。