Lo que intenta lograr parece estar muy relacionado con esto:
Análogo de coordenadas esféricas en n dimensiones
en su caso en 2 dimensiones, simplemente use esta fórmula para mapear los vértices del rectángulo que tiene (esperemos que esté subdividido) en su esfera (no olvide multiplicar por el medio diámetro en alguna parte. Solo los matemáticos viven en una esfera unitaria) las personas decentes usan diámetros ...)
EDITAR: Como todo esto es un poco vago, doy algunas ideas más Lo que necesita de esta fórmula para ser utilizado:
x = r*sinθ*cosφ
y = r*sinθ*sinφ
z = r*cosθ
θ y φ son las coordenadas esféricas que está buscando (Latitud y Longitud) para obtenerlo, toma las coordenadas x / y de los puntos en una parte de la imagen panorámica como tal:
public Void getPointPosOnSphere(float Longitude,float Latitude,float r) {
x = r*Mathf.sin(Longitude)*Mathf.cos(Latitude);
y = r*Mathf.sin(Longitude)*Mathf.sin(Latitude);
z = r*Mathf.cos(Longitude);
return new Vector3(x,y,z);
}
//here you could have a for loop iterating through points of your rectangle for each
//point you'd have associated a map coordinate :
Vector3 pointSpacePos = getPointPosOnSphere(pointCoordY,pointCoordX,HalfDiamater);
//End of the for loop
entonces obtendría su quad mapeado en una esfera basada en su posición xy en un sistema de coordenadas 2D traducido a la posición 3D en el espacio de acuerdo con el mapeo de la esfera.
EDITAR: Acabo de tener una idea, para ir más allá, podría encapsular las coordenadas del plano en la esfera utilizando valores UV como tales:
for(int i = 0;i < vertices.Length; i++) {
vertices[i] = getPointPosOnSphere(UV[i].y,UV[i].x,HalfDiamater);
}
Allí podría administrar la posición cuádruple en su software 3D favorito (o incluso por código a través de la unidad) simplemente asignando valores UV (si de 0 a 1 en ambos ejes, entonces el quad se envolverá alrededor de la esfera)
ADVERTENCIA: El uso de UV requerirá que realice una conversión de radianes a grados. (como UV es de 0 a 1)