Equirectangular Projection Vs Skybox Projection
When we started developing RealityPipe, we went for the easiest part we can do, 360 photos. That is where our experience is. But soon we faced a challenge, a challenge to which the solution wasn’t what we were doing before. How to transfer and render 360 photos. So let’s look at equirectangular projection vs skybox projection.
At Panorama 360 we relied on equirectangular projection with an image pyramid on it. But then it was a story of mobile screens. And the solution was perfect. Faster transfer, since low resolution is loaded first. Only the parts which need to be in high res would be requested later, if the user zoomed in. But, this good times broke apart in Head Mount Displays or onwards we call them HMDs.
Thing with these, are, when user is looking at a photo, you can’t keep the user waiting to load the next part of the image, and you can’t adjust by showing low-resolution images for the time. Things have to be high quality, and wherever user looks at with a HMD, things should be there, without lag or without glitch.
Enter Skyboxes. Traditionally, most of us, panoramic photo app developers, preferred equirectangular projections. Well because it is easy, a single texture most times and viola! you can show the photo in 3d. And most 360 cameras, equirectangular is the go to format, since stitching is easy that way. But equirectangular projections has a big disadvantage. To explain the disadvantage, let us look at the most conventional example of equirectangular images.
You can see the artics take most space in the map, but when it get projected to a globe, it shrinks to two small circles in top and bottom.
This means, a significant portion of the image on projection ends up being a small area. So a lot of the data we transfer is for an insignificant portion of the projection. This either results in a need for a higher sized image for sake of quality. Or in a reasonable quality image, the part that matters have to suffer a loss in quality, whereas the poles will have a better quality, despite not being the significant portion in the projection.
Here comes skyboxes, a skybox is an inside of a cube, and we have image projected to each face of the cube.
In the skybox, the artics now occupy a small portion in two images, as how it would get projected in the end. This mathematically is converting top 25% to one side of a cube, and bottom 25% to occupy another face. i.e a compression of 50% to 33%. Which let the other 50% of the equirectangular projection to be able to use 67% against previous 50% if the projection was equirectangular. This is a huge gain in the image size that is transferred across network and also we can preserve the quality of the parts that matters in the image.
There are other advantages for skyboxes vs. equirectangular, though irrelevant in case of displaying 360 degree pictures, I will list them below
- Less polygons required in the mesh that uses the texture
- Computationally efficient
- Free from distortions, which are noticeable in case of any movement with camera
- Viewpoint independent
The world of projections are interesting, we will discuss about different projections in detail in another blog post soon.