В Blender я создал сферу с панорамной текстурой внутри. Я также вручную создал плоскую сетку (изогнутую, чтобы соответствовать размеру сферы), которая находится на внутренней стене, где я могу нарисовать другую текстуру.
Это здорово, но я действительно хочу сократить ручной труд и выполнить часть этой работы в сценарии - например, иметь переменную для панорамного изображения и координаты области на фотографии, которую я хочу заменить на новую сетка.
Самым сложным в этом будет создание изогнутой сетки в коде, которая может находиться на внутренней стене сферы.
Может кто-то указать мне верное направление?
unity
mesh
dynamic-mesh
user5025
источник
источник
Ответы:
То, чего вы пытаетесь достичь, похоже, очень связано с этим:
Аналог сферических координат в n-измерениях
в вашем случае в двух измерениях, тогда вы просто используете эту формулу, чтобы отобразить вершины прямоугольника, который у вас есть (будем надеяться, что он разделен) на вашей сфере (не забудьте умножить на где-то полудиаметр. Только математики живут на единичной сфере все остальные приличные люди используют диаметры ...)
РЕДАКТИРОВАТЬ: Поскольку все это немного расплывчато, я даю еще несколько идей, что вам нужно из этой формулы для использования:
θ и φ - сферические координаты, которые вы ищете (широта и долгота), чтобы получить их, вы берете координаты x / y точек на части панорамного изображения как таковые:
тогда вы получите отображение своего четырехугольника на сфере на основе его положения xy в 2D-системе координат, переведенной в 3D-положение в пространстве в соответствии с отображением сферы.
РЕДАКТИРОВАТЬ: Только что пришла идея, чтобы пойти дальше, вы можете инкапсулировать координаты плоскости на сфере, используя значения UV как таковые:
Там вы можете управлять положением четырехугольников в вашем любимом 3D-программном обеспечении (или даже с помощью кода через единицу), просто назначая значения UV (если от 0 до 1 по обеим осям, то квад будет обернут вокруг сферы)
ВНИМАНИЕ: Использование ультрафиолетовых лучей потребует от вас пересчета в радианы в градусы. (поскольку УФ от 0 до 1)
источник
Ответ Жери Ардуино, приведенный выше, указал мне верное направление, но я хотел бы добавить пару вещей здесь.
1) Следующее не будет работать в единстве из-за различий в системе координат
изменить это на
2) Мне неясно, какой диапазон значений long и lat определен в сигнатуре метода
Значения долготы и широты должны быть в радианах. Их диапазон следующий
источник