Hello, everyone! In this blog post, I want to show you the pattern used to interleave 8 images to produce autostereoscopic content suitable for games.
The department which granted me the scholarship bought years ago an 8-view autostereoscopic TV. Such TV had some software that allowed the creation of content such as 3D photos, or 3D videos but not games and that is what we and the project aimed for. Since there was no information about the way in which the manufacturers interleaved the eight images into one in 3D, we had to come up with a way of guessing how it worked. We tested several ways of obtaining the pattern for interleaving until we obtained something that was 99% valid. So to be clear, the pattern is valid for this TV display, do not know if other displays use the same distribution.
Figure 1 and Figure 2 show the before and after of the process. In Figure 2 some diagonal slanting can be seen, that slanting is where each of the lenses will be placed.
For the sake of clarity let’s just abbreviate to 4×2 and interleaved for the image of images and the final images.
The pattern obtained looks like this:
Here are some certainties about the pattern.
- Each three numbers represent 3 values. The R, G and B obtained from the pixels of the views/images that are stated in the pattern .
- Each number represents an access to a pixel of the 4×2 image.
- Each 3 rows of the 4×2 image contain the color information of one row of every image of the 4×2 image(let’s say, for example, the rows: 1,2 and 3 of the interleaved image contain the color information of the very first row of each of the eight images that create the 4×2 one.
- The interleaved image and the 4×2 have to have the same pixel density. For instance, if the 4×2 image is a 1440×1440(=2073600) image the interleaved one must be something which density equals to 2073600 pixels. The standard HD resolution 1920×1080 fits this requirement.
- Each image of the 4×2 image must have the same resolution. In the previous example, each image would be 720×360. 720x360x8 = 2073600 pixels
With this in mind, we can start thinking of ways of interleaving the image:
- Just make some data structures and arrays of pixels and access them in some sort of manner that gives that pattern.
- Open the magic spell book of shaders and try to guess the pattern trio given a UV coordinate.