Inverse Panorama or Object Panorama

Written by Paul Bourke
November 2018

Bulgarian translation by Zlatan Dimitrov
German translation by Maximilian Neumann
Uzbec translation by Sherali Niyazova.
Swedish translation by David Mucchiano.
Spanish translation by Laura Mancini.
French translation by Laura Beoschat.
Dutch translation by Justin Watson.
Azerbaijanian translation by Amir Abbasov
Catalan translation by Chema Bescos

Cylindrical panoramas are well understood and widely used to capture a limited vertical field of view but a full 360 degrees horizontally. They are typically formed by rotating a camera about a single point. While the practical method may vary, conceptually each camera position captures a narrow vertical slit, all the slits are aligned one after the other.

Here I present object panoramas, or because they can be considered as a traditional panorama capture but inverted, inverse panoramas. Specifically, instead of a central camera and external scene, here we have a camera moving around an object looking inwards. One way to create such object panoramas would be to take a perspective or orthographic image while the object rotates. A single vertical slit from each photograph can be placed side-by-side to form a continuous image (assuming correct slit width). This is essentially the same as a so called slit scan photograph.

Another way to view this is as a multi-perspective rendering. Each pixel in the image corresponds to a camera position, in the case of a cylindrical object panorama all the cameras (one for each pixel) are horizontal and are directed to a central axis line.

Decorative lamp post, Swanston St, Melbourne

In the examples shown here, a 3D textured model is used to demonstrate the result. However real objects can be used by placing them on a motorised turntable and filming with a video camera followed by the slit scan approach described above for each frame of the video.

Diotima statue, The University of Western Australia

Like traditional panoramas, these also wrap in 360 degrees, the left edge is adjacent to the right edge.

Lions statues in front of the Duxton hotel in Perth

The images created here were the authors own code that, for each pixel in the output image, the corresponding ray is computed (position and direction). That ray is then intersected with all the triangles in the model (OBJ file), once the closest (first) intersection is determined the colour is looked up given the uv coordinates and the texture image.

The new (and exciting) "mesh_camera" in PovRay can be used to achieve the same thing. This camera allows one to specify the camera ray position given the triangle in a mesh{}, the direction of the ray is determine by the normal (so all triangles must be ordered consistently) although the ray can be flipped with the sign of the z coordinate in the direction directive.

object { 
   #include ""
camera {
   mesh_camera {
      #include ""
   location <0,0,0>
   direction <0,0,-1>

Mother Teresa in the St Mary's Cathedral Perth

It should be noted that on the surface one might imagine these could be created with a standard cylindrical panorama rendering from the centre of the object. But in that case one would be mapping the interior, not the exterior. One difference are structures that might be visible from the outside but are occluded by other structures on the interior, for example, concave parts of the model.

Spherical (Equirectangular) panorama

Of course one is not limited to a cylindrical panorama, a full equirectangular panorama can equally be generated. Each pixel corresponds to a ray origin on a sphere, the ray direction is towards the center of the model.

These models were created from 3D reconstruction and the base has not been closed. The hollow nature is the cause of the apparent defects in the lower part of the image.

Cylindrical texture generation
April 2023

The technique can also be used to create cylindrical texture maps that automatically tile across the left and right edge. The three examples below show a horizontal band of the tree trunk unwrapped and laid flat.