What Makes a Good HDRI and How to Use It Correctly

HDRIs are everywhere these days. If you’ve got a half-decent camera, a tripod and some software you can even make them yourself.

But just like creating art in Blender, being able to do it at all is not the same as being able to do it well.

So, after I created my first crappy HDRI and discovered how challenging it could be, I decided to embark on a quest. I wanted to create the perfect high dynamic range environment map that would give you perfectly accurate and realistic lighting as if you had teleported your CG scene to the actual location of the photo itself.

In truth, this is an unending quest, but I’ve made some fair progress over the years. So without further ado, let me explain…

What Makes a Good HDRI

Just like art, the quality of an HDRI can be a subjective thing, but I think we can all agree that there are a few fundamental attributes that define (although not exclusively) how useful or accurate an HDRI is.

Dynamic Range

evs_grid2

Let’s begin with what is, to me, the most important aspect of any HDR image that you intend to use for lighting.

Continue Reading…

What’s with the HDRIs?

Update: All HDRIs are now free again, at full resolution.
Read why here, or just start downloading.


I’ve been shooting HDRIs for a while now, and every now and then putting some of them on this blog for you folks to download.

Since the beginning of this year they’ve been downloaded 6861 times, and we’re only halfway through it!

I’ve only released the 2048×1024 sizes for free, but all of them could be at least 16384×8192. The problem is, the 16k HDRIs are about 500MB each, and if people downloaded those 6861 times every 6 months, that’d be almost 7 terabytes of data going through the server every year.

That kind of data would easily cost me $600 per year (based on Amazon S3 hosting), and that’s assuming I never publish another HDR ever again.

As it stands right now, I’ve spent $800 on my camera, $400 on the wide-angle lens I use specifically to shoot the HDRIs, $200 on a panoramic head, and $400 on enough RAM to actually be able to process the images in a reasonable amount of time.
That’s $1800 I’ve already spent on equipment alone just for these HDRIs I give out for free.

Holy crap I didn’t know it was that much O_o

Well, as you can imagine, I’ve now realized that it’s not really practical to keep giving them out for free. At least not the full-resolution versions.

I plan to keep releasing the low-res versions for free, but I do need to make a little bit of money from this otherwise I might not be able to continue doing so.

That brings me to….

You may or may not have noticed that I’ve put out a pack of five 16k HDRIs for $3.95 on the Blender Market a few days ago. This is a sort of test to see if anyone is interested in paying a tiny bit of money for the high-res versions. The grand plan is to start something like CG Textures for these HDRIs, asking for a tiny monthly membership fee to allow me to keep creating more of them.

The keyword there is tiny. Most other HDRIs will cost you somewhere between $7 and $20 each. Now I’m a cheap bastard to be honest. I rarely buy anything online unless it’s on sale, and you’ve really got to convince me your product is worth every goddamn penny before I’ll even consider getting out my wallet.

Maybe that’s just me and I’m a terrible human being, but either way, I won’t try to sell you anything unless I would buy it myself.

The teaser pack for HDRI Haven is $3.95 – that’s less than 80c per HDRI. If there is enough interest in this, I plan to ask even less than that for the monthly membership fee of the main site, which would give you access to dozens of HDRIs.

Oh and let’s not forget that both the free 2k versions and paid 16k versions are licenced as CC-BY, meaning you’re free to use them for any purpose and share them around as much as you like.

So what am I waiting for?

You!

So far, the teaser pack has had a grand total of 6 sales, and that’s not enough to make me want to spend any more time or money on shooting HDRIs. So if you’d like me to keep doing this, please consider helping me out by buying the teaser pack :)

ISS Renders and A Review/Rant of 2013

iss02

iss01

Chris Kuhn and I have collaborated before, he’s an epic modeler and I have an itch to shade and render things. Both of our previous collaborations are among the top 30 most liked blends on Blendswap, and both are ships of sorts: a Hyperspace Shuttle and a Victorian pirate ship.

This time, I had absolutely no hand in creating anything. Chris modeled, textured and shaded this epicly detailed accurate model of the International Space Station, and the full mesh can be downloaded for free. He is selling the textured version on TurboSquid for $99 – which is 10x cheaper than some other ISS models that are only a portion of the full thing. If you’re one of those FOSS freaks that would shout about how expensive that is, it’s not even worth trying to explain to you why it isn’t.

Chris sent me the full shaded thing just so I could make some renders of it, but I struggled a bit with the lack of any other elements in the scene to play with composition. In the end I gave him the two above images, though I don’t particularly like either of them.

Which brings me to my next point:

frame_s_0001

Victorian Pirate Ship – “Suzanne’s Revenge”

The last Blender project I worked on at home for the fun of it and actually finished was the Victorian pirate ship I worked on with Chris.

Which was last year February.

Of course I did some small things, like that 10mm SMG I uploaded the other day, but like the SMG, most of the stuff was either unfinished or a piece of a bigger (unfinished) project. The only thing that I finished since then was a weekend challenge on BA.org, which hardly counts.

I know I’m not the only one to have dozens of unfinished projects on their HDD, but I’ve only been blending for about 5 or 6 years, and this last year I seem to have made almost no progress in terms of shading/texturing skills. In fact I’m quite sure I’ve even regressed a bit. Maybe I know a little more theory, but working full time shading and lighting simple stylized scenes at BugBox seems to have made me both lazy and see anything CG-related as boring work.

low-light

“Low Light” weekend challenge

Still, working at BugBox for the last two years has taught me a lot. Even though my shading skills are taking a hit due to lack of exercise, I’ve learnt a lot about the more important side of CG: what makes things appealing, colour theory in practice, the difficulties and responsibilities of being the last guy in the pipeline, the time and skill that goes into good character animation, and the madness that is the political warfare of clients, agencies, competing studios and low budgets.

Sure, you could easily tell me I have plenty of time on the weekend to work on keeping my shading skills in check, but the biggest problem is my waning motivation. Coming home after 40 hours of CG, the last thing I want to do is push myself to do more CG.

Well I won’t bore you with any more depressing ranting, (actually I’ve just run out of energy to think), so here’s a picture of my cat:

IMG_0316_small

Idea: Addon Manager

I was wondering today about how feasible something like this is: A system that allows you to download and install an addon with the click of a button, as well as tell you if an update is available to something you already have installed and update that with one click as well.

It would theoretically use the SVN/Git collection of trunk and contrib* addons and periodically check if an update to those already in Blender is available. Additionally, it would fetch an external database of Addons that are not a part of trunk or contrib and show an entry for each of these just like any other addon, only instead of an ‘Enable’ check-box, you’d have a ‘Download and Install’ button.

This would fetch the addon from the server, downloading it to a temporary place, and install it for you. Simple yeah?

That much is easy, in fact it’s literally 3 lines of code. The problem with this idea is maintainability and flexibility. The whole point of it is to show a repository of addons from external sources, since trunk addons are already there and updated every release, and contrib ones come with most graphicall and build bot builds – however we still have to somehow control what addons are in this repository, allowing anyone and everyone to add to it would be messy and a serious security risk (imagine you enable a cool looking addon that promises a one-click character rig, only to find its a piece of malware with a keylogger).

Someone has to maintain this repository personally, which leaves the question  of how best to do this with minimal regular effort? You could update it only once a week perhaps, but you still need a way to automatically go through the database of scripts and find out which has a newer version available. This means that for each addon you’ll need some custom method of checking for new versions, some developers will update the same file on a server, while others might increment a number and leave the old file in place (auto_tile_size_release_03.py for example)

(mockup)

(mockup)

I’m not the first to have this idea. Campbell wrote a primitive one a while ago, and Gaia Clary apparently as well. They encountered the same problems. The script itself is trivial, the maintainability is not.

I don’t often like to publicize these mad ideas of mine, they don’t normally lead to much, but this time I’d like to ask if you have any suggestions for me – how can I do this simply and only have maybe 20 minutes work per week on maintaining a database of addons? Should I store the addons on my own server, or rely on the original source? Perhaps only include those in the external column of the wiki page? What about asking developers to contribute to this repository and update it each time they release a new version? If so, how best would we combat low quality addons and potential security issues?

The UI mockup at the top of this post is a quick one – I’d still need to handle categories and such, and I might as well edit the existing UI instead of creating my own.

* The Trunk set of addons are those included in Blender by default, stuff like importers and the very useful ones such as Looptools and Node Efficiency Tools. The Contrib set is a collection of addons not included in the official release of Blender, but still officially approved by Blender devs and can be trusted that they’re pretty darn good.

For the Sheep

XwBXiua

Here’s a post by quollism on a thread on BA discussing funding a UI coder (or 20). It’s a long read, but definitely worth it (or if you’re lazy, see the tldr at the end):

As a working software developer who read “Don’t Make Me Think” years before Andrew Price did as part of my job, let’s have a sober assessment of this UI proposal.

There’s a lot of good ideas in here. This is a much kinder program to use than the Blender we currently have. The tabs could work, I’d rather have the notifications panel than the damn outliner, and I could probably live without RMB select as long as I can keep MMB for camera view because it rocks. (In fact, I could probably do without single-click 3D cursor placement entirely.) There’s a fair bit of stuff in here that would be relatively trivial to implement.

But overall what’s being proposed is frankly a way more expensive program to develop and maintain. We are never going to see this in a hundred years from the Blender Foundation with its current level of development resources. Something this richly helpful is going to be difficult to keep giving people free of charge.

Continue Reading…