Создание красивого шаблона Starfield - PullRequest
1 голос
/ 16 февраля 2011

Я пытаюсь создать поле прокрутки для игры с C ++ и SDL.Я использую простой, наивный алгоритм, который просто создает много белых пикселей на черном фоне.Однако это «звездное поле» выглядит слишком неестественно - возможно, из-за низкого качества генератора случайных чисел (я использую функцию rand ()).

Существуют ли какие-либо специальные алгоритмы для создания звездных полей, которые выглядят более или менее реалистично?

Спасибо.

Ответы [ 4 ]

3 голосов
/ 17 февраля 2011

Всегда есть это классика. Основные характеристики:

[...] представьте себе звезды как точки в трехмерном пространстве, все они движутся к зрителю вдоль оси Z. На каждом временном шаге трехмерные координаты звезд будут проецироваться на экран и отображаться.

Для более плавного эффекта мы можем сделать звезды черными, когда они впервые появляются (чтобы вы их не замечали), а затем стали ярче по мере приближения.

Есть два способа смоделировать чувство обширности. Во-первых, просто моделировать огромную площадь пространства, что по меньшей мере нецелесообразно. Второе - заставить звезды двигаться с диапазоном скоростей.

1 голос
/ 17 октября 2013

Вы можете использовать алгоритм Ллойда , чтобы ослабить случайные точки и сделать их полуслучайными. Я прочитал эту идею в генераторе карт , но, вероятно, его можно использовать, чтобы создать в конечном итоге распределенное звездное поле.

1 голос
/ 17 февраля 2011

Я нашел этот полезный урок некоторое время назад по созданию «реалистичного» звездного поля.Это не C ++, но он должен легко адаптироваться, как только вы поймете идею.

0 голосов
/ 16 февраля 2011

Вы, вероятно, не хотите, чтобы это было действительно случайно. В некоторых местах вы получите пятна пикселей, когда вы действительно захотите разбросать отдельные пиксели. Лучше всего было бы написать код меньшего раздела, а затем просто повторять его снова и снова, чтобы получить полный вид звездного поля.

...