3Delight for Houdini Volume rendering test.
Archives For Houdini
Using vel fields to control the flow of FLIP sims is quite the handy trick, and using the new source volume nodes set to “pull” allows you to add in your vel fields without them looking like they are taking over the sim completely. Here’s a hip file too: directable_FLIP.hiplcContinue Reading...
Just an update, I’ve compiled the for the latest production build, and zipped up for you lazy assholes. Houdini_USD_17.5.258_Win_x64
I had a great time playing with Katana, and setting up a nice demo scene using my good
friend Filippo’s VDB caches. 3Delight is killing volume rendering!
I know most of you aren’t interested in this, but hey, there has to be at least one other dickhead out there that wants to compile the USD Plugins for Windows.
We need to install a couple things, namely Microsoft Visual Studio 2017 Community, and also CMake. Get them below. When installing Visual Studio grab all the C++ add ons.
Okay, so lets get to it. We need to grab the houdini toolkit folder, located in;
“C:\Program Files\Side Effects Software\Houdini 17.0.459\toolkit” for example. Copy and paste the toolkit (and obviously all it’s contents) to somewhere. I have whacked mine in here: W:\dev\toolkit but put it wherever you want. We need to set a couple environment variables in order for everything to work.
Let’s make a new environment variable and append the path variable. Remember this is the “User variables for YourName” section, not the System Variables. Make your new var CMAKE_PREFIX_PATH and fill in the path the cmake directory.
And now, let’s append the user path variable. Edit this bad boy, and hit new to append our path to the bin folder.
Sweet azz. Now let’s keep moving, it’s already making me sleepy. In the root of the usd_houdini_plugins folder, which for me is: W:\dev\toolkit\usd_houdini_plugins\
make a folder called “build.” Now In here is a “CMakeLists.txt” file. The default output is to dump everything into C:\Users\YourName\Documents\houdini17.0\ and this is shit. It will be dumped in with everything else, and be hard to fish out. If you don’t care about this, ignore the below custom output location set up. But for those who want to keep it out of there, see below!
Here’s the Vanilla, let’s delete stuff. Remove all the if >>> down to endif, and set your path to where you want to output the data.
Below is what I’ve cleaned it up to. It’s where all my houdini/pipeline tools live.
And here is the append line to make the DSO go to your custom locale. Just add the INSTDIR pathto\\where you added in above\\dso in the line below, and you’re gold.
Here is my CMakeLists.txt
Okey dokey, with that done, open a command prompt and CD to the build folder we made earlier. Now your prompt is at W:\dev\toolkit\usd_houdini_plugins\build> (obviously your location is different!) let’s do some hacking.
run: cmake -G “Visual Studio 15 2017 Win64” ../ and wait for the magic. Here’s a boring gif of the process for sheer entertainment.
Amazing. I feel like Neo, I’m sure a pill offering is on the near horizon for me. Hop inside the build folder and you can see all our hard work. Double click the following: “usd_houdini_plugins.sln” this will launch Visual Studio, all ready to rock n roll.
All we need to do is select the “install” and go and change from “debug” to “release” then right click “install” and “build”
Once it’s all done, you’ll get some sexy confirmation messages in the output window. If it all went to plan, there will be all the USD Plugins in the location you chose earlier.
Sweeeeeeeeeeeeeeeeeet! Now add this to your houdini.env file: HOUDINI_PATH = “W:/Pipeline/Houdini_USD;&”
We made it Wendell! I hope you managed to stay awake for this. I didn’t. Here’s a zipped up binary built against 17.0.459 for you lazy bastards Houdini USD Plugins
I’ve been having a serious look at using spheres and also boxes to represent the collision
shape in bullet simulations. Spheres are great in that you can rely on the geometry to not get caught and hang on to each other. Boxes offer a nicer settling motion in certain setups too. The main reason I wanted to look at it, was to avoid always needing to use glue constraints. Sometimes I want a nice quick voronoi fracture that uses the clustering option, and this yields shitty collision approximations with convex hulls.
Enter vdb sphere packing! It allows me to fill the wacky geometry shapes and use those as colliders. I just save out my points, and transform the original pieces. Voila!
Tinkering with using uniform or varying volume, along with reflection and refraction to create more interesting attenuation of light.
So a major pain in the arse in VFX land is trying to get a particle sim, well any sim that is stored as points, out of Houdini into Maya for rendering. Yes yes we’d all like to just use Mantra, but a big part of VFX lighting is done in Maya.
Autodesk’s Alembic tools in Maya are shit. End of discussion. Nothing like the delayed load, deferred to the GPU, streamed off disk benefits we enjoy in Houdini. The J CUBE guys in Japan have been making a product to solve this cross-walk. Multi-Verse is it. And by it, I mean IT. Does exactly what it says on the tin. Lightning fast loading of Alembic or USD into Maya. A typical 10 million vert model will load in under 1 second, there in your viewport, to tumble around with no lag. You have a choice of geo, points, bounding box, or hidden for display, and the ability to actually scrub your viewport with amazing feedback. It deals with packed geo from Houdini automatically, so your Alembics out of Houdini, if for example, are instancing a few bits of unique geo to a bazillion points, then your packing before instancing will be respected. That means tiny Alembic files due to the multi-verse procedural being able to feed to Arnold, prman, 3Delight in a manner you’re used to in Mantra. Full support for Mantra style point velocity blur as well.
What I have never been happy with, is how hard it is to simply save points, with attributes, and have them render with a lightweight primitive, that can utilize those stored attributes in Maya. What follows is a nice little walk through of the process for getting a particle sim out of H into Maya, and rendering with 3Delight.
Let’s make a simple popsim, and set a couple attrs for pscale and color!
Alembic ROP settings!
So we are using Houdini 16.5.323, as from 16.5 onwards per frame Alembic caching is sweet! Much better than a huge single Alembic. Untick render full range to output a per frame, and enable full bounding box tree, as this makes life easier in Maya. Do not enable motion blur, it’s not needed. We have point velocity in this example, but even with fixed point counts, for regular motion blur, multi-verse will correctly interpolate, even with just one sample(the cached alembic frame).
Our lovely Mantra render!
Loading the Alembic with multi-verse
Use the green loader button, and since we are loading per frame, tick the option and remove your existing frame number, and replace with #. So, dude_1234.abc = dude_#.abc
You have options for full geo, points, bbox, and hidden, on the same shelf.
3Delight assignment panel
If you’ve ever used 3dl in the past, you know this panel well. In the new version of 3dl this will no longer be around, but for the next couple months we have to live with it. Select your alembic that we just brought in, and launch the panel, from the shelf. On the Attribs section, hit the little triangle and it will add a “delightGeoAttribs” panel to your Alembic. This is for doing all many of per object overrides, so much so, that it was one of the major selling points of 3dl.
Delight attribs, and Attribute re-mapping!
on the left is the panel that opens when you hit “Add / Remove Attributes” on your delightGeoAttribs panel that we attached earlier. We only care about the Particles options, so tick All Particle Attributes and close. What you will also see, is there is a Multiverse tab on our delightGeoAttribs. Open the Geometry Mappings and re-map our pscale and color to: pscale=width; Cd=Cs to make everyone happy! Width is the ri spec for radius, and Cs is color. Now when 3Delight renders it will pick up the width correctly and the stored per point color will come through in the diffuse of the 3dl shader. Point velocity motion blur scale can also be adjusted here, to accommodate different scene scales.
Delight particle settings
When we added the Particle Attributes, it gives you the following. Here we make sure that our points are rendering as Spheres, in Object Space, and I have reduced the particle scale globally to closer match Houdini. I’m sure it should be an even number, but meh. Interesting point to note, you can set your points to be in Raster Space, and they will always render the same size, in pixels, no matter their depth. So you can easily mimic the behavior of Krakatoa!
3Delight render pass
3dl has always had a nice pass manager, and all you need to do is to create a pass from the 3Delight menu. Once you do, set your camera and environment light in Scene Elements. The default render engine is the path tracer, so just enable Indirect Illumination and motion blur, and off you go!
It should be noted that the completely re-written 3Delight V13, which is coming soon, has a much more streamlined interface, and you will literally be only changing a couple settings. OSL based, designed for Interactive rendering, it is unbelievably quick, and if you have still got a hangover from the previous version, with it’s plethora of overrides and fiddly TD options, then you will be very pleasantly surprised.
So our Alembic points from Houdini render perfectly. Motion blur, color per point and radius per point too. With the new version of 3dl being much quicker, which the current version rendered these in 60% less time than Mantra, coupled with the multi-verse tools doing the cross-walk, it’s an exciting time indeed.
Using H16.0.600 and vfh-4b70a9c from 2017-07-15
Early days, but support is looking good. Shader has moved to MAT context thankfully.