Преобразовать координаты кубической карты в эквиваленты в равноугольной
У меня есть набор координат кубической карты из 6 изображений (спереди, сзади, слева, справа, сверху, снизу) следующим образом:
[ [160, 314], Front; [253, 231], Front; [345, 273], Left; [347, 92], Bottom; ... ]
Каждое изображение имеет размер 500x500p, являясь [0, 0] верхним левым углом. Я хочу преобразовать эти координаты в их эквиваленты в равностороннем, для изображения 2500x1250p. Макет выглядит так:
Мне не нужно конвертировать все изображение, только набор координат. Есть ли прямое преобразование для определенного пикселя?
1 ответ
преобразовать ваше изображение +2D координаты в 3D нормализованный вектор
точка
(0,0,0)
является центром вашей карты куба, чтобы сделать эту работу, как задумано. Так что в основном вам нужно добавитьU,V
векторы направления масштабируются до ваших координат до трехмерного положения точки текстуры(0,0)
, Векторы направления - это просто единичные векторы, где каждая ось имеет 3 варианта{-1, 0 , +1}
и только одна координата оси не равна нулю для каждого вектора. Каждая сторона кубической карты имеет одну комбинацию... Какая из них зависит от ваших соглашений, которых мы не знаем, поскольку вы не поделились какой-либо информацией.использовать декартово-сферическое преобразование системы координат
вам не нужен радиус, только два угла...
преобразуйте сферические углы в ваши 2D текстурные координаты
Этот шаг зависит от вашей геометрии 2D текстуры. Простейшей является прямоугольная текстура (я думаю, это то, что вы подразумеваете под равноугольной), но есть и другие сопоставления с определенными характеристиками, и каждое требует различного преобразования. Вот несколько примеров:
Для текстуры прямоугольника вы просто масштабируете сферические углы до размера разрешения текстуры...
U = lon * Usize/(2*Pi) V = (lat+(Pi/2)) * Vsize/Pi
плюс / минус некоторые знаки ориентации в соответствии с вашими системами координат.
Кстати. только что нашел (возможно, дубликат QA):