Конвертировать 3d точку на сфере в координату UV

У меня есть 3D-точка на сфере и я хочу преобразовать ее в UV-точку на текстуре сферы.

Может ли кто-то указать в правильном направлении, пожалуйста? Я могу взять чистое математическое решение.

Редактировать:

В настоящее время у меня есть это, которое не возвращает правильную координату UV. p - это 3d точка на сфере. Расположение - положение сферы.

var x = (p.x-mesh.position.x)/500;
var y = (p.y-mesh.position.y)/500;
var z = (p.z-mesh.position.z)/500;                  

var u = Math.atan2(x, z) / (2 * Math.PI) + 0.5;
var v = Math.asin(y) / Math.PI + .5;

2 ответа

Википедия о ультрафиолетовом отображении верна, однако вам нужно вычислить ультрафиолетовую координату для каждой вершины меша. Затем вам нужно преобразовать координату уф в координату пикселя: идеальное (3D) наложение текстуры в opengl. Вот еще один пример: http://www.cse.msu.edu/~cse872/tutorial4.html. Вы также можете попробовать Three.js. Вы также должны физически скопировать ультрафиолетовый треугольник.

Я нашел эту статью в вики - http://en.wikipedia.org/wiki/UV_mapping - они, кажется, используют сферу в качестве своего примера.

Надеюсь, поможет.

Другие вопросы по тегам