Update: Allegorithmic, Pixar's Renderman, and SideFX tweeted and re-tweeted my pumpkin here and here.
In the spirit of Halloween, I worked on a jack-o'-lantern for this month's art project. The goal was to make a fully procedural pumpkin model with accompanying textures. I used Houdini and Substance Designer and rendered with Renderman.
I put together the model quite quickly but immediately got sidetracked with the look development aspect of it when I discovered the joys of Renderman RIS. The non-commercial license is free for personal use and it generates great results right out of the box. I spent most of my time experimenting with different integrators and dialing in the sub-surface scattering parameters.
Setup
One downside of using Renderman instead of Mantra for rendering in Houdini is that Renderman expects a custom texture format which isn't currently supported in the Houdini viewport, which makes previewing more cumbersome than using Mantra's native shaders. The texture files are generated using Pixar's txmake program, which ships with the Renderman binaries. Substance Designer doesn't export directly to TEX format so I ended up writing a simple Python script to convert all PNGs to TEXs:
#!/usr/bin/env python import os import datetime if __name__ == "__main__": files = os.listdir(".") files = filter(lambda x:r'.png' in x, files) command = "" OPTIONS = "-mode periodic -verbose" for file in files: (base, ext) = os.path.splitext(file) new_file = base + ".tex" if os.path.exists(new_file): t1 = datetime.datetime.fromtimestamp(os.stat(file).st_mtime) t2 = datetime.datetime.fromtimestamp(os.stat(new_file).st_mtime) if t2 > t1: print "%s is newer than %s. Skipping..." % (new_file, file) continue command += "txmake %s %s %s;" % (OPTIONS, file, new_file) print "-----" print command os.system(command)
Procedural Modeling
The pumpkin face is just an arbitrary curve which gets poly-extruded and boolean'd out of the pumpkin geometry. I originally had plans to make many different faces but never got around to that.
Puke Simulation
The puke was a simple viscous FLIP simulation sourced from the carved-out geometry from the pumpkin's mouth. Once I was happy with the sim, I cached out a high-resolution mesh of it for rendering.
The pumpkin seeds were placed by randomly scattering them throughout a VDB generated from the puke keyframe.
Rendering
I started the project using Mantra as my renderer but switched over to Renderman RIS to explore their various sub-surface scattering models. I was really impressed with the results that I got right out of the box, so I ended up sticking with it for this project. I still love Mantra, but RIS is great and I had a lot of fun using it for this project.
Timelapse