Technical Notes

The information below covers the equipment and techniques used to create the panoramas found on No claim is made that any of this represents the best way to do things. This is just the way things have ended up being done after a long process of learning and experimentation.


Each panorama consists of six to twenty-seven individual images stitched together using PTgui Pro. Each non-WebVR panorama was converted to a 360 degree HTML5 or Flash image and linked with its neighboring panoramas using Pano2VR Pro. Pano2VR does not support the WebVR format at the time of this writing so the WebVR panoramas were created using Krpano.


The following links provide more information on these excellent packages:

            PTgui Pro


            Pano2VR Pro




Photographic Equipment

The equipment used to take the pictures has been evolving over time:


            April 2012

·        Olympus E-PL1 with 14-42mm kit lens

·        home-made panorama adaptor


            May 2012

·        Olympus E-PL1 with 12mm f2 M.Zuiko lens

·        home-made panorama adaptor


            November 2012

·        Olympus E-PL1 with 12mm f2 M.Zuiko lens

·        “Nodal Ninja 3 + Mk II Rotator” panorama adaptor

·        Gitzo GT0531 tripod


            March 2013

·        Olympus E-PL5 with 12mm f2 M.Zuiko lens

·        “Nodal Ninja 3 + Mk II Rotator” panorama adaptor,

·        Gitzo GT0531 tripod


November 2016

·        Olympus Pen-F with 12mm f2 M.Zuiko lens

·        “Nodal Ninja 3 + Mk II Rotator” panorama adaptor

·        Gitzo GT0531 tripod


Click on the “Links” tab above for more information on this equipment.

The Olympus 12mm f2 M.Zuiko lens’ ability to focus manually using the distance scale on the lens barrel is a real plus for shooting panoramas, where consistent focus through the sequence of shots is essential. The associated depth-of-field scale is also extremely handy. The lens is the equivalent of a 24mm lens in 35mm terms, though, so it is no fisheye.

Panorama Types

There are two types of panoramas on cylindrical and spherical. A cylindrical panorama is a 360 degree horizontal strip that has limited vertical coverage. With the equipment listed above, it can be produced with 6 “landscape” orientation shots or 8 “portrait” orientation shots. A full spherical panorama, on the other hand, provides not only 360 degree horizontal coverage, but also full 180 degree vertical coverage from the sky above to the ground below. New spherical panoramas for are produced from 27 shots (3 rows of 9 portrait orientation pictures taken at vertical angles of 60, 0, and -60).

The oldest panoramas on are mainly cylindrical. The Blue Mountain collection is an example. Cylindrical panoramas are the easiest to create and require the least sophisticated equipment. Acquisition of the Nodal Ninja opened the door for creating spherical panoramas. That device is used to insure proper alignment of the lens when shooting the multiple rows of pictures that are used to generate a single spherical panorama. It took a while to learn how to use it to its full potential, though. As a result, many of’s panoramas are what could be called “partially spherical”. They provide increased vertical coverage but not a full 180 degrees. The San Timoteo collection is an example. Eventually, the techniques for producing full spherical panoramas were mastered, producing results like the Lincoln Shrine interior shots (which are about as good as it gets on this site!). In general, the plan is to use the full spherical approach for all future work.

Panorama Formats

Most of the panoramas on this site are in Flash format and can only be viewed by a browser that supports Flash. Since Adobe is no longer supporting Flash on many mobile devices and tablets, that can present some problems. The newest panoramas on this site are in HTML5 format, which should allow viewing on a much wider variety of devices. The plan is to use HTML5 format for all future work.

Taking the Pictures

All camera settings are placed on “manual” when shooting the base images that go into a panorama. That includes shutter speed, aperture, ISO, white balance, and focus. Image stabilization is turned off since a tripod is always used. An aperture of f8 and an ISO setting of 200 were used almost exclusively, which gives good depth of field and relatively low noise. White balance is set at the beginning of a shoot based on conditions and doesn’t usually need to be adjusted again after that. Focus is typically set by aligning the infinity symbol on the rotating part of the lens barrel with the f5.6 depth of field mark on the fixed part of the lens barrel. The f8 mark could be used but that might be cutting things a little close. A two second delay is set to minimize camera shake after pressing the shutter button. One pleasant side-effect of all these manual settings is improved battery life.

The exposure is typically set by adjusting the shutter speed only. The goal is usually to keep the brightest parts of the scene from being more than about two thirds of a stop over-exposed and/or the main subject area spot on. If that leaves the shadows too deep, then post-processing is done on the completed panorama to selectively brighten up just the darkest areas. Photoshop Elements does a decent job at that.

As mentioned above, 3 rows of 9 shots are used to make a full spherical panorama. The Nodal Ninja provides click stops to make cycling through each set of 9 shots quite easy. The vertical angles of 60, 0, and -60 are manually set.

The typical checklist for shooting a panorama in the field is:

1. The tripod is set up and a compass is used to align the first picture to north.

2. The tripod is leveled using the bubble level on the Nodal Ninja. It helps to remember that the bubble points to the leg or legs that need to be lowered.

3. The exposure is checked for both the brightest and the central parts of the scene and the shutter speed is adjusted as needed. This step is skipped if conditions are about the same as for the previous panorama.

4. The Nodal Ninja is set to a vertical angle of +60 degrees and a sequence of 9 shots is taken.

5. The Nodal Ninja is set to a vertical angle of 0 degrees and a sequence of 9 shots is taken.

6. The Nodal Ninja is set to a vertical angle of -60 degrees and a sequence of 9 shots is taken, trying to remember to keep feet and shadows out of the scene.

7. Optionally, a 30 second sound clip is recorded using the camera’s sound annotation feature.

8. Occasionally, a realization occurs at this point that one of the earlier steps was overlooked or done incorrectly, resulting in a curse, a reevaluation of the merits of panoramic photography, and then going back and doing it all over again.

Shooting a long sequence of panoramas for a virtual hike can be a bit tedious, requiring about forty panoramas and around two hours for each mile of trail.

Creating a Panorama

Back on the computer, the following are the latest (May 2014) steps used to create each spherical panorama:

1. The 27 shots that make up a panorama are placed into a folder of its own.

2. The images are checked to make sure they are all right-side up!

3. The 27 shots are brought into PTgui Pro using the “Load Images” button on the Project Assistant tab.

4. The “Align to Grid…” option from the Project menu is selected. A grid of three rows by nine columns starting in the upper left is specified and then the Apply button is pressed to organize the images.

5. The “Align images” button on the Project Assistant tab is then used to do the initial stitching together of the images.

6. The Panorama Editor window is used to inspect the alignment. The “Show Seams” button is handy for seeing where the images are being joined.

7. If there are obvious stitching errors, like a discontinuity in a tree branch or sidewalk, they are typically fixed either by manually adding more alignment points using the Control Points tab or by applying masks using the Mask tab. Mask changes are applied automatically but the Optimizer must be run to see the effect of additional control points. One thing that helps sometimes is to manually delete some of the control points that are automatically created around the pano head. Not sure why, but in certain panoramas they seem to throw off the alignment of the other images.

8. Once any alignment errors have been fixed, the “Create Panorama” tab is selected. For my camera setup, the displayed width usually ends up being a bit over 20,000 pixels. Lately, I have been setting it to 20,000 even. That seems to work well with a tile size of 625 in Pano2VR. After setting the size, either the “Create Panorama” button or the “Save and send to Batch Stitcher” button is used to create the actual panorama file. Jpeg format is usually used for panoramas. Tiff is used sometimes to try to maximize the image quality but a 20k pixel by 10k pixel tiff image comes out at more than a gigabyte, so it really eats up the disk space.

9. The panorama is carefully inspected for stitching errors. These are usually fixed by going back to step 7. On rare occasions, really stubborn stitching problems are addressed using surgical cut and paste operations in Photoshop Elements. That is only done as a last resort because it can produce images that aren’t totally true to life. A portion of the upper trim that runs under the roof line at the rear of Bidwell Mansion is unfortunately an example.

10. If there are shadow areas that need to be brightened up in the panorama, or other exposure adjustments that are needed, Photoshop Elements may be used to do that at this point. If a nadir patch is going to be applied later to remove the tripod, though, it’s best to wait until after that is done before performing any image processing.

For most of the panoramas produced in 2013, the “Convert to QTVR/Cubic…” option from the PTgui Tools menu was used. Starting in 2014, though, this step was determined to be unnecessary for spherical panoramas and is no longer performed. The description of this obsolete step that follows is included in case it may be of use to anyone. In the “convert” dialog box that appears, the “Add Files” button is used to specify the panorama. The “Cube Face Strip (6x1)” option is selected from the “Convert to” dropdown list. Jpeg is typically used as the output format. The “Automatic” check box is unchecked and then a cube face size of 4160 is specified. Note that 4160 is evenly divisible by 520, which will be used later in Pano2VR as the tile size for the multi-resolution option. Another note: specifying a significantly larger cube face size here is not allowed unless TIFF is used as the output file format. After some experimentation, using a larger cube face size and tiff did not end up producing any significant improvement in end resolution (although it might very well do so for a higher megapixel camera).

Converting a Panorama to HTML5 Format

(coming soon)

Converting a Panorama to Flash

The spherical panorama file produced by PTgui is converted to a 360 degree web-viewable Flash file using the following (2014) steps:

1. In Pano2VR, the “Select Input” button is used to begin the panorama import sequence.

2. In the pop-up “Input” dialog box, the “Type” is set to “Equirectangular”. The Panorama “Open” button is used to browse to the “jpg” output file from step 10 above.

3. Once the file has been selected, the “OK” button loads it in.

4. The “Modify” button in the Viewing Parameters box is used to set the max field of view to 50 degrees. This minimizes distortion at maximum zoom-out but is definitely a matter of personal taste.

5. The initial view for the panorama is selected in the Viewing Parameters box by panning (and possibly zooming) the displayed panorama image.

6. The “OK” button is used to return to the main Pano2VR dialog box.

7. A Flash output is created using the Add button in the upper-right corner.

8. The “Parameters” button is used to bring up the “Flash Output” dialog box.

9. Under the Visuals tab, “Enable Transitions” is checked but the “zoom in” and “zoom out” options are unchecked.

10. Under the Multiresolution tab, the Enabled box is checked and the “no” response is selected when it asks to automatically add levels. The tile size is set to 625 and then the “Enabled box is unchecked again. This is just a way of setting the tile size before the levels are created. Doing this in a fresh session and then using the “Save as Default” option under the File menu avoids having to do this every time.

11. The Enabled box is checked one more time and this time the “yes” response is selected when it asks to automatically add levels.

12. It creates three levels. A fourth one is added manually, which gets assigned a resolution of 625 pixels, the tile size.

13. The “Load at Startup” option box is selected for the last level and then the Flash Output dialog box is exited.

14. The “yes” option is selected when it asks to create the output swf file.

15. At this point the panorama can be viewed by double-clicking the html file that was created in association with the Flash swf file.

16. The Flash spherical panorama is inspected for stitching errors. Some will only show up at this point. Fixing them usually means going back to step 7 in the “Creating a Panorama” PTgui sequence.

17. Once a clean Flash panorama has been obtained, a patch may be created to hide the tripod. This is done using Pano2VR’s “Patch Input” button. It brings up the Patch Panorama dialog box, whose Add button is used to bring up another dialog in which panning and zooming to the tripod identifies the area to be patched. At that point the “OK” button is used to create a TIFF patch file. That patch file is then opened in Photoshop Elements and the tripod is edited out, either by overlaying an image of the ground that was taken after the tripod was moved, or by cutting and pasting portions of the ground image from near the tripod over the tripod. The former approach produces the best results but it can take a bit of work to get it right. The updated patch file is then integrated with the panorama when the “Update Image Patches” dialog appears when exiting the Patch Panorama dialog box. One other variation is used when it’s not possible to cleanly patch out the tripod. The Pano2VR patch interface can be used to create a very nice looking mirror ball over the tripod head. Just choose “mirror ball” for the patch type and skip having to export and edit a patch file. One word of warning, once you have created a patch, don’t do any further exposure adjustments on the original jpeg or the patch image will be out of sync.

Some of the above options are actually saved away as defaults so they don’t have to be specified each time. They are listed out here to simulate a first-time-through experience.

Linking Flash Panoramas into a Collection

Once a set of clean spherical panoramas have been obtained, they are linked together using Pano2VR’s hotspot capabilities:

1. For each panorama being linked, its associated Pano2VR project file is opened in Pano2VR.

2. The “Modify” button in the Hotspots block is used to open the Hotspots dialog box.

3. The panorama image is panned around to the location where a link to an adjacent panorama is desired.

4. Double-clicking on the image creates a new hotspot.

5. The skin-id is set based on a custom skin used by

6. The URL is set to the name of the target Flash panorama, for example “pc005.cubic_out.swf”.

7. The horizontal angle of the initial desired view for use when transitioning to the new panorama is set in the “Target” box. That angle is obtained by replicating the view in the other panorama’s Viewing Parameters window and then noting the “pan, current” setting in the upper-left corner.

It should be noted that Pano2VR Pro has some interesting new capabilities to simplify the process of linking groups of panoramas. hasn’t started using these new techniques yet but they promise to make the process of linking panoramas into a virtual tour a much less time consuming task.

Creating Panoramas for 360Cities

360Cities ( offers panoramic photographers a place to display their work. Free accounts are available but advertising is displayed along with the panoramas. For a yearly fee, one can upgrade to a “Pro” account and either turn the ads off or earn a portion of the ad revenue. Panoramas are submitted as Equirectangular jpeg (.jpg) files. This is the same format produced by the PTgui steps outlined above but better results can usually be obtained by going into Pano2VR and performing a nadir patch. Pano2VR can then be used to export an Equirectangular jpeg by choosing the “Transformation” output option, specifying the “Type” as Equirectangular, specifying the output image size to match the size generated by PTgui, and then selecting jpeg output. One important thing to watch out for: don’t use the “default view” if the tilt or roll settings are non-zero. That can result in a warped looking output. Uncheck the “Use default view” box and set the tilt and roll to zero before doing the export.

One of the attractions of posting to 360Cities is that many of the panoramas placed there are in turn posted on Google Earth.

Creating Panoramas for Google Maps/Views

At the time of this writing, Google is accepting spherical panoramas for publishing under Google Maps (through a companion interface called Google Views). They call their panoramas “photospheres”. A lot of the information they provide on the interface is oriented towards the users of panorama-capable smart phones. These phones make it easy to create a spherical panorama but some of the results obtained seem to be of poor quality. The traditional photographer can submit high quality spherical panoramas by uploading Equirectangular jpeg files. All you need is a free Google Plus account. So far, submissions have been processed quickly and typically end up on Google Maps within a day or so (not counting weekends).

There are some technical issues to be aware of. There are size and dimension limits on the image, although I haven’t been able to find where they are documented. My default images are too big (20,000 by 10,000). I have found that downsizing to 14,000 by 7,000 seems to work reliably.

The jpeg file must also be tagged with some special metadata before it is uploaded. I use the following steps to add it:

1. Open the jpeg file in Photoshop Elements.

2. Resize the image to 14,000 by 7,000 if it is bigger than that.

3. From the drop-down File menu, choose “File Info”.

4. Under the “Description” tab, fill in the Author and Copyright Notice fields, as desired.

5. Select the “Export” option from the selection box at the bottom of the panel (just to the right of “Preferences”). Use it to create an “.xmp” file with the metadata.

6. Open the “.xmp” file in Notepad (or any other text editor).

7. Add the following block of lines just before the second to last line of the file:

      <rdf:Description rdf:about=""



         <GPano:StitchingSoftware>ptgui pro</GPano:StitchingSoftware>


















8. Edit the following fields in the above block as needed:

     <GPano:StitchingSoftware>ptgui pro</GPano:StitchingSoftware>

     <GPano:PoseHeadingDegrees>190.0</GPano:PoseHeadingDegrees>  - the compass heading at the center of the image

     <GPano:InitialViewHeadingDegrees>190.0</GPano:InitialViewHeadingDegrees> - the compass heading of the initial view

     <GPano:InitialHorizontalFOVDegrees>75.0</GPano:InitialHorizontalFOVDegrees> - initial field of view




9. If your panorama isn’t 14000 by 7000, adjust the size references accordingly.

10. In the text above the added block, specify the creation date in the following line. This creation date should show as the “date taken” in the jpeg properties.


11. Save the file and use the “Import” option on the Photoshop Elements File Info panel to bring the updated metadata back into the jpeg.

12. Confirm the updates went in ok by inspecting the “Raw Data” tab.

13. Click “OK” to exit the File Info panel and then save your updated jpeg file.

14. Use the File Upload option under the Photos tab of your Google Plus account to upload the photosphere jpeg file. 

15. Once the upload is complete enter a caption and click “Done”. You’ll be asked if you want to share the picture. You don’t have to if you just want to go to Google Maps.

16. You can view the panorama at this point but don’t be upset if the quality seems poor and some straight lines seem crooked. The panorama viewer that’s used later in Google Maps/Views does a much better job of rendering things.

17. This is a good time to locate the panorama on the map. This is done using the interface provided under the File Details option. A longer title can also be specified at this point. For some reason the initial caption field presented immediately after the upload seems to have a fairly short maximum length allowed.

18. To upload the panorama to Google Maps/Views, go to this link “” and click the Add Photo option at the top. It will walk you through the submission process. If you didn’t specify the location of the photosphere earlier, you can do so at this point. A location must be specified before the photosphere will be accepted for Google Maps.

19. Once you have submitted your first photosphere, you’ll be given a home area under the Google Views. You can typically view your submitted panoramas here after only a short delay, if not immediately. It may be overnight before they appear under Google maps. You’ll receive an email indicating when they are accepted. There is an option in your Google Views settings that specifies how often these emails are sent. Choose “daily” for prompt notifications.

Admittedly, this is a lot of hoops to jump through. Reportedly the Google Plus “auto awesome” feature may now eliminate the need for the manual steps described above which supply the metadata, but I haven’t tried that and I’ll probably just stick with this approach for now.

Photosphere rendering quality using the Chrome browser seems good and 14000 by 7000 is still big enough to convey a lot of detail. Unfortunately, some photospheres encounter rendering problems when viewed with Internet Explorer (some straight lines going a bit wavy). I haven’t tried Firefox yet.

One other thing to note is that the Google Maps photosphere viewer allows a broader zoom-in range and can display more detail than the photosphere viewer used with the Google Views interface.