• 21/09/16 3D , Houdini , School , Video

    Simple Biped 01 work in progress

    This is the next project that I have been working on for a while now. The robot you see in the background is a standard asset in Houdini. The simple biped asset is a really simple example of a rig. I saw an opportunity to turn something this simple into something that looks nice.

    The biped is animated and walks along the dunes of this desert when something unexpected happens. I love these desert shots because I have seen several full cgi shots which have very interesting sand and dune looks. The challenge for me is to get the physics and feel of the sand right. There is the fine sand that blows off the top of the dune in the back where the bipad is walking on. Also there should be sand shifting closely to the surface too, since the sand particles are so light they get picked up by the wind. And of course something interesting has to happen to the orb.

    Early version of the scene
    Adding scratches and damage

    The Orb

    The orb you see on the left side is something that I have created earlier. Do you recognize where it is from? The title might give it away.

    Sand solver

    I was trying to get into sand and grains and quickly discovered how hard it is to get control of direction. The orb smashing down was animated and not dynamic, the particles do however react to this impact. I was not satisfied with the sands physics, they seemed to explode in the beginning. Since I had so much trouble doing this sim the correct way ( and I can’t find a lot of information on it) I changed this scene a bit. I am going to include a explosion instead, stay tuned.

    Latest Version

    Going through several iterations of this shot I am finally coming closer and closer to the final product. I changed the scene to where the Orb has become the central focus in this scene. So far I also removed the robot to avoid divided attention to the shot. Maybe I’ll implement him later, not sure. As you can see the orb is now rolling through the landscape and have done several simulations to get to this point. The landscape deforming is a SOP simulation. The particles (sand) at the back of the orb are two layered particle simulations and on top of that there is going to be a pyro simulation to add the dusty effect.

    I added more waves to the sand because when you look at desert shots (dependent on which one of course) you see these waves created by the wind. I added those with bump, procedural of course.

    The scene also contains fire! Halfway through the scene the orb catches fire and will explode once it rolls over the hill. I’m expecting this scene to be finished within now and two weeks.

    no responses
  • 08/06/16 3D , Houdini , School , Video

    Houdini Mountain Fractals

    I completed my latest project Mountain Fractals over a month ago. I wanted to do something with mountain ranges and I knew Houdini would handle this perfectly. Doing this I wanted to take a fully procedural approach to the geometry. I finished this project just before the FMX.

    Everything except compositing is Houdini. The mountain range is completely procedural. The shader is procedural, snow amount is slope and height dependent mixed in with noise, you can determine the snow / rock bias for more control. The rocks under the snow is built into the same shader and is controllable with reflection and displacement amount.

    There are three smoke sims on the left, top and right of the shot. The top one is a clustered pyro sim. In the top sim I used the velocity field to advect some particles for the snow effect.

    In the background the clouds are VEX Volume procedurally generated.


    The geometry is created via a tutorial I followed. I created a 1000×1000 grid with 1250×1250 rows and columns which i displace via a pointsop.

    I wanted to do some research on how mountains actually get created in other packages like VUE but I didn’t find the time to do so. Most of these packages have really nice options for aging, height, valley and peak creation. Next to that they have really good shading systems as well and are of course built for building huge environmental scenes.

    Mountain PointSop
    Mountain PointSop

    In Houdini I didn’t go that far because I was really happy with the results I could get from just one pointsop. You can see that I am using a for loop to stack noise. Each loop adds more noise on top of the other. The number of for loops controls how many iterations of noise. There are some controls like translate, rotate, offset and lacunarity that go into the for loop that randomize the noise every time it goes through. This gives the whole mountain range more randomness.

    Further down the geo pipeline I give the mountain geo a pmin and pmax attribute to use for the shader. These two attributes are the lowest and highest point in the geometry. I can use these two values for determining the amount of snow on the mountain in the shader.

    Detail SOP

    To create that little bit of extra detail I created another point sop to add that extra detail to the already created geometry. At the end of the geo I have a smooth sop to relax the points. The non-optimized geo ended up being 3.5 gigs but was way too memory inefficient since I’m on 32 gigs of ram. The optimized geo returned at around 738mb.

    The geometry in the back is generated the same way. Since these are 1000×1000 grids I could use a add sop to create points where I wanted to copy the grids onto. In my showreel below in the breakdown part you can clearly see that the geometry has been copied onto 4 points. Of course this geo has way less details since it was going to be blurred.

    VEX Procedural Volume

    In the background I also included some VEX procedural volume to mimic the clouds hanging in the valley. This was surprisingly the fastest part of the whole scene to generate. I created a box that covered the entire valley and attached a sky node to it and tweaked the values a bit. That was it, mantra handled the rest.

    Cloud & Smoke FX

    As mentioned before you can see three simulations in the scene. One on the left, top and right. The simulations on the left and right where ment to look like slow moving clouds that get caught in the mountains nooks and crannies.

    I had quite underestimated how difficult it is to control the pyro solver to do whatever you want. Since I didn’t have much experience with the pyro solver I did many iterations of number tweaking before I got what I wanted. If I where to do this again I would go deeper into the pyro solver and study the microsolvers and create a custom velocity field for ultimate control.

    I also learned that if you want to have really slow moving pyro the physics of the simulation also start to change. In the end I am most happy with how the clouds of the right behave, those seem closest to the slow moving clouds you see on the sides of mountains.

    The simulation on top is a clustered pyro simulation. I added this effect to simulate the snow blowing off the top. Added with some particles advected by the pyro sim to visualize some snow too instead of just snow mist.

    Point wind direction

    Since my wind was coming from one direction I created a point sop which I could control so I could determine where the wind was coming from and create points on the good side of the mountain to emit my smoke from. From there the wind in the DOP would do the rest. The point sop can be controlled by wind direction and slope. Less slope means more snow since it has more chance to accumulate more of it on a flat surface. Mixed in with a little noise this point sop determines which points are used for emission.

    Point wind direction SOP

    The power of shading

    This is where most of the magic happens. Everything you see on the mountain (snow, rocks, reflections, coating) is inside one shader. The shader is divided among seven categories: colors, reflections, snow bias, angle/slope, height, noise and displacement.

    There are three colors to be controlled in the shader. The rock primary and secondary color and the color of the snow. Plus the added multi matte color. In the reflections you have control over both rock and snow. Both are controllable by specular and roughness. The snow bias is where you control the general amount of snow, this is the go to place when you feel too much rock is exposed. In the angle part of the shader I use a dot product between the up vector and the normal of the surface to determine angle. The angle controller determines how much snow is resting on the steepest parts of the geometry.  The height category determines how much snow at which altitude. The noise controller is there to add some diversity to add to the whole snow/rock bias. Finally displacement is where you can control the amount of displacement in the rocky parts of the mountain but there is also control for the amount of displacement for the snowy part. Since there are rocks underneath it.

    The video above is a very early test of the shader. You can see that the snow also rests on the displaced parts on the mountain, the tiny details hold snow. It adds surprisingly much detail. In the end the shader does all the work for this scene, it took me quite a while to build and many iterations to get the look I wanted.

    The difference between displacement and non-displacement.

    There are still some improvements I wanted to add to the snow shader but since the camera stays at a significant distance I left these details for another time. For example I wanted to add a sparkling effect in the coat reflection of the snow. I already did this in my final product, but it is an extremely simple version. It is actually in the render but barely visible.

    Mountain Shader


    Rendering the result was quite intense and I learned a lot in mantra during the process. In the end the longest frame took 1 hour and 18 minutes and the shortest frame was about 20 minutes. I did a lot of geometry optimization to get the render times down, because dicing the geometry for displacement was about 8 minutes per frame. Next to that volumetrics will take a lot of your time too.

    I needed the volumetrics to have a fine whispy cloud look, which takes more time to render. The less dense a volume is the longer the render will take, so as my camera came closer and closer to the volumetrics on the top part of the mountain the longer the time per frame was.  So for the volumes it really was a quality vs performance issue, in the end I think it was quite good because some of the smoke disappears in compositing because of the backplate.

    In the Houdini (15.5) documentation it says to render pyro effects with the micropolygon engine. So the next time I do volumetrics I want to see if it can save me time.

    The way I rendered the scene was from front to back. The front part of the mountains is what was rendered first, later I added the defocused mountains in the background. This render was significantly faster then the front ones because I knew they where going to be defocused anyway. So I could reduce polygon count on the geometry, disable displacement and reduce the CVEX procedural volume quality too. Most frames where about 3 minutes.

    Since I made some errors here and there the first render didn’t have all the AOVs I needed. The position pass for example was being distorted by the volumes in front of the geometry and I still don’t know how to get a decent position pass out of volumes. (This did however work perfectly for the CVEX volumes).

    Who doesn't like a z-depth pass?

    If I had to render this again I would take a different approach now, but that is what makes a learning process so great. I think that I am now much more capable of rendering the elements that I need in one go. I just have to figure out how to get a correct position pass from a volume.

    Breaking it down

    If you would like to see how this whole thing breaks down take a look at my showreel that I took to the FMX in April. The breakdown for the mountains start at around 0:40.

    no responses
  • 27/10/15 3D , Craft-Thales , School

    S16 v6 Realflow Breakdown

    Final simulation and breakdown for the shots.

    Sim time: 54:00:28

    no responses
  • 27/10/15 3D , Craft-Thales , School

    Creating a robot emerging from the Ocean using RealFlow, V-Ray and NUKE

    So since the last post a lot has happened. We finished all the visual effects for the movie and everything is now ready for audio and grading. Meanwhile me and Ivaylo created a video on how we got to finish our most difficult VFX shot. The video goes very in depth from where i did the simulations and how it ended in compositing. The video has already been online for a while and we got a nice amount of views as well. Also being featured on some VFX sites helped us gain some popularity.

    no responses
  • 13/07/15 3D , Craft-Thales , School

    S16 v5 Realflow

    The stickiness on the deck is too high!

    sim time: 37:44:52

    no responses
  • 06/07/15 3D , Craft-Thales , School

    S16 v4 Realflow

    Trying to get the mist to work properly.

    no responses
  • 29/06/15 3D , Craft-Thales , School

    S16 v3 Realflow

    With the last iteration I increased the size of the pool to get less of the spilling, although it happens now it is easier to mesh at the end. Since this sim is going to be two shots I had to resim it with a different ship model and more frames. Posting more results soon.

    Sim time: 20:28:45

    no responses
  • 24/06/15 3D , Craft-Thales , School

    S16 v2 Realflow

    Finally got really good interaction with the particles in this shot. I had so much trouble getting the water to punch up like it does in this scene. Apparently domain offset was the issue here, I tried before at 3 meters but had to set it at 7.5 (meters!) which is 750 times larger than the default. On the other hand it also makes sense since the robot is 11 meters high in “real” life.

    Probably going to do one more iteration.

    no responses
  • 22/06/15 3D , Craft-Thales , School

    S16 & Realflow 2015

    Recently I have been busy completing scene 16 and it has been a pain. I was not getting the simulation under control.

    The problem with the sim was that I did not get the interaction with the robot down as I wanted it to.

    As you can see the robot is hardly interacting with the robot. Most of the time when this happens you check how the isosurface is. Inside realflow it was looking pretty good, so I tried adjusting the interaction factor on the robot. This actually did create the splash that I wanted but the physics where all over the place.

    The plashes for example had a high velocity and kept on rising way to high. Not the result I was going for.

    I fiddled with domain and surface offset on the robot and tried various combinations but to no avail. I’ve ran several simulations where results were exploding hybrido tanks.

    Isosurface was eating particles

    The next thing I tried was increasing hybrido substeps. This also did not help the fluid. I was still getting the same results.

    I though maybe the resolution has something to do with it and since I had a weekend of time I decided to go crazy with the global cell size. I put it down to .3 and the sim contained 90 million particles and generated 500gb of data through the weekend but again, the sim was not looking good.

    Bad splash

    Back in May we had the FMX festival and I had the chance to meet Gus and Luis from Realflow, I showed them some robot shots done with Realflow and asked me if I would like to be in the beta program. Since I tried Realflow 2015 alpha I decided to ask questions on this issue on the beta forums.

    I posted an extended topic on the hybrido interaction and how I wanted it to look. RealFlow Product Manager Gus gave me some tips about scene optimalization and tips on the robot isosurface.

    He told me to combine the robot into one single mesh and import it either as a multibody or in a SD file. Since I had trouble in the past trying to create a proxy model for the robot I had to check if there was another way possible.

    The problem was that after using mesh -> combine in Maya the robot lost it’s animation. However baking the animation first and then using mesh -> combine worked. Now I had the entire robot as one single object. Before this I cleaned up the rig and reduced the poly count significantly and got rid of a lot of the smaller objects. Now I have a perfect proxy model.

    The Solution

    I used advice from user pixellusion to introduce some randomness in the hybrido scene and added an ocean daemon. I decided to leave the interaction factor at 1 and tried other values.

    I also double checked FPS, scale and such but these where all good. Drag force was at default.

    I’ve also used Gus’s tip on getting more object friction in there but it didn’t create the splash.

    I’ve tried fiddling with Core/Surface particle sampling but to no avail. It did not create the splash that I wanted. I however found an solution for this whole problem.

    I am currently using 4 surface samples for the surface and 2 core samples for my sim. Also i’m using a 3 meter surface bandwith since our robot is 11 meters in “real” height. (Your tip was used here pixellusion, thanks).

    Eventually Luis had the right answer. It was the domain offset. I’ve tried before with a domain offset of 3 but it didn’t work. Since the default is 0.1 I already thought i went over the top. However last friday I tried a value of 5 and it started interacting the way I wanted.

    Now after some fine tuning after friday I’m getting the result I wanted with a value of 7.5 as domain offset (that’s 7 and a half meter!). Considering the robot size this might be logical, I’m not sure to be honest :D.

    I’m still using a relatively low depth water but the splash is working perfectly so far. I am still simulating as I am typing this. Here is the half-way result, VERY satisfied so far!!!

    Look at the bulge that’s happening at the bottom of the splash, the interaction is really good.. Exactly as I wanted.

    Also the speed is very acceptable. 15 million particles in this sim.

    no responses
  • 11/06/15 3D , Craft-Thales , School

    Robot Dive Iterations (S14e_Extra2)

    Some of the iterations that I did on shot S14e_Extra2.

    1.4 million bubble particles

    no responses
1 2 3 4 6