Creating virtual 360 Panorama
Everybody knows how important the visualization and its role is in presentation of the design to the end user with nice photorealistic images. How is easy the understanding between the client and the designer when there are no need in explaining and thinking over drawings, plans, sketches, elevations and other raw technical information... But what if just the series of static images is not enough? What if the client wants a greater sense of presence and volume than the 2d bitmap images, while doing the animation is impractical because of the significant time and computational costs? The answer to this rhetorical and quite topical question is the pseudo three-dimensional representation of 2d images using 3d interactive panoramas technology. Such a presentation will let us see a three-dimensional picture of the visualization using the virtual camera, turn it and watch for any point around the full 360 degrees, as well as zoom in and out.
(Click on the image and rotate it in any direction while holding the left mouse button)
In fact, at first glance an interactive panorama consists of a three-dimensional cube, which has a stretched texture over the each side with a specific distortion (the projection of the sphere to a cube), and inside the cube is a virtual camera from which the panorama is observed.
The textures are stretched over the cube so, that seams on its corners are not visible and the illusion of the integrity of the image is created. But actually this image consists of six separate conjugating pictures, the one per each cube face. The pictures on the faces of the cube, in turn, cover all 360 degrees from the point of view. All the front, right, rear, left, up and down sides. The only feature on which we should pay attention to is the fact that the pictures, stretched over the faces of a virtual cube, should not be just flat shots of the six sides from the point of view. They must be the projections of the sphere on the cubes faces, with a sphere diameter equal to the diagonal of the cube, causing these images have the corresponding distortion.
The whole process of creating a 3d panorama is to make these conjugating texture images. Then to stitch them to the image of a special format, the so-called cubic projection.
When the cubic projection is ready, we need to stretch it over the 3d-cube and turn it to an interactive panorama using highly specialized software.
The spherical 3d panorama has long been used in modern photography. Theoretically, the most trivial way of creating a panorama is the photographing the environment from a single point (nodal point) in six directions: front, rear, right, left, bottom, top. Then the received images are stitched to the cubic projection and converted to the interactive 3d panorama. However, in practice, the getting good conjugating six shots is almost impossible and even more so, if they are the pictures with the necessary distortions (the projection of the sphere to a cube), what leaves such a way only in theory.
In practice, the other methods of creating an interactive panorama are preferred. They are the ones that produce an rectangular projection image, which was projected on a sphere, the so-called equirectangular (also known as equidirectional) projection. The simplest example of an equirectangular projection is a map projection, which allows to put the image of the planet Earth sphere on a world rectangular map, as if unrolling its round surface on a rectangular sheet of paper.
There are several methods for obtaining the equirectangular projection.
For example, one method is in photographing the environment around the point of view with the series of images, that cover all 360 degrees of space.
Then, with the help of special software and manual retouching in raster editor the photographs are stitched into the equirectangular projection.
The other way is to get the sphere projection by photographing the environment using a special lens, the so-called fish-eye with the viewing angle of almost 180 degrees, which is equivalent to the projection of a hemisphere of the environment to the plane. Then to make the series of shots (two and more), getting an image covering 360 degrees.
Or to take pictures of the mirror ball with a wide-angle lens to obtain similar images of hemispheres in 180 degrees. Then, as in the first case, with the help of specialized software stitch these images, getting all the same sphere projection.
When the sphere projection is obtained, then it is converted directly into a cubic projection for the next stretching over the virtual 3d panorama cube.
So to create an interactive panorama we must obtain a cubic projection and pull it to the virtual 3d panorama cube.
By analogy with the real photography, theoretically it can be done in 3d graphics by just rendering the front, right, rear, left, up and down from a same point, thus covering all 360 degrees of view. Then the cubic projection is get from the obtained renders for converting into a virtual panorama.
And again this method is very inefficient in practice.
First, for its implementation we need to install six cameras (or animate a camera), ideally positioning them in six different directions and make six renderings.
Secondly, the thus obtained renderings will have imperfect conjugating at the seams when stitching them into a cubic projection.
This is due to the specifics of rendering programs, exactly because of the randomness of the result. In particular this effect present in the adaptive render engines, based on the theory of Quasi-Monte Carlo, which is based on principles of sampling the most significant for the overall result values and cutting off the less important ones (the Buffon's Needle principle).
Surely the result of calculations obtained this way will have a significant share of inaccurate regions what will give the high variegation and hardly matched images. We surely can simply tune up the quality settings of the render to increase the uniformity of image, but this will inevitably increase the computing time.
Thirdly, as a rule, the main mistake is that in this case the obtained renderings will not be the projections of the sphere to a cube as mentioned earlier, but will be usual flat images of the environment from six different cameras. In this case the squareness of the panorama will be visible because of clearly evident virtual cube edges. Even if we set a camera angle to 90 degrees, this method is not convenient.
There is also another method for getting the cubic projections by rendering the scene with a Box camera type. The result of this rendering would be a vertical cubic map, the so-called Vertical Cross.
Unfortunately, even this method is inconvenient because of the need to transform Vertical Cross map using a bitmap editor to the needed type of the cubic projection, named Horizontal Cross.
Given the above, the more rational and quite correct for both photos and 3d graphics is a way to create interactive panorama from an equirectangular projection.
Further, the process of creating a virtual panorama will be described on the example of 3d editor 3ds Max 2008 and render-engine V-Ray 1.5 with a description of some features of this particular software. However, all the described principles are absolutely true for any other 3d software that have the ability to make a render with a spherical camera with a viewing angle of 360 degrees. Therefore, if you need to create a panorama using an alternative modelling or rendering engine, you should simply omit the specific characteristics of work with 3ds Max + V-Ray and apply these techniques for creating interactive panoramas in any other similar software.
To create an equirectangular projection of a three-dimensional scene in 3ds Max + V-Ray it is necessary to render it from a given point a camera with a 360 degrees viewing angle. Unfortunately, the V-Ray 1.5 renderer specialized VRayPhysicalCamera does not support the viewing angle of 360 degrees and has no mode of a spherical camera. To obtain an equirectangular projection the standard 3ds Max camera should be used only.
If the scene is initially configured to work with VRayPhysicalCamera, then for using a standard 3ds max camera the scene should be reset using a few simple techniques. The details of the switching from a VRayPhysicalCamera the standard 3ds Max camera can be found in Switching from VRayPhysicalCamera to standard tip.
The standard 3ds Max camera has a built-in adjustable angle, but it is not spherical and the maximum angle which can be set there is 175 degrees.
To work around this limitation, V-Ray renderer has a special tool that enhances the standard camera.
All changes made with this tool do not appear in the 3ds Max viewport and will be visible only on the rendering.
To access this tool we should find in the V-Ray tab of Render Scene: (F10) dialog a rollout named V-Ray: Camera. There under the Camera type in the Type drop-down menu select Spherical type of camera. Thus, the standard 3ds Max camera becomes spherical. We must then activate the Override FOV, checking a checkbox next to it for replacing the angle and set in already active FOV field of the desired 360 degrees value.
A special feature of an equirectangular projection is a fixed aspect ratio of two to one.
To get a correct image of the projection we should set the aspect ratio of 2:1 for the final rendering. To do this, go to the Common tab of the Render Scene: (F10) dialog box and in the Output Size section, set the value of Image Aspect equal to 2. Also, we should click on the icon of a lock for that, when setting the pixel value of one side, the second one is set automatically and retained the right proportion between the width and length of the picture.
When all the above settings are made, we can safely proceed to the rendering, the result of which will be treasured equirectangular projection.
The rendering should be saved in standard raster formats such as jpg, png and so on. If, for example, the post-processing is required, then we can save the rendering in any convenient format, hdr, exr, etc. However, when all the necessary changes are made, we must convert or resave the image to an any usual bitmap format.
Now, since we have the equirectangular projection image in a standard raster format, we must proceed directly to the creation of interactive 3d panorama by converting an equirectangular projection to a cubic and stretching it over a 3d interactive panoramas virtual cube.
There are several special programs for these purposes, particularly the Pano2QTVR. The main positive feature of this program is that creating a panorama goes automatically, unproblematic to the user and saves him from the need for prior conversion equirectangular projection to a cubic and from the other extra work.
Download and licensing of this program are available directly on the developers site:
In addition, there is a demo version, which differs from a fully functional one by supporting the only QuickTime format.
After starting Pano2QTVR, the Start tab opens automatically and offer to create a new project or open an existing one.
To create a new project we must click on the large horizontal button Create a new Project and specify a name and a path for the new project in the new opened window.
This should open a tab Project, which we should provide with a path to an equirectangular projection by clicking on the button with the ellipsis next to the field Equirectangular image and selecting the desired image on the disk, namely the previously obtained spherical rendering.
Then down in the Output format list, select the format for future panorama.
If the panorama will be presented on the screen, the QuickTime video file with extension mov will be an excellent choice. For choosing it, we should specify the value of QuickTime in the Output format dropdown list.
If we want to publish the panorama on the website page, the flash file with a swf extension is perfect. For choosing it, we should specify the value of Flash in the Output format dropdown list.
When a file of the equirectangular projection is selected, the format of the future panorama is specified, the last thing to do is click on the button Create next to Output format to start the process of creating panorama.
When we click Create, the tab Console will be temporarily opened where we can observe the logs of the conversion and after creating, the program will return to the Project tab.
Panorama is ready now and is in the folder, which we have specified before.
If we need to change the default setup of the panorama, such as resolution of the panorama window, the compression ratio, etc., it can be changed using the functions located in the Settings tab.
Interactive panorama is a really good thing. It is worth to be considered not only as a final product for the customer. Its special charm is on the draft rendering stage. With the panorama there is no need of messing about different camera angles trying to cover all elements of the environment to check for errors and compliance with the brief requirements. Panorama is a great tool for synchronization and approval of renderings, for selection of the camera angles of the final renderings. It completely eliminates the need to create multiple frames of a scene on the stage of previews, what can save a lot of time not only in setting the scene, but on the actual computing process for a large number of images.
All have fast renderings and beautiful panoramas! :)
Questions and suggestions regarding this tutorial please leave in comments.
The tutorial is written and prepared by:
Anton (RenderStuff)3d rendering artist at Ren3d with more than eight years of experience in photorealistic 3d rendering. Author of all RenderStuff rendering tutorials and much of the CG images on this site.
Your questions and suggestions regarding this tutorial feel free to write in comments below.