Was Sie erreichen wollen, scheint sehr eng damit verbunden zu sein:
Analog zu sphärischen Koordinaten in n-Dimensionen
In Ihrem Fall in zwei Dimensionen verwenden Sie einfach diese Formel, um die Eckpunkte des Rechtecks abzubilden, das Sie auf Ihrer Kugel haben (hoffen wir, dass es unterteilt ist) (vergessen Sie nicht, irgendwo mit dem halben Durchmesser zu multiplizieren. Nur Mathematiker leben auf einer Einheitskugel, alle anderen anständige Leute benutzen Durchmesser ...)
EDIT: Da dies alles etwas vage ist, gebe ich einige weitere Einblicke. Was Sie von dieser Formel benötigen, um verwendet zu werden:
x = r*sinθ*cosφ
y = r*sinθ*sinφ
z = r*cosθ
θ und φ sind die sphärischen Koordinaten, nach denen Sie suchen (Breite und Länge), um sie zu erhalten. Nehmen Sie die x / y-Koordinaten der Punkte auf einem Teil des Panoramabilds als solche:
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
Dann würden Sie Ihr Quad auf einer Kugel abbilden lassen, basierend auf seiner xy-Position auf einem 2D-Koordinatensystem, das gemäß der Kugelabbildung in die 3D-Position auf dem Raum übersetzt wird.
EDIT: Ich habe gerade eine Idee, um weiter zu gehen, könnten Sie die Koordinaten der Ebene auf der Kugel mit UV-Werten als solchen kapseln:
for(int i = 0;i < vertices.Length; i++) {
vertices[i] = getPointPosOnSphere(UV[i].y,UV[i].x,HalfDiamater);
}
Dort können Sie die Quad-Position in Ihrer bevorzugten 3D-Software (oder sogar durch Code durch Einheit) verwalten, indem Sie einfach UV-Werte zuweisen (wenn auf beiden Achsen 0 bis 1 liegt, wird Quad um die Kugel gewickelt).
WARNUNG: Für die Verwendung von UV-Strahlen müssen Sie eine Umrechnung von Bogenmaß in Grad durchführen. (da UV 0 zu 1 ist)