Raimondo Della Calce gave a detailed breakdown of the way he creates fantastic growing simulations in Houdini.
Raimondo Della Calce gave a detailed breakdown of the way he creates fantastic growing simulations in Houdini.
Introduction
My name is Raimondo (Ray) Della Calce. I’m from Italy, have been working in the CGI field for many years, and I’m the owner of artFive animation studio. I work on commercials, visual FX, AR/VR, TV series and short films – sometimes as a director, sometimes as animator/CGI artist, or both. I like both technical and artistic aspects of this work. I’m using Maya since 1.0 build and it’s my main software, but two years ago I started using Houdini too, and since then I’ve been studying and doing tests almost every day (even on holiday). Everyone who started using Houdini knows that it’s addictive. using Houdini knows that it’s addictive.
Some project I worked on in the last few years:
Latest demo reel:
Short films
Vudu Dolls:
The king of the island:
3d models for AR/VR:
TV series:
Milla the ant:
Ripples:
Project
This was a test I did for an upcoming project. When a client asks for something a bit more complicated than usual, and that I haven’t done before, I set up a test to show him (and myself too) that I can do it. The shot I worked on focused on a plant which was gradually growing on a bookcase. It’s not an easy shot if you need to achieve a detailed look and animation, while maintaining control to tweak the shot for client feedback. You can approach a shot like this in many ways – I considered doing it in Maya using Mash and probably it might have been a good solution too — but after using Houdini for a while you start to feel more confident by having full control of the process, even if you have to build it from scratch. So I decided to go with Houdini.
Structure
Before starting the project I watched some tutorials – and while some were too complicated for me (a lot of VEX code!) – the best one I found was by Rohan Dalvi, who is very popular in the Houdini community and with good reason. His tutorial was the basis for what I created – basically scattering animated instances on a growing curve. If you look at his tutorial though, every leaf starts its animation with a delay which is based on the current frame (variable $F) so that while the first leaves play all their “growing” animation, the last leaves are almost still. I wanted every leaf to play the actual animation starting from its first frame and only when its point was activated by the growing stem. So I started looking for a solution on forums and asked for some help on Discord (Houdini community is awesome).
Nodes
By searching the web, I found the attribute I needed. Timeinc (time increment) can be used to calculate frames that have been played after a “trigger” has been activated. But it doesn’t work on standard points (or at least I couldn’t make it work) I had to use particles instead. So the basic process was:
- Create a curve
- Make the curve growing using carve SOP
- Scatter some points on the curve, use them as emitters connecting a pop network
- Emit one particle per point and only at frame 1
- Copy stamp the leaves on the particles using @Timeinc as a stamp function to play the animation and add some randomness for rotation and scale
- Move the camera to follow the growing stem and add some camera shake using chops
- One HDR light, motion blur on, and render!
I’m thinking of recording a tutorial of all the process.
Foliage
I originally wanted to animate the leaves in Houdini, but I’m not there yet with its animation tools. So in the end I animated the leaves in Maya, using a mix of deformers like bend, wave and blend shape. In my opinion, this project looks good because of the leaf animation. It’s smooth and detailed, and seeing it repeated many times gives you a sense of “satisfying complexity”.
Textures
I took some photos of leaves during a walk. I selected three of them and I used Photoshop to clean them, and then Substance Bitmap2Material and Painter to extract a displacement map and paint some details. I just color corrected the diffuse texture with a color correct node in Houdini. Displacement was very important here because adds a natural look to the leaves, which in the end are only a flat plane deformed.
Animation
The animation is controlled by the stem. When it reaches a point (particle) the corresponding leaf grows. I animated the stem using a Carve SOP, that gradually trims/reveals the curve.
The leaf animation is 80 frames long, but at frame 35 the leaf is already completely shaped. From 35 to 80 it settles very smoothly while the other leaves start to grow – giving a natural look to the animation.
Using Mantra
Mantra is an amazing render engine. Like many others I don’t use it too much because for simple/medium projects it’s slow compared to RedShift or Arnold – but I love it. It reminds me of Renderman, which I used a lot, and if you start doing more complex stuff inside Houdini you’ll appreciate the great features it gives to you. In this project there are only three leaves imported as alembic cache from Maya. I then converted them to packed primitives (which in some ways are similar to Arnold standings or RedShift proxies). I then scattered them on the curve, and in the end there were in total about 130 leaves – every leaf is about 4000 polygons. When I tried to render with RedShift it took a lot to start the render – probably because it’s not optimized to work with packed primitives. I guess it has to unpack geometry before rendering and it takes time. With Mantra it’s almost instantaneous and takes a small amount of memory, so I decided to go with Mantra. The shader is very simple – I used the Principled Shader with a diffuse and a displacement map. Principled Shader is another reason why I love Mantra, so powerful and customizable (like everything else in Houdini).
Useful tutorials
Rohan Dalvi’s animated ivy is the main one to better understand the basic process. I also found very useful another tutorial by VFX Homeland about the knit solver – he talks about animated instances process too. Another tutorial by Rohan Dalvi is great to understand how packed primitives work.
Finally, if you want to find a great Houdini resource (maybe the best) that’s Matt Estela’s CgWiki.