Week 1 – Introduction to the tools
For our first week we went back to the basics of Houdini and experimented with adding colour to meshes.
For the first one we added colour to particular points on the box, because the points don’t hold shape data Houdini calculates a median surface to apply the colour too, giving this faded look
Alternatively we can also apply the colour to primitives (faces)
These node graphs show how each colour was applied, by specifying points or primitives in the colour parameters
The next thing we experimented with was adding colour procedurally using a group node and a bounding box.
Firstly we made a group which I called “grey faces” we applied a bounding box to it which means that it operations made to the group will only appear within that area. From here I then specified the height/area of the box added the grey colour to it. Now that I have a group that is being manipulated I can also add other nodes such as a transform node allowing me to move just those faces collected in the group node which is what I have done above.
Individually I decided to also experiment with adding a yellow colour to specific faces. This ended up being very easy as I just used the face selection mode to select faces and entered that data into the colour node to tell it what primitives it should affect.
Overall these exercises really helped in getting me accustomed to Houdini again and it’s improved my confidence in the software
Making cheeseboard
Our first little project was to make some cheese on a cheeseboard.
Here we defined the cheeseboard. We used an expression for the centre of the depth of the cheeseboard so that if the thickness needed to be changed the board would still be positioned in line with the grid (and cheese location)
Here we added a texture to the board
Next we started working on the cheese and making the holes. First we scattered some points on the rectangle that we made for the cheese and then used a “copy to points” node to add spheres to the location of the points
We then used an “attribute randomise” node to randomise the size of the holes, using the “pscale” attribute
After that it was time to use a boolean operation to extract the hokes from the cheese.
In order to improve the realism of our creation we converted our cheese block into a volume using a VDB from polygons node, this allowed for spheres to be created inside the block rather than just on the outside surface.
This is the final outcome of my block of cheese for finishing touches we converted our cheese in and out of a volume again to round the edges slightly, in between this we also added a “vdb smooth” node and I added a yellow colour.
This was a good exercise to get back into modelling in Houdini and using the interface, I learnt a lot and can definitely see how transferable these techniques are
Puzzles
To finish the lesson we were set some puzzles where we had to rearrange/ connect the nodes in the right order to achieve a particular result, these are the couple I accomplished. I enjoyed the challenge of these however I did get stuck more than I would have liked
At home skills check
To test what I had learned I decided to try and make a crumpet as it was something similar to the cheese exercise that I thought would reinstate what I had learned in class
Week 2
This we week worked on an activity of making a line of dominoes that fell down
![](https://campuspress.uwl.ac.uk/rachel/files/2024/10/1_making-curves-for-dominoes.png)
Here we used the Bézier curve tool to create curves on the plane in top view. This is where the dominoes would sit
![](https://campuspress.uwl.ac.uk/rachel/files/2024/10/5_resample-length.png)
Changing the length of the resampling node so that the dominos will touch when they fall therefore creating the desired effect
![](https://campuspress.uwl.ac.uk/rachel/files/2024/10/7_changing-tangent-to-v-so-that-copy-to-points-reads-it-as-velocity.png)
Renaming the tangent attribute to “v” so that the resample nodes reads it as velocity so that all the dominos face the right direction according to their placement along the curve
Here is a first rendered result of the simulation
Here is a modified result where I added colour to the dominos and made the scene a little more aesthetic
Next we repeated this process however this time we used some stepped geometry to map the dominos to using a ray node
We made the path for the dominos above the geometry and then the ray node projected that path onto the geometry from above.
This is a result. Unfortunately we could not get this simulation perfected however this example shows some of the stages to achieve this effect
Lego Bricks
Th next exercise was to make lego bricks.
For this we modelled one brick duplicated it over a grid. Copied the grid with an offset and transform and then copied both of those layers on top for any desired number of times.
We then added in some pre-made geometry and isolated the points of the grid of bricks that it came into contact with. This meant we could show only these bricks therefore making it appear the object was made out of lego
To improve the results we made the bricks smaller and more compact. I also changed the colouring so that it would only use certain colours throughout the piece and tweaked the frequency a little
Work at home to reinforce learning
At home this week I decided to try and make my own version of the dominos exercise
Week 3 – Oceans and destruction
Making an ocean sim and adding scattered ducks/geometry that move with the surface of the water
We started the lesson by learning how to simulate oceans by exploring the “oceanspecturm” and “oceanevaluate” nodes. These allow us to make realistic ocean simulations that are highly customisable.
Our next step was to add points to the surface that we could copy our ducks to
Here is the final node graph for the project. Essentially to get the points to accurately move the ocean sim, we had to freeze the first frame and then project the ducks to the points based on the points’ normals, the point deform then calculates where to move/orientate the points for each subsequent frame
We then randomised the “up” value which were the ducks orientation on the x and z axises meaning all the ducks would look in different direction
As seen here we made two different versions of the sea, one will less geometry that would run the simulation more effeciently and a more highly detailed that would run out. This saved system memory and time while achieving the same result.
Building a brick wall that will be destroyed
Our next exercise was building a brick wall. For this we used a trick we have learnt in week 2 where we used multiple copy and transform to get a customisable wall that can be added to or reduced at any point in the project
This is the first render of the excersise where each brick was its own entity so they all fell individually.
This is not particularly realistic as brick walls in real life are glued together therefore we experimented with adding constraints.
This was my first result with constraints which worked but they were only sticking together horizontally so the result was still not ideal
This last experiment was doing the sim when the bottom row of bricks was glued/constrained to stay on the bottom of the ground plane, thus meaning they didn’t crumble like the rest of the scene. With these parameters I struggled to get the velocity to work in the same way so the balls motion is not ideal.
I then decided to try and neaten the node graph a little and make the sphere it’s own object/geometry node so I did that and just used an object merge to add it in to the solver again. This made more sense in my head in terms of navigating the file. Especially with it being a non destructive workflow
Week 4 – Introduction to vellum
This week we looked at creating cloth simulations with Vellum
This was our basic node graph where we remeshed a grid (to make better geometry for the cloth), had a sphere as the object the cloth would adhere to. The simulation is all handled by the vellum solver
This is one of my first simulations.
Making this more complex
To make this more complex we added pinned sections using groups and bounding boxes to select the points we wanted to stay in place. In this scene we decided to make a hammock type setup where two parallel sides are pinned
We also added tearing to the cloth by breaking the geometry, then stitching it back together but making those binds breakable. We did this using a noise node.
Additionally we added some more geometry to make some balls fall onto the cloth and break it
A render of the balls tearing the cloth with pinned sections of the cloth fighting the weight
Cloth falling on crates
For this project we were supplied assets and materials for some crates and we made a project where the cloth would fall over them in a relatively natural way
Our first step was to make the crates fall
To do this we copied the cases to scattered points on a sphere.
This is the result of the falling cases
This is the result of the cloth falling on the crates.
I enjoyed these activities as I had been curious about cloth sims in Houdini however I do need to get more practice before I feel confident in recreating it
Week 5 – Making a plate, some noodles and a sauce simulation
This week we delved into a project of making a scene when noodles fall onto a plate and the sauce on them transfers from the noodles to the plate.
![](https://campuspress.uwl.ac.uk/rachel/files/2024/11/using-colours-and-group-to-set-up-different-sides-of-the-plate.png)
Using colour groups looking at the normals to select the “top” and “bottom” of the plate so that we could texture it accurately
![](https://campuspress.uwl.ac.uk/rachel/files/2024/11/Screenshot-2024-11-03-at-18.44.52.png)
This is a screenshot of all the geometry nodes used in the project. It shows how we segregated the piece up into different node charts
![](https://campuspress.uwl.ac.uk/rachel/files/2024/11/stage-for-plate-and-noodles.png)
This is a lot inside the stage view where we can see how Karma will render the object. Here we have to import the objects and add materials to them (inside material libraries) as well as lights and cameras to render
This is a comp of the initial simulation of the noodles landing on the plate
This is the full node graph for the noodles. We made a circle of lines using copy to points. Randomised the normals slightly to make them slightly different rotationally. We then put them in a solver to collide with the plate. The last few nodes focus on the look of the noodles and adding the sauce attribute
In the noodle sauce geometry tree we imported the output of the plate and noodle trees and plug them into a solver that is detailed below
Inside the noodle sauce solver we transferred the sauce attribute from the noodles (input 2) onto the previous frame of the plate
This is the result of the simulation.
There was a lot to learn here and I would like to revisit it to make sure I understand it fully but I think I got a lot of transferrable knowledge from this exercise
Week 6 – Working on wind and sail collision
This week we build a project where a windmill would spin and a furnace next to is smoking and the smoke affects the sails of the windmill
A video of the windmill with animation
A video of the smoke sim interacting with the furnace
![](https://campuspress.uwl.ac.uk/rachel/files/2024/11/BUILDING-SMOKE.png)
Left: The node graph for the smoke sim, right: the smoke sim solver which adds the furnace as a collider
A video of the final sim result
This node graph shows how we split up the sails into the different elements needed
- The sails put into a sim to make them act as cloth
- The parts of the windmill model that were unaffected by cloth
- The sails collider to use in the smoke sim to make sure those two are interacting properly
These are all the objects we had in the scene to make the sim
Week 7 – Destroying various materials
In this weeks lesson we used a default character and animation and built some walls for them to smash through.
These walls/obstacles were made of different materials so we could learn how they all worked and how they functioned differently
Firstly we started with a glass panel
![](https://campuspress.uwl.ac.uk/rachel/files/2024/11/glass-fracture-nodes.png)
This is the glass panel and how the fracturing looks for this material type. Here you can also see the node graph used to make this
After setting up the glass panel we wanted to modify the simulation so that the bottom fragments of glass would stay pinned to the floor as this is what would happen if the pane were in a window or doorway.
To do this we selected the bottom points grew the selection to select the lower fragments and then set these to be inactive (we made an active attribute assigned 1 to everything by default and then made these points 0). This meant they would not be included in the simulation
This is a video of the sim. We temporarily deleted the majority of the characters geometry just so that the sim would run faster and more efficiently whilst we were working on it
Next we added some wooden poles as an obstacles for the character and this is a video showing the result of that
Here are all the node trees. Initially we set up multiple solvers for each sim however we learnt how to use “packing” and “unpacking” in order to combine both simulations into one solver
Here is a close up of the wood sim and the nodes for it. It’s a very similar set up to the glass including pinning the lower points of the geometry
Something we did have to do so that the sims would run independently is to make sure that the “enforce unique name attribute per instance” was ticked within the red unpack node. This meant that the data for each sim would be read seperately
The last obstacle we added was a concrete block that the character would smash. This was still using and rbd material fracture just with another setting, this time we didn’t need to pin down the lower geometry points as the block was already on the floor and being smashed from above
We also learnt how to make the character themselves crumble at a specific time. To do this we added a time shift node, simulated them falling/crumbling and then used a switch to say after this specific frame, please crumble the character
![](https://campuspress.uwl.ac.uk/rachel/files/2024/11/inside-test-geo-unpack.png)
This is inside the character geometry node. We had to unpack the character so that we had more data points to work with for our simulations
Week 8 – Using tracked camera data and adding an asset and effects
This week we looked at adding a truck to a piece of live action footage and adding smoke to the tyres
![](https://campuspress.uwl.ac.uk/rachel/files/2024/11/truck-and-line-node-graph.png)
This is the node graph to add in the truck. We added the truck object and also a path for the truck to follow through the footage
![](https://campuspress.uwl.ac.uk/rachel/files/2024/11/truck_animation-graph.png)
Here is the animation graph for the truck. Here we can make sure the truck stays on the screen. Additionally for as the truck stops we changed the animation type to match so that the velocity evens out as the truck slows down (similar to easing in and out)
Here are some links to videos that show the progression of this piece
Adding the smoke
![](https://campuspress.uwl.ac.uk/rachel/files/2024/11/merging_new_geo_into_smoke_sim.png)
This is how we fed the lower pieces of the truck into the smoke simulation. We had to use a poly fill node here too as the simulation scatters points a lot more accurately on enclosed meshes
Here is a video of the smoke simulation added
Doing a Maya test
Thinking about my final project for this module. I took some time to test out moving assets from Maya and moving them in to Houdini so I tried out making a glass pane in Maya and shattering it in Houdini
I made a very simple rectangle for the glass and an animated sphere as the collider and got those to collide as expected which I was pleased about
A test glass fracture simualtion
Week 9 – Making a procedurally modelled building
This week we learnt how to make a procedural model of a building in Houdini
To set this up we learnt how to make a control node that has all of the parameters for the different aspects of the building. This is made by adding parameters to a null that we can define the values ourselves.
We then use these relative references as we make the different components so that we can change these values whenever we want to
![](https://campuspress.uwl.ac.uk/rachel/files/2024/11/making_of_control_object.png)
The menu for how to set up the controller node. Adding in floats and integers depending on what attributes we need to control
![](https://campuspress.uwl.ac.uk/rachel/files/2024/11/switch_layout_type_1.png)
Here we were building the floor plan. We put a switch down here so that we could have two options for the layout of the building
![](https://campuspress.uwl.ac.uk/rachel/files/2024/11/node_graph.png)
Here is the node graph for that part of my progress. Here you can see how we made each aspect as they are separated into their separate trees
Video of the procedural model completed
This is a video of the completed procedural building model in practice
Learning how to add materials to imported FBX models
Something I had been struggling with at home was how to assign materials to imported FBX files from Maya/Substance as I am beginning to work on my final project and had been stuck on this.
It was explained and after that I decided to make a cube with materials as a test to complete in the lesson so that I could test out the workflow and get more support if I needed it
![](https://campuspress.uwl.ac.uk/rachel/files/2024/11/Screenshot-2024-11-29-at-21.49.19.png)
Inside a material. This is where I add in the images from substance and plug them into the relevant shader properties
![](https://campuspress.uwl.ac.uk/rachel/files/2024/11/Screenshot-2024-11-29-at-21.49.45.png)
This is where we plug in where Houdini can find the material and then where to place the material on the mesh
![](https://campuspress.uwl.ac.uk/rachel/files/2024/11/Screenshot-2024-11-29-at-21.50.37.png)
This is the result. This simple experiment worked and I can now see the imported texture on my model in Houdini
I was very grateful for this explanation and that it worked out and I look forward to being able to take this workflow forward into my own final project.
Week 10
This week we created a flamethrower sim.
We started of making a particle simulation to generate where the fire emits from
These videos show the progress of the particle system.
This was the initial pass
With this one we added noise so that the flame would jitter and also expand and constrict slightly. Just to add more movement to the flame
This is a look at the fire applied to the particle sim
![](https://campuspress.uwl.ac.uk/rachel/files/2024/12/pyro_bake_volume_.png)
Here I am highlighting the pyrobakevolume node which allows the fire sim to be rendered and gives us a lot of options for controlling density, temperature and smoke
Week 11 – Making a rain simulation
This week we learnt how to make a rain simulation with secondary splashes from the raindrops and rippling water
This is a video of the rippling
This is a video of the rain particle sim and the ripples
Week 12 – Working on final project
the idea for my final project piece was to focus on one building that was being destroyed during a blast of Godzilla destruction. In my mind there are building surrounding mine however I didn’t have time to generate those.
Therefore my simulation is off my one building being impacted. First by the wind of the explosion, secondly by rocks/debris hitting the glass panels from another buildings destruction and lastly by Godzilla trampling it from above.
I kept the camera angle quite tight as to focus on the sims butI could have extended this to include more context
Reason for separating the sims
When creating the sims I had trouble with them not overwriting one another so I had to make them quite separate in order for them to render the way that I wanted them to. This doesn’t give the best result as the hanging sign and window glass stay rigid during the building collapse which in reality wouldn’t happen however within the time frame I couldn’t figure out a way to have them be involved in two simulations following on from one another.
This is also the reason why I have struggled to make renders of the individual sims, having completed the third and having to render the scene pre and post building collapse and comp it together I am struggling to find a way to make individual sim videos
Final output
Making of
![](https://campuspress.uwl.ac.uk/rachel/files/2024/12/Screenshot-2024-12-18-at-17.42.26.png)
This is the node graph for the building simulation, I used a switch node here so that the building would stay stationary until frame 48 which is when the other simulations are mostly completed
![](https://campuspress.uwl.ac.uk/rachel/files/2024/12/Screenshot-2024-12-18-at-17.39.24.png)
This is an image of the stage context for this project. I had a lot of materials to assign to geometry. Additionally I found that I had to reassign the materials for the building, depending on whether a simulation is running on it or not, therefore I had two different sets of materials that I had to apply depending on whether the sim was running (I based this on frame range rendering the scene out twice)