I don’t even remember what prompted it, but I started fiddling with my four or five year old Lightwave Stargate model this past weekend, and decided to take another shot at something that had heretofore frustrated me, the “puddle” effect.
Originally on my model, I did the highlights in the middle with a specular hit. The trouble is, that only looked right from a head-on view, with the spec coming from a head-on light, with all the scene lights deacivated. I ended up pre-rendering a loop of it, and then applying it to a plane for actual scene work. It took a lot of space, and meant a separate pre-render if you wanted to show another set of ripples form something passing through the stargate. It also tended to look flat from oblique angles. Huge pain, and I always wanted to figure out some way to do it procedurally in-camera.
A couple years ago, it occurred to me that I could help reduce the fakeness of the effect by just pre-rendering the highlights, and having the reflection map I used to break up the ripples be rendered in-camera. This helped, but not really that much.
So, that brings us back to now. I started looking at it, and suddenly realized I could just use a gradient to ramp up the reflectivity closer to the center of the object. The reflections would blow out to white as it got closer to the center, it’d be totally independent of the scene lighting, and it’d shift subtly with the angle of the camera.
It’s just. That. Easy.
Anyway, I fiddled around with it further to perfect it, all the while kicking myself that this perfectly obvious solution hadn’t occurred to me five years ago when I started trying to nail this.
Also, if I’d figured it out then, my interactive lighting solution would still work. Apparently, something in Lightwave has changed in regards to caustics and refractions, breaking my old solution, leaving me stymied.
From the rear, the stargate effect looks the same as the front, except semitransparent, and occasionally with a ripply refraction effect, if the VFX people think it’s worth it this week. Simple enough, right? And so it was. Just the same texture as the front, slightly transparent, and with an appropriate refraction index.
The stargate also vomits light out of the front, like sunlight reflecting off water onto a building. I replicated this with a spotlight shining through the back, with caustics enabled (and rediculously cranked up), through a dummy puddle hidden from the camera with a higher refraction index so it would look right. And look right it did!
Now, though, the transparent back doesn’t work properly, apparently catching a reflection of the front despite the fact that the front side of the puddle is one-sided polygons in every way it’s possible for polygons to be one-sided. Now that I’m talking about it, I think I remember something about caustics or refraction being altered in Lightwave 9 to remove the nessessity of “air polys.” That could have something to do with it.
Well, that’s not too bad. I just live without the refractive back. No big. Unfortunately, the caustics are just wrong. They move very slowly in one direction, and flicker like it’s going out of style. It looks like nothing so much as a helicopter’s blades on film, a wide blur slowly moving around and around.
I backtracked to the versions I did my old test renders with, and made sure the problems weren’t the result of something I changed (which it seems to be in one other case, where the spot I used for the caustics ignored the caustics object and went through the proper puddle, despite having exactly the opposite set in the “exclude object from light” settings. That’ll be a fun one to track down). I’ll continue fiddling with it in the coming days to see if I can figure some new workarounds for it. I’m also thinking about trying to do a kawoosh now that I’m looking at it again, having seen some spiffy CG ones on youtube (including one that used my gate model).
At the moment, though, my gate looks fine from the front, and the lighting looks fine in a still.
Updated January 30, 2015
I’ve rendered a 5K version of the showcase image.