Crater Car Splash
Petar Jovovic, vfx supervisor
Milovan Mladenovic, vfx producer
Miljana Jovovic, executive producer
Danilo Zivkovic, vfx artist/td
Radovan Milosevic, vfx artist/td
Zoran Stojanoski, vfx artist/td
Ivan Vasiljevic, lighting artist
Ognjen Vukovic, lighting artist
Milos Zuza, digital compositor
Sasa Nikolic, digital compositor
Ivan Kocic, modeller
Vladimir ilic, modeller
Luka Lakic, generalist
Ljubica Macan, vfx coordinator
Natasa Vidakovic, production assistant
Dejan Jovanovic, IT assistant
Dejan Nedeljkovic, IT assistant
In October (2012) I started a workshop to learn the basics of Houdini.
In the sixth week, things got a little more advanced. We learned how to set up a procedural crack effect. So no simulations involved. As you'll understand from the video, this proved to be quite the challenge to fully grasp the entire setup. It's kind of complicated, especially if you're new to Houdini, so I'll do my best to explain it. (Maybe I should start explaining in the videos).
It starts off with a grid and some curves to map out where the cracks will be. The crack gets assigned a color, which gets transferred to the grid. Based on that color, points are scattered with more points where the color is. All the points then get connected and divided to get a Voroni pattern. After that, point groups are created to determine which ones get affected and which ones won't. On the interior selection group, a Turbulent Noise is applied in a VOP SOP. A Carve SOP is put on the curves to create an 'anim' variable, which will be used later on to tell which primitives get rotated. I show the visualization to give an idea how it goes.
After all this, a whole bunch of attributes are created and assigned. It goes as follows:
First off, the desired primitives are isolated by deleting all those that are black ($CR == 0). The point normals get directed to the curve. On each primitive, the point with the longest normal gets selected to be the pivot point. This way, the primitives will rotate around the point where they're still "attached" to the ground, away from the crack. An up vector is set, perpendicular to the surface, and goes in a cross product with the normal to determine the rotation axes of each point. The rotation axis of each pivot point gets assigned to their corresponding primitive and then back to all the points on that primitive.
The rotation axis and angle, which gets multiplied by the anim attribute (which goes from 0 to 1), get fed in a rotation matrix followed by what point to use as the pivot.
Once all that is done, the isolated primitives get merged back with the others, get extruded, normals are re-calculated and degenerate polygons are removed with a Clean SOP.
If you have any questions or want to look into the file, feel free to send me a message with your e-mail and I'll send it to you.