O que você está tentando alcançar parece muito relacionado a isso:
Análogo de coordenadas esféricas em dimensões n
no seu caso, em 2 dimensões, basta usar esta fórmula para mapear os vértices do retângulo que você possui (vamos torcer para que ele seja subdividido) em sua esfera (não se esqueça de multiplicar pelo halfDiameter em algum lugar. Somente matemáticos estão vivendo em uma esfera unitária todos os outros pessoas decentes estão usando diâmetros ...)
EDIT: Como tudo isso é um pouco vago, dou mais algumas idéias O que você precisa desta fórmula para ser usado:
x = r*sinθ*cosφ
y = r*sinθ*sinφ
z = r*cosθ
Sendo θ e φ as coordenadas esféricas que você está procurando (Latitude e Longitude) para obtê-lo, você pega as coordenadas x / y dos pontos na parte da imagem 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
você mapeará seu quad em uma esfera com base em sua posição xy em um sistema de coordenadas 2D convertido para a posição 3D no espaço de acordo com o mapeamento da esfera.
Edição: Acabei de ter uma idéia, para ir mais longe, você pode encapsular as coordenadas do plano na esfera usando valores UV, como tal:
for(int i = 0;i < vertices.Length; i++) {
vertices[i] = getPointPosOnSphere(UV[i].y,UV[i].x,HalfDiamater);
}
Lá você pode gerenciar a posição quad no seu software 3D favorito (ou mesmo através do código através da unidade) apenas atribuindo valores UV (se de 0 a 1 em ambos os eixos, o quad será envolvido em toda a esfera)
AVISO: O uso de UV exigirá a conversão de Radianos em Graus. (como UV é de 0 a 1)