In a previous inquiry regarding the mapping of a stereographic projection onto a sphere for virtual reality live-streaming purposes, I delved into UV mapping techniques and successfully achieved a visually stunning result. However, there is one aspect of this mapping method that I find unsatisfactory: a workaround where the bottom of the sphere must map to "nothing," leading me to assign it to a corner of the texture.
In an attempt to refine this approach, I experimented with creating a partial sphere by adjusting the theta length as suggested in the Three.JS documentation on SphereGeometry.
Although I managed to attain the correct spherical shape, I encountered an intriguing observation concerning the UV mapping:
// JavaScript code snippet
var fov = 270;
// Sphere geometry creation
...
console.log("minX: " + minX + ", maxX: " + maxX);
console.log("minY: " + minY + ", maxY: " + maxY);
console.log("minZ: " + minZ + ", maxZ: " + maxZ);
My past experience with UV mapping highlighted the range of x
, y
, and z
values from -1 to 1, independent of mesh size. An x
value of 1 signifies "far right on the sphere," while a y
value of 1 indicates "top of the sphere." However, when manipulating a partial sphere (via thetaStart
and thetaLength
) such that a hole is created at the top, the maxY
value unexpectedly capped at approximately 0.7854.
Why does this mesh conclude at 0.7854 instead of following a scaled range from -1 to 1? My aim was to streamline the UV mapping process by adjusting the sphere's shape (eliminating the need for the scaledY
term mentioned in my prior question) but altering the sphere's configuration seemed to have negligible impact on the UV map.
Is there a way to inform Three.JS that this partial sphere represents the full extent of the shape, guiding its coordinates to span from -1 to 1?