2015-11-17 6 views
0

Я хочу написать сферическое отображение для моего лучеискателя для генерации UV-координат для сферы. Текстура, наложенная с этим отображением должна выглядеть так: enter image description hereРасчет сферического картографирования (УФ) для заданной точки на сфере - странные значения U

У меня есть сфера, которая находится в [0.0f,0.0f,0.0f] с radius из 20.0f.

Для данных xyz точки на поверхности сферы (положение, в котором луч от лучевого индикатора попал в сферу) я вычислить uv координаты с this formula:

float u = 0.5f + atan2(point.getX(), point.getZ())/(2 * PI); 
float v = 0.5f - asin(point.getY()/radius)/PI; 

я решил вывести u и v значения для проверки отображения ,

Что касается v это выглядит вполне нормально (значения от одного полюса к другому, от 0.0f к 1.0f): enter image description here

u Но не выглядит так хорошо: enter image description here Если это не быть сферой где цвет зависит от XZ (тот же для всех точек на одной долготе, постепенно меняющихся от одной долготы к другой)?

Я не прав, если интерпретация point, формула или что-то еще?

ответ

0

Разрыв в центральной линии обусловлен тем, что atan2() возвращает долготу между -π и π. Вы разделите это на 2π, чтобы масштабировать его до -0.5 и 0.5, затем добавьте 0.5, чтобы масштабировать его между 0 и 1. Результатом является значение, которое скачкообразно скачкообразно скачет от 0 до 1, подобно тому, как местное время внезапно возвращается на 24 когда вы пересекаете международную линию дат и по той же причине. Чтобы получить непрерывно затененную сферу, сопоставьте значение u с яркостью, масштабированной до четной функции, или еще лучше, как оттенок цветового круга.

 Смежные вопросы

  • Нет связанных вопросов^_^