Процедурные планеты, карты высот и текстуры
В настоящее время я работаю над процедурным генератором планет OpenGL. Я надеюсь использовать его для космической RPG, которая не позволит игрокам спуститься на поверхность планеты, поэтому я проигнорировал все, что связано с ROAM. На данный момент я рисую куб с VBO и отображаю на сфере, как показано здесь.
Я знаком с большинством методов создания фрактальной карты высот и уже реализовал свою собственную версию смещения средней точки (в этом случае я не знаю, что она полезна).
Мой вопрос заключается в том, каков наилучший способ процедурного генерирования карты высот. Я посмотрел на libnoise, который позволяет мне создавать наклоняемые карты высот / текстуры, но, насколько я вижу, мне нужно создать сеть, подобную следующей:
Оставляя плитки очевидными.
Может ли кто-нибудь посоветовать мне лучший маршрут?
Любой вклад будет высоко ценится.
Спасибо,
Генри.
2 ответа
Похоже, вы понимаете проблему с созданием плоской, бесшовной поверхности, а затем пытаетесь отобразить ее на сферу.
Как насчет использования функции 3D шума вместо этого? Функция трехмерного шума принимает 3 координаты вместо 2 в качестве входных данных, поэтому представьте трехмерный массив, полный сгенерированных чисел (вместо двумерного массива). Таким образом, когда у вас есть функция 3D шума, вы можете сгенерировать 2D текстуру, но вместо использования 2D координат для каждого пикселя, используйте 3D координаты того, где этот пиксель будет на сфере. (Я надеюсь, что это замысловатое предложение имело смысл!)
Посмотрите на полпути вниз по этой странице о шуме Перлина: https://web.archive.org/web/20120829114554/http://local.wasp.uwa.edu.au/~pbourke/texture_colour/perlin/
Я думаю, что это описывает именно то, что вы хотите в отношении сфер.
Вы также можете проверить эту статью 2004 года о том, как "разбить" сферу на управляемые части.