Rookie Awards 2024 - Open for Entries!
Castles are Boring
Share  

Castles are Boring

Saad Hassan
by Saad on 27 May 2022 for Rookie Awards 2022

Hi my name is Saad and I am studying at Pixl Visn media arts academy. This is my first demo project and I aim to finish two more and a group project until December of this year.

12 1040 1
Round of applause for our sponsors

I love procedural modeling and I knew right away that for my demo reel I wanted to create a procedural building or a castle, as I think it’s perfect for showing procedural skills. Ever since I modeled a procedural house as one of my first models it dawned on me that I wanted to create one for my demo reel.

As I started to dive into DOPs I recognized that I need a completely different geometry without intersections to be able to fracture it correctly.

So I got a challenge for me.

In 6 weeks I created a procedural castle which is ready to fracture with all the name attributes and groups, so even if I'm in DOPs I was able to go back and change the shape of the castle completely.  With the help of TOPs everything got an update and got cached to disc.

When searching for a plate to integrate my scene I found this beautiful lake video, it made me feel like my hometown (Garda lake Italy).

let's track it in Nuke and bring a low res plate in Houdini to start with my blockout and understanding the scale of my scene.

Perfect! Time for proceduralism.

Now I've already created some procedural buildings. It's always the same kind of approach. Create a curve and extrude it on the y-axis, giving it some segments to use as floor count. Assign attributes to primitives to use them as a place holder for windows, doors, balconies, walls, etc. To make them convex was challenging and after some trial and error, I found out that I can use the same curve that I created at the start, resample it and copy a box to those points then link the x-size of the box to the width attribute which I got from polyline node. Next, I copied it in y-axis and linked the offset of the y-transfer to the y-size of the box.

For the final part I used these placeholders to boolean out windows and doors. To create the procedural towers I used the same approach without any success. I tried to bend the boxes to match the curvature of the circle or to bend them in the rest position and then copy them to the circle. However it wasn't giving me the clean result I was looking for. Then I realized the solution is very simple. I can use a tube and link its height to the height of the walls, and in the segment  parameter divide the height of the wall by the number of bricks on the y-axis then use a facet node to create individual prims. With prime property SOP I scaled them down to get an offset between them and finally extrude them. Finally I have a procedural tower which I can copy to the corner points of the curve.

When it comes to fracturing, it is all very easy because of the naming convention.

With the xyzdist function I isolated the area to fracture and then I used a few material fracture SOPs and some custom boolean fractures.

I used only Glue constraints for this project because soft constraints were not necessary.

After optimizing my fractured geo with convexdecomposit SOP and assigning basic attributes with rbdconfigure SOP I imported all geo into DOPs and used rigidbodysolver.

As the force I used metaball and for window glass I used a pyro source in a sopsolver inside dopnet.

To create smoke, I made a custom pyro source which emits particles only from those faces where the normal direction is opposite to velocity direction by using dot product of normals and velocity vector and simulated them within popnet to use as pyro source and advect smoke from it.

For collusion I’ve created low res VDBs. 

During my study at PIXLVISN I always used Vray or Redshift for rendering so I created all the proxies for Redshift, but the smoke and fire was not giving me the result I was looking for and the rendering time was also very slow. Consequently I decided to try Karma and it blew my mind how easy it was to shade it by getting a scatter attribute from the pyro bake shader node. That encouraged me to render my whole scene in LOPs with Karma and learn this new context of Houdini. So I exported the ground, castle and volumes as USD files and with the component builder I build up an asset library of vegetation from Megascan and SpeedTree which I painted out with layout LOP.

For comp I’ve exported all the LEPs and a cryptomatte to Nuke and for the shadows I got a better result by projecting them on my plate in Nuke instead of using a shadow catcher.

Thank you for reading my entry!


Comments (1)