У меня есть 360 сферических видео. Я использую это видео как текстуру на сфере в Unity. Внутри сферы есть камера, и это работает как настройка для моей виртуальной реальности. Довольно простой.Преобразование координат, расположенных на плоскости 360 Texture, в сферическую
Я пытаюсь написать немного кода в Интернете, где люди могут загружать 360 изображений и видео, размещать маркер/точку доступа на 360 сферическом изображении/видео, а затем применять изображение/видео-текстуру на сфере в Unity3D. Если я наложу простую координатную сетку x/y на текстуре 360 изображений/изображений, поставьте некоторые координаты x/y для размещения маркера/точки доступа и верните текстуру в сферу, Unity не будет интерпретировать это правильно, поскольку мы теперь находимся в трехмерном пространстве, и мы смотрим на текстуру из сферы, отображаемой на плоскость, со всеми искажениями.
Вопрос в том, как мне преобразовать эти координаты x и y в 2D-плоскость текстуры 360 видео в координаты, которые можно понять в 3D в Unity3D?
Моя первая мысль состояла в том, чтобы использовать двумерные декартовы координаты и преобразовать их в сферические координаты, но мне кажется, что в декартовых координатах мне не хватает оси z, чтобы сделать эту работу.
Является ли ось z просто 0 или это радиус от центра сферы до координаты x/y? Что представляет собой ось z? Может быть, две системы координат. Тот, который является координатой на плоскости и точкой, которая находится от центра сферы?
Это преобразование кода, что я до сих пор:
public static void CartesianToSpherical(Vector3 cartCoords, out float outRadius, out float outPolar, out float outElevation){
if (cartCoords.x == 0)
cartCoords.x = Mathf.Epsilon;
outRadius = Mathf.Sqrt((cartCoords.x * cartCoords.x)
+ (cartCoords.y * cartCoords.y)
+ (cartCoords.z * cartCoords.z));
outPolar = Mathf.Atan(cartCoords.z/cartCoords.x);
if (cartCoords.x < 0)
outPolar += Mathf.PI;
outElevation = Mathf.Asin(cartCoords.y/outRadius);
}
Это мой самый первый пост так пожалуйста, простите меня, если я делаю что-то неправильно, и дайте мне знать, как улучшить.