Stamp — Technical Breakdown

Okalpha
7 min readOct 28, 2021

--

Initial RND

Whenever we start a project, we start with lots of reference. Once we have enough reference we jump into Houdini and start with the very basics. In this case we started off with a blob of wax and a tube, pressing down onto the substance.

Reference imagery

At first, we tried FLIP, but we weren’t getting the volume preservation that we were after.

Next we tried Vellum Grains with glue constraints and that showed promise. The grains were preserving their initial volume to some extent and we were seeing a slight bulging around the tube as it was being pressed down.

Once we had a basic setup, we moved into the next phase, using an extruded shape on the face of the tube and increasing the point count.

Fine tuning the setup

The grains did a good job at taking the shape of the collision geometry but needed some work to achieve what we were seeing in the reference.

Initial vellum grains test

We did this by animating the rest length scale of the glue constraints, which replicated the expansion that occurs when the wax is being stamped.

As well as animating the plasticity, we were able to mimic a sort of hardening of the wax.

We grouped the grains that are not directly under the stamp resulting in a group of points that make up the outer ring. By increasing those points pscale over time, we managed to enhance the bulging of that outer ring of wax. We also used that group to lower the gravity over time, which allowed the points to curl up and around the stamp. Time to cache the result.

With animated pscale growth and plasticity
Final setup
Simulation network
Inside the Vellum Solver SOP

Fine tuning the stamp geometry

After creating the simple stamp geo, we created a higher fidelity stamp with imperfection and edge wear/damage.

Grouping edges

Extracting the sharp edges, we scattered points and used them to copy tiny spheres to. We ran them through some noise and converted them to a VDB.

Scattering spheres with noise

We also isolated the faces facing downwards and scattered some points, copied spheres to those points and ran them through some noise. Lastly converting them to a VDB.

Grouping faces
Scattering spheres with noise

Doing some VDB combining and converting to polygons we ended up with the high res stamp geo.

High res stamp

We finished off by doing some procedural grouping to create some attributes that are needed down the line as masks.

Bottom mask
Top mask

Okay, back to the grains

We simulated the grains with just over 100,000 points. We also gave the initial grains uv’s by using a simple UV Project node and tweaked the parameters until we ended up with a good initial uv projection.

After the simulation, we increased the point count of the grains by using a wrangle to add points between the existing simulated points. Which took the point count to just over 7 million points.

Next was meshing these points into clean geometry with stable uv’s for shading. This was by far the most complex part of the project. We went through lots of iterations and methods, but we will share what we ended up using.

Meshing the wax

Meshing network

Starting with a VDB From Particles, to convert the points to a VDB was the first step.

The next step was to smooth out the VDB. We did this in two steps. Using the mask input of the VDB Smooth SDF node, we could first smooth out the stamped area, and then smooth the outer ring. That gave us control over how much we wanted to smooth each area of the wax.

Just a little tip, for the masks to work, convert the mesh you are using to mask into a VDB and make sure you are using a Fog VDB and not a Distance VDB.

Then a global smooth was added just to get rid of any sharp areas between the two smooths.

We did some subtle sharpening next, just to bring back a little of the detail that was lost during the smoothing process. We did this by converting our VDB to a Volume, and inside a Volume VOP, subtracted a blurred version of the volume from the original and then added it back to the original. Then converted back to VDB for the next few steps.

For additional detail, we used a few of the particles from the original simulation as bubbles, which we just converted to a VDB and then either used the union or difference operation on a VDB Combine. Again using masks, we smoothed out the areas where the bubbles intersected with the wax stamp, to smooth it out so that we didn’t have sharp edges.

For the final bit of detail, we took the high res stamp geometry, converted it to a VDB and used it to subtract from the wax VDB.

We smoothed out the outer ring one last time, converted it to polygons and cached out the geometry.

UV’s

UV network

To get the uv’s stable and procedural, we broke them down into two steps. One for the outer ring of wax and another for the stamped area. The outer ring uses the uv’s from the grain simulation, as those deform nicely. For the stamped area, we created them using a camera projection. Let’s break it down.

Remember those attributes we created on the stamp geometry? It’s time we use them. We did a simple attribute transfer from the stamp onto the newly created wax geometry.

Then using a split, we extract part of the geometry using those attributes and create a sort of bounding volume, which we use to create a mask as well as a point group of that area.

Isolating using the top and bottom mask
Creating grouping object geo
Group using geo
Group inside area

We then split the geometry again into two sections, using that newly created group. That gives us the stamped area and the outer ring, which we can process separately and then combine later.

Stamp area isolated
Outer ring isolated

For the outer ring, we just transferred the uv’s from the grain simulation back onto the processed geometry. Ran the uv’s through a smooth and those were good to go.

For the stamped area, we grabbed a point on the animated stamp geometry and created a rivet. We used that rivet to drive a camera to use as the uv projection to get super stable uv’s.

Rivet driving camera for uv projection
Flipbook of the uv’s

We then merged the two pieces together, promoted the uv’s to vertex level and fused the two pieces.

We also exported a few point attributes for shading later in Cinema4d. These were to separate the top of the stamp, the bottom and a mask to use as a material blend factor for the outer ring and the stamped area.

Bottom mask
Top mask
Material blend mask

Lastly was to just delete any unnecessary attributes and groups and cache the final geometry.

The geometry was then pulled into Cinema4D in the form of alembics. Making use of the masks and some simple shader work, we were ready and set to render out a few sequences.

Object space noises for volume displacement effect
Mostly procedural noises, with a couple textures here and there

Final thoughts

Entire network

The way we built this network allows us to change out the logo or stamp design and then just run through the three file cache nodes which are handled in a ropnet so that we can run them all one after another. The result is a brand new wax stamp with a different logo.

Follow us on Instagram, Twitter, and Behance.

Ok.

--

--

Okalpha

A simple animation studio. We formed out of the depths of Advertising, and as we grow and learn, we want to share some of the journey with the people around us.