В настоящее время я работаю над «Поколением планет», в основном для развлечения, и надеюсь, что в итоге у меня появятся какие-то классные планеты. Я использую куб, который был преобразован в сферу путем нормализации.
Рельеф на этой картинке еще не текстурирован должным образом. Это просто рендер из карты высот. Однако это не моя проблема. При создании сферы из куба у вас остается 6 граней, изогнутых в форме сферы. Поэтому у меня нет широты и долготы, которые можно было бы использовать, чтобы обернуть сферическую карту высот вокруг местности. В настоящее время я использую Cube Mapping. Однако это вызвало несколько проблем, как вы можете видеть: , где моя проблема становится очевидный. Проблема связана с тем, что сфера все еще имеет топологию куба. Мне нужно создать карту высот для каждого лица. В настоящее время я использую Libnoise для карты высот, и здесь начинается большая проблема. Я могу либо экспортировать его как сферическую карту высот, что было бы полезно, если бы у меня была сфера, либо я могу использовать плоские карты высот, которые должны быть сопоставлены со всеми 6 гранями. Однако из-за того, как работает отображение. Я могу получить 3 грани, которые будут выровнены по центру и будут бесшовными, но последняя карта высот не будет соединяться с первой, поскольку шум Lib использует границы и создает сетку координат.
Сфера создана вот так
for(int i = 0; i < vertices.size(); i++)
{
glm::vec3 oldVec = vertices[i];
glm::vec3 newVec = glm::normalize(oldVec);
vertices[i] = newVec * glm::vec3(500, 500, 500);
}
Причину этого можно увидеть здесь .
Однако структура сферы облегчит реализацию лода в форме квадрокоптера позже. Есть ли способ сгенерировать карту высот кубической карты с помощью LibNoise? Или я могу что-то сделать, чтобы сфера могла использовать сферическую карту высот?
Я понял, как сделать это с помощью Sphere Maps, но это не сработает, когда я перейду к использованию дерева квадратов. Однако он дает хорошие результаты, например:
Итак, мне в значительной степени нужно знать, как разместить шум на кубической карте. Либо с Libnoise, либо в вершинном шейдере.