Oct 16
Creating Panoramic HDRs
- Upon request I’m posting a tutorial on creating a panoramic HDR image for use in your CG applications. Read on for the info.

Up first I’ll list the hardware and software I use to create the HDRs:
- Camera = Canon 60D
- Camera Lens = Sigma 4.5mm F2.8 EX DC HSM Circular Fisheye Lens for capturing the images to build the HDR.
- Tripod = Proline with ball head
- Controller = Promote Control
- Software = PTgui
You certainly don’t need to use the exact same hardware for this. Use whatever camera/lens/tripod combo you prefer. However, I do strongly recommend PTgui for stitching the images together. I also really like the Promote control device as it makes the capture process very simple.
With the equipment/software list out of the way, here’s the process:
- Attach the fisheye lens to the camera and mount the camera on the tripod.
- Configure the fisheye lens to manual focus and dial the focus ring to the infinite setting. NOTE: Make sure you check the actual focus because you’ll probably find the ‘sweet spot’ to be a little off the actual infinite focus mark. See image below for reference. The image below is of a 10mm lens, but the focus and manual/auto switch look the same.

With the lens configured and focused properly you’ll need to connect the Promote Controller. Why use the Promote Controller? I use it because it allows me to capture multiple exposures at the touch of a button. You can use your camera’s built-in bracketing function, but most are limited to 3 or 5 steps. That won’t give you as much lighting data to work with when constructing (and using) the HDR.
So at this point you should be ready to shoot with the fisheye lens mounted to the camera, the camera mounted to the tripod, and the Promote controller connected to the camera. Power up the camera and the Promote control device and place the camera in manual shooting mode. By placing the camera in manual shooting mode the Promote control device can control the cameras actions.
NOTE: I also like to set a relatively low ISO (100) setting on the camera and use a daylight color setting (close to 6500k) as that seems to provide fairly natural colors.
I set the Promote controller to High Dynamic Range mode and configure the number of steps I want (I usually use 1.0) and the number of exposures as well as the mid point exposure. I won’t go into much additional detail on that because you’ll have to configure that to whatever you want to use and is allowed by your camera’s settings and options.

Before shooting I level the camera. I just use simple spirit level that is built into my tripod. If your tripod (or camera) doesn’t have levels then you may want to get a spirit level that plugs into the flash hot shoe connection point or something similar.

With the camera level I hit the start button on the Promote control device to start the capturing process. The camera is set to save both JPG and RAW files. I rarely use the raw files for the HDRs but it’s good to have just in case I want to make any adjustments or try to squeeze a little more lighting data out. Once the Promote controller has completed the captures I rotate the camera 90 degrees, level the camera, and start the capture process again.
I do this four times total: 0 degree, 90 degree, 180 degree, and 270 degree angles. I could use less, but this seems to provide plenty of overlap data for PTgui to easily stitch the images together.
Here’s what one of the fisheye frames looks like:

Alright, so now the captures are complete. At this point I will swap out the fisheye lens for a non-fisheye lens (or use a different camera) so I can capture some matching back plate images of the location:

Now that I have the fisheye images and the back-plate images I’m ready to build the HDR and use all of this in 3ds Max (or whatever application you prefer). Thankfully PTgui makes building the panoramic HDR a breeze. First fire up PTgui and click the “load images” button.
Then point it to the folder that contains the fisheye captures. Select all the fisheye images that you want to use to build the panoramic HDR.
Once the images are loaded, click the “Align images” button.
As PTgui analyzes the images it will prompt you to select what you want to do with the bracketed exposures. I use the “Enable HDR mode and link the bracketed images” option as well as the “True HDR” exposure mode:
Once I make those assignments I click the OK button and PTgui begins creating the panoramic image. Once it’s compiled (doesn’t take long), I save both a JPG and HDR version of the image. I use the JPG for a simple preview of the file and of course the HDR to use in our beloved 3d applications.
Presto, Bingo, a panoramic HDR is born:

Obviously I didn’t spend any time removing my stupid shadow from the image. You can do that with Photoshop or whatever application you prefer if you like…or just be lazy like me and leave it in.
As you can see this whole process is remarkably simple. The downside with this particular process is that the size of the HDRs I create is rather low resolution. The final HDR’s are usually in the 5k range. That’s not a huge issue for me at the moment because I will typically use one of the back plates for my final render background instead of the HDR itself. I haven’t noticed a lot of distortion in my reflections due to the fairly low (or medium sized I suppose) resolution HDR.
That being said, if you plan on using the HDR for your background instead of a back plate, you will probably run into problems with the resolution provided by this method. If that’s the case then you may be better served by using a wide lens, full frame sensor camera, and something that will allow you to rotate the camera around the lens nodal point. I think that process may be more expensive in terms of hardware required and time spent capturing the HDR data but should provide a much higher resolution HDR file.
Here’s a render using the files (click for larger resolution):
And here’s the HDR and some of the backplates as well if you’d like to try them yourself.
NOTE: In the file archive I provided lens data for the back plate images to assist with camera matching. However, I forgot to multiply the focal length by 1.6 since my camera has an APS-C sized lens. So you’ll want to do that to match the lens setting of the back plates.
Miscellaneous info:
- The camera I use (Canon 60d) has a shutter speed limit of 1/4000. That isn’t bad, but I could use the faster shutter speeds of something like the 5d mark ii camera (1/8000) for example. I say that because in bright sunlight when I use 1 full step between captures with the Promote control I am limited to 10 or so steps. Beyond that they are just pure white/over blown and thus useless. I may look into using a gelatin filter on the fisheye lens, something like a neutral density filter, to possibly allow more steps with my current camera in very bright daylight locations.
- I’m still learning about the capture process, so my technique here may have some flaws. If you notice a problem with my process, or you personally use a method that provides better/faster results, then please let me know.
- It would also be a good idea to take something along that you can place into your back plate photos to assist with CG alignment. Perhaps something that would not only help with alignment but also help you dial in the look of the lighting/reflections. One of those large 12″ chrome garden spheres (gazing ball) might be helpful with this.
43 comments
Trackback e pingback
-
Rubicon Crossing » The Right Equipment
[...] the price. Additionally, being a stills camera at its heart, it will allow me to shoot reference HDR images ...

Hey, are you using the fish eye to setup less shots needed to be taken? Thanks for the tut!
Yes, I believe the fisheye lens lets me quickly capture more area with fewer shots than say a wide angle non-fisheye type lens. It’s a tradeoff for speed vs. higher resolution from the non-fisheye lens method.
It’s also more difficult to find a super wide lens for the APS-C sized sensors since they add a multiplier to the lens length, 1.6 multiplier for my camera. Of course I could be completely wrong and at some point I will probably invest in a wide angle lens to see what happens.
can we add sun light to the mental ray scene or we just set the hdri to self caste light and shadows ?
great tutorial !
Right, with mental ray in 3ds Max you typically need to add directional lights to assist HDRs with direct shadows. OR you can use on of the following methods: irradiance particles, or IBL: Link1, Link2
I strongly recommend Christian Bloch’s HDRI Handbook for everything related to HDRI, from capture to sttiching and editing. There´s a also companion site at http://www.hdrlabs.com with links to buy the book and news on the HDRI front.
Good post, I also have that book and agree it’s a great resource.
Hello, Great blog Jeff thank you. But i have a question: When lighting the Aventador (lambo) scene which youve provided the backplate & HDRI for, are you using a daylight system or skylight and direct light?
ta
Iray + environment HDR.
Jeff, you mention that you used iRay for this render? Is that correct? This really looks like a VRay render, just from what appears to be some chromatic aberration characteristics around the edges of the car…
If this is an iRay render, it’s truly amazing!
Yes, iray was used for the sample render in this article. The C.A. was added in post.
Hi Jeff,
First of all thanks for this tutorial!
My question would be how do you get a full circle image with the 60d and its crop sensor (1,6) in combination with the 10mm sigma lense? (as shown in your tut)
Even with a 8mm Sigma f3.5 used with a 1.6 crop sensor you are´t able to get a full circle. The circle is cut of on all 4 sides, so even rotating the camera vertically doesn´t ensure getting a full 180° FOV in this direction.
So capturing a Nadir+Zenith shot is necessary to achieve a full spherical 360° pano.
I´m just asking, because I actually can´t decide which fisheye to buy for this exact purpose. I´m on a 600d and due to the fact that the sigma 8mm is much more expensive and doesn´t even capture a full pano with 4 shots I´m aiming for the tokina 10-17mm at the moment.
The sigma fisheye I used is designed to give a full circular image with the APS-c sized sensors. The image I posted in the article has been cropped & scaled to fit into the site layout. Here’s what an actual image looks like straight from the camera, but scaled down to 600×400 to again fit the site layout: IMAGE
EDIT: Perhaps the results I’m getting are also related to how the PTgui software is blending the images together because I don’t take any other photos that what I outlined above and it stitches together well (most of the time). Sometimes there are some visible seams and or a small dark square in the top of the sky and/or ground. Maybe that’s when I should add a Nadir + Zenith shot, but most of the time (90%) if I keep the camera level I’ve found that it’s not needed as it seems to stitch together well.
I’ll post some more examples that were stitched together using this method, both the good & bad stitches for reference.
Andy – Looks like you are correct, there are more artifacts than I first thought. Sometimes it more noticeable than others though…and sometimes it’s a lot of user error on my part. Here’s a batch of stitched images I recently took for reference, some were better than others.
EXAMPLE 01 – Noticeable issues. I screwed up the level on this one.
EXAMPLE 02 – Another bad one because I didn’t pay close attention to my levels mainly.
EXAMPLE 03 – Better, but will create a small box in the sky unless cropped and/or the fixed in Photoshop.
EXAMPLE 04 – Some stitching issues on the railings. It was a very windy morning and my camera was moving quite a bit.
EXAMPLE 05 – Seemed to turn out alright.
EXAMPLE 06 – A stitching issue on the kitchen ceiling area. I thought I had this one pretty level though. Might be related the coverage issue you mentioned.
EXAMPLE 07 – Ground is messed up, but I typically don’t worry with that since my CG objects will typically be reflecting a CG ground.
EXAMPLE 08 – Seems ok for the most part. Very top of sky looks like it darkens a little so there may be a small artifact in the center of the sky.
EXAMPLE 09 – I hope this works. I tested creating a .mov file from one of these to better show what it would look like as an environment. There are some stitching artifacts (not sure how level I had this one). Plus the small dark box in the sky due to the coverage issue you outlined.
Hmmm, in thinking about it, since I’m not concerned so much with the ground right at the camera maybe I should tilt the camera up slightly to get better coverage of the sky instead…or capture a zenith shot to see if PTgui would stitch that in with the rest as well.
Hi again!
That´s interesting, but I believe I can´t be the 10mm then
This one is a fullframe fisheye (at least on a crop sensor). I borrowed it from a colleauge and tried it with my 600d (1.6 crop as well).
It even hasn´t this much of black spacing around the circle when used on a full format sensor camera like the 5D MKII with sawed of fins. (in comparison to your posted image)
Check this link + this image
So I guess it´s the 4.5mm lense, which explains the small output resolution as well
None the less your resulting HDR looks completely fine and your finished renderings are pretty awesome.
Crap! You’re right. I pulled the lens out of my case and I am using the 4.5 lens and not the 10mm. Thanks for catching this! I’ll update the article now to reflect the correct lens.
Sorry for double posting, but after pressing the post comment button nothing was submitted, so I tried again, but still didn´t work. Now after 2 days my post(s) finally arrived
have a nice weekend
greetings
Andy
Allright so this is the way to go? Sigma 4,5 (http://www.dpreview.com/news/0711/07111402sigma45fish.asp)?
I prefer getting an image with a high resolution rather than doing it fast. Will my Sigma 10-20mm work for this purpose? Or is it just useless?
Thanks for your guide!
“I prefer getting an image with a high resolution rather than doing it fast. Will my Sigma 10-20mm work for this purpose?” – As long as you get a full frame image (not one with a lot of black around it like I posted above) you should be fine. With the full frame image I believe you’ll have to take more photos, but you should achieve a much higher resolution end result.
I believe the sigma 10-20mm is not a fisheye lense. Just a normal wide angle, so you´ll need a lot more pictures.
With a 10mm fisheye on a crop sensor (e.g sigma10mm or tokina 10-17mm) u need 6 pictures (in 60° increments) + 1 zenith + nadir in order to get a full spherical panorama.
With a 10mm f2.8 sigma and 6 shots + nadir + zenith I was able to get a spherical pano with a resolution of 15000*7500
which is enough for me
Jeff, I forgot the Panoramic Photographers Group on Facebook, they have a documents section with great tutorials on gear, software and techincs.
http://www.facebook.com/groups/panoramicphotographers/
Thanks for the link!
Hi Jeff,
did you use a nodal head for your shots?
If not, did you have any issues with finding the entrance pupil/nodal point?
Cheers,
Steve
No nodal head used (corrected list of exact equipment used outlined in article). I didn’t need to worry with the nodal point when using the 4.5mm circular fisheye lens. I just had to keep it relatively level. As mentioned in the article the upside of this setup is is it’s a really fast capture process…downside is the medium/low resolution output (5k pano) due to the circular fisheye lens.
You mentioned leaving an object like a gazing globe to focus on, I found that if you make a pvc cube using 12 1/4 pvc pipes and 8 corner Elbows with 90deg side inlets. You can have a poratble pvc box that is light and can be placed anywhere, the beauty is, if its a half meter squared then you have not only something linear to match to in your backplate, but you also have a scaled object. just make a half meter cube in max to match it.
http://www.glassblower.info/images/light-box-pvc-cube.jpg
Thanks for the info & reference image.
Jeff may I ask what settings do you use at image filtering in iray parameters.?
This has been a very insightful, hell of a tutorial.
Thanks.
“what settings do you use at image filtering in iray parameters.?” - The default Gauss filter.
Hello Sir,
I Create Some Image Hear In Mental Ray.
So Comment About My Image
And Tale Me Any Mistake & Suggestion.
http://www.facebook.com/media/set/?set=a.175111659245517.42058.100002400513659&type=3
Hi,
Was there an example scene posted for this? I’m trying to learn the technique myself, but run into problems with getting my model scaled correctly to match the backplate. The model often looks smaller than the background surroundings.
thx
No, I didn’t include a preconfigured scene with this post. Measurements and/or a scaled object used for reference in the actual backplate would help in the process of matching angles/scale but I didn’t go to that extent for this particular article. That being said I can tell you that the driveway in front of the building is about 22′ to 24′ wide.
Ok. I should probably put something in my shots for a scale reference if there is nothing in the environment to reference. If you run across a tutorial on how to use a panoramic background, please share. I have found a few that just cover using a backplate for a single shot, but haven’t found any that use a panoramic background for any camera angle. Surely it’s possible.
Hi Jeff!
Nice little tutorial you wrote there! i just have to correct your thought that the nodal point being not so important has nothing to do with your focal length of 4.5 or 10mm, bur more with the distance of the foreground objects.
the closer the foreground objects are, the more parallax shows itself. check out the image with the railings for example. no matter what focal length you use, the parallax will be the same there.
and another tip, seen from your shadow, you have the tripod all the way up, and your’e standing upright. i like to keep the camera at a meter (3ft) high or so, since it also is closer to the rendered objects centre. plus it creates a nice small shadow when the photographer also sits close to the ground. might get some curious people watching your silly-looking poses, but who cares?
love the promote tip, nice toy! good work!
Thanks for the tips Mike! I wondered why the railings wouldn’t align properly. The parallax issue seems obvious now that you mention it. Also I don’t know why I didn’t think to sit down and lower the camera to help with the shadows! Thanks again!
your’e most welcome Jeff, glad to give you some tips!
if your’e interested, check out my little 360 HDR tutorial here: http://www.m3dhdr.com/basics-calibration-i-6.html
keep up your good work, and enjoy the holidays!
Jeff,
Thank you so much for the HDR set I appreciate the work. Here is a render I did using the download. Rendered in Max 2012 64bit using MR.
Thanks my friend,
Terry
http://www.imagebam.com/image/3dd077175031973
Hey Terry, nice looking render. Really like the brightness & contrast of the paint vs. the cool blue of the back plate. Good work & thanks for sharing the render!
Thank you Jeff for the kind words. I’m not a pro like yourself but I try my best. I’ll stay in touch bro…
Regards,
Terry
Hello jeff
Thnx for the HDR!
This is what i got, its not perfect though but im am still in a learning process, i”ve would rather renderd it with a nice photorealistic sliver carpaint but im having a hard time to figure it out.
So for now =
http://s626.photobucket.com/albums/tt344/actress83/?action=view¤t=BMWX62.jpg
Very nice! Looks great in black. Thanks for sharing!
Also another render but with one of your older Hdri.
I tried to make the road little wet its only underneath the car,
is it becouse the shadow/mat/reflectr material can only reflect near the car?
Or is there also another way.
Tnx again.
http://s626.photobucket.com/albums/tt344/actress83/?action=view¤t=BMWX62.jpg#!oZZ3QQcurrentZZhttp%3A%2F%2Fs626.photobucket.com%2Falbums%2Ftt344%2Factress83%2F%3Faction%3Dview%26current%3DSEAT_IBIZA.jpg
The matte/black looks great on that one. The reflections in the puddle look about right to me. If you meant to also have reflections outside of that the puddle areas then I’d check the masking setup and/or glossiness values to make sure it’s not being eliminated.