Я хочу написать сферическое отображение для моего трассировщика лучей, чтобы генерировать UV-координаты для сферы. Текстура, примененная с этим сопоставлением, должна выглядеть так:
У меня есть сфера, которая расположена в [0.0f,0.0f,0.0f]
с radius
из 20.0f
.
Для данной xyz
точки на поверхности сферы (положение, в котором луч от трассировщика лучей попадает в сферу) я вычисляю uv
координаты с помощью эту формулу:
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
): < img src = "https://i.stack.imgur.com/yjvYx.jpg" alt = "введите описание изображения здесь">
Но u
выглядит не так хорошо: Разве это не должна быть сфера, цвет которой зависит от XZ (одинаково для всех точек на одной долготе, постепенно меняясь от одной долготы к другой? )?
Я ошибаюсь в интерпретации point
, формулы или чего-то еще?