Процедурные планеты, карты высот и текстуры - PullRequest
1 голос
/ 03 ноября 2010

В настоящее время я работаю над процедурным генератором планет OpenGL. Я надеюсь использовать его для космической RPG, которая не позволит игрокам спуститься на поверхность планеты, поэтому я проигнорировал все, что связано с ROAM. Сейчас я рисую куб с VBO и отображаю на сферу, как показано здесь .

Я знаком с большинством методов создания фрактальной карты высот и уже реализовал свою собственную версию смещения средней точки (в этом случае я не знаю, насколько она полезна).

Мой вопрос: каков наилучший способ процедурного генерирования карты высот? Я посмотрел на libnoise , который позволяет мне создавать наклоняемые карты / текстуры высоты, но, насколько я вижу, мне нужно было бы сгенерировать сеть вроде:

this

Оставляя плитку очевидной.

Может ли кто-нибудь посоветовать мне лучший маршрут?

Любой вклад будет высоко ценится.

Спасибо

Генри.

Ответы [ 2 ]

3 голосов
/ 03 ноября 2010

Похоже, вы понимаете проблему с созданием плоской, бесшовной поверхности, а затем пытаетесь отобразить ее на сферу.

Как насчет использования функции 3D-шума вместо этого? Функция трехмерного шума принимает 3 координаты вместо 2 в качестве входных данных, поэтому представьте трехмерный массив, полный сгенерированных чисел (вместо двумерного массива). Таким образом, когда у вас есть функция 3D шума, вы можете сгенерировать 2D текстуру, но вместо использования 2D координат для каждого пикселя, используйте 3D координаты того, где этот пиксель будет находиться на сфере. (Надеюсь, что замысловатое предложение имело смысл!)

Посмотрите на полпути внизу страницу о шуме Перлина: https://web.archive.org/web/20120829114554/http://local.wasp.uwa.edu.au/~pbourke/texture_colour/perlin/

Я думаю, это точно описывает то, что вы хотите в отношении сфер.

1 голос
/ 28 ноября 2010

Вы также можете ознакомиться с этой статьей 2004 года о том, как «разбить» сферу на управляемые части.

http://www.gamedev.net/reference/articles/article2074.asp

...