My Mardini 2025 Process: Day 2 (Patreon)
Content
I thought it would be fun and interesting to share the process behind my Mardini entries this year. I had some free time on Saturday and put together a submission for Day 2. The prompt was Furniture. Here's the final result!
Concept
At first I thought of doing a 60s/70s Mod style living room with plastic chairs and bright colors. Then I remembered that Salvador Dali made some furniture designs back in the 30s. I looked them up and the Mae West Lips sofa was just want I was looking for.
I knew the sofa would be the subject of the scene, so I started thinking about what else to add. To keep the environment fairly simple I chose a sort of Brutalist concrete room with unusual windows. After going back and forth between a coffee table or a rug in front of the sofa, I decided on a rug with the Houdini logo.
Creating Assets
With the concept mostly settled, it was time to make the models.
To create the shape of the sofa cushions I made some Bezier curve outlines, converted to geometry, extruded and remeshed.
I'm delighted that Houdini now has decent sculpting tools. It used to be a pain creating organic forms, but with the Sculpt node it was easy to take my blocky cushions and mold them into a soft and cushy look.
I always use File Cache nodes in different parts of my node tree to create backups and to keep the scene working fast. If you don't add cache points then Houdini has to recalculate everything when you switch to different branches of the tree, which can get quite slow and annoying.
I made another curve outline for the bottom cushion and created the rest of that geometry using the same process. I branched off the pre-sculpt section to serve as the base of the sofa and resized it slightly.
For the rug I made a Grid, added automatic UVs and then nudged it around a bit with the Sculpt tool to make it look more natural. Note that I did the majority of the nudging from the Top orthographic view in order to avoid moving the rug up and down and clipping through the floor. I did switch back to Perspective view to nudge a few parts in the center of the rug upwards, always being careful not to go below the floor.
I attached a simple Hair Generate to the grid to create the rug fibers. I randomized the length a bit, added frizz and, very importantly, added clumps and curls.
If you look at reference pics of shaggy rugs they have tons of clumps. Adding them allowed for a striking increase in realism, otherwise the rug looked like mini golf fake grass.
Next, I created the room. The floor is a simple grid with auto UVs. The back wall is an extruded grid with two holes punched out in generally the correct location for the windows. If they weren't exactly in the right spot it was fine since I could just move or resize the wall when setting up the scene in Solaris.
Finally, I added Null nodes to every section of the tree in order to label what part is what. Traditionally you use all caps to name them, such as WALL, RUG, etc. This makes stuff super easy to find when importing into LOPs.
Scene Assembly and Rendering
I used SOP Import nodes to bring all my geometry into Solaris.
Everything was mostly in the right position already, but I attached Transform nodes here and there. The back wall in particular needed to be smooshed around to line up well with the sofa in camera.
I added a bunch of lights and experimented with positioning. I knew I wanted to have angular shadows coming in through the windows, so to get that effect I created some small, very intense lights just outside.
I moved them around with Karma running until the shadows looked good. I especially wanted to create some interesting lines on the floor.
At this point the windows were just black voids, so I brought in an Environment Light. This of course completely blasted out everything with "sunlight," so I added a Light Linker and disabled the environment from actually lighting anything. It's just there for the visual.
I searched through my HDRI catalog and was happy to find a desert scene that suited my surreal theme. Plus, it had two mountain peaks that echoed the two peaks in the sofa. Perfect! I rotated the environment around to get it lined up nicely and increased the exposure massively.
I created a bunch of materials and spent time customizing them to get the right colors, reflections, etc. I added the Houdini logo as a mask for the Melanin parameter of a Karma Hair material for the rug.
I used a lot of generic noise for displacement just to break up all the surfaces. This part is a bit weak, but there wasn't enough time to create great displacement that accurately reflects the materials in the scene.
Mardini allows the use of Greyscalegorilla textures and materials, so I found a decent concrete one to use for the floor. One really helpful feature of Karma is its Hex-Tiled Texture. This lets you take a small texture map and apply it to a large surface by spreading it out into overlapping, blended tiles with random size and rotation. It's not a perfect solution, but in this case it worked great to expand very small concrete color, roughness and normal images over the entire floor.
To give the sofa cushions a more cloth-like feel I dialed in the Sheen parameter. This makes a big difference and adds a lot of realism.
Finally, with all the important scene elements mostly set up, I continued to iterate over the scene, changing light intensity, moving stuff around and dialing in materials and colors until I was happy.
And with that, Day 2 and my first submission this year was done!