Конвертировать 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 - они, кажется, используют сферу в качестве своего примера.
Надеюсь, поможет.