Сферные координаты текстуры DirectX - PullRequest
1 голос
/ 20 декабря 2009

У меня есть сфера с нормалями для каждой вершины, и я пытаюсь получить координаты текстуры для объекта, используя алгоритм:

U = Asin(Norm.X) / PI + 0.5
V = Asin(Norm.Y) / PI + 0.5

С текстурой в горошек я получаю:

Misaligned textures

Вот тот же объект без наложенной текстуры:

No textures

Проблема, на которую я обращаю особое внимание (я знаю, что есть несколько), заключается в смещении текстур.

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

Есть идеи?

1 Ответ

3 голосов
/ 21 декабря 2009

Разве вы не можете просто установить свои UV, когда строите сферу?

Тогда:

 u = theta / (2 * PI);
 v = phi / PI;

Редактировать: Я мог бы также указать, что, возможно, что-то не так с вашими нормалями, учитывая черную точку сверху ... По всей видимости, вдоль краев многоугольника также выделяются линии. Это снова указывает на вероятные изворотливые нормали ...

...