WickedP text logo

Hyperion

History: view complete post history here.

Hyperion is a 3D render engine for Cinema4D. It was born out of the need to render images for another piece of software I’m writing, called the Dark Room. If you’ve read up on the Dark Room project, you may be a little familiar with what’s coming here.

It turns out, a rather annoying limitation in Cinema4D meant that I had to jump through some tedious hoops to get what I wanted in order for the Dark Room to work. However, an alternate way around this was to write my own render engine. In the end, I decided to take on this challenge, which was a big call. Writing a render engine is no small task.

Now, there’s a few ways you can write a render engine. To cut to the chase, I chose a more difficult type (seems to be a common theme with me!?), because I wanted to use real world physics as opposed to something that might cut corners. It’s also different to other engines, because I wanted to work with with photons and light waves, and not your typical RGB colour values.

Given the hill to climb with this one, I wanted a name that suited the occasion. So I went looking for one I could borrow (eh, use!), and I found one in the Greek Titan of Light. His name was Hyperion, and so the engine took his name.

I didn’t just design Hyperion to work around the physical world of light. I’m also including attributes that make it work like a camera and lens. This includes thinking about the physical sensor size, the Bayer pattern of the sensor, the lens and field of view, the aperture and focus distance, and even the size of light waves themselves. There’s a few other things tucked in their as well, but you get the gist of it.

There are down sides to building something like this. Engines based on photons tend to be much slower. This is because they need a lot of photon casts to get a clean image – which is a lot to process. But, it does have some up sides. It renders some things naturally – like noise and depth of field. These do depend on your camera settings of course, assuming your engine can work with this kind of information, but there’s no ‘fakery’ going on in that respect. There’s no “Gaussian blur” to cheat depth of field. Just plain physics.

I’ve tried to build Hyperion using everything I can from the real world around us. In doing so, I’ve also developed my own custom rendering attributes. For instance, you can choose between how the engine renders, like scanline or bucket rendering. While these aren’t new to render engines, one render type I made probably is. You see, I use to develop my own film with chemicals (yes, real film and real film development!). So, I made a render type that does just this. I call it the ‘Dark Room Developer’. This method of rendering develops your image like a real film chemical developer. You can see the image appearing as time goes on. It might sound like a cheap trick, but it’s not. It genuinely renders like this. I consider the ‘Dark Room Developer’ option to be Hyperion’s premium render type.

The engine is being built to run on the CPU. Though CPU rendering is generally considered slower than GPU rendering (in some circles it’s even labelled a dying art), it is much more universal to get to work on other operating systems. There’s also another, more compelling reason I have, but I can’t divulge that here just yet. You’ll need to keep your eye on the projects section in future for this one!

Hyperion is not made to be a final renderer, more a preview engine. But, there’s probably no reason why it couldn’t head that way at some point. Below is an example render where you can see the natural noise. It’s a bit like real film. There’s no depth of field in this image, it hadn’t been turned on at this point. But I like the soft white feel of it, it’s not ‘precise’ like computer generated stuff usually is.

Example render from the Hyperion engine. Note the natural ‘film’ noise.

Before this engine existed, I was thinking of developing another program (and still ‘sorta’ am), which was going to use white marble as the default colour. This was in acknowledgement to the days of artists like Michelangelo who spent so long chipping away at statues like David. These statues were often made of white marble, so I thought it would be a nice touch to use this somewhere, and decided to use it as Hyperion’s default rendering texture colour.

Hyperion is only designed to work under the hood for the Dark Room. That said, there’s probably no reason why it couldn’t evolve to be a normal Cinema4D render engine in the future. After all, I have built it into the render settings menu as an option. But for now, I need to add in some of the missing physical aspects, and get it into the Dark Room to bring that project back to life.