Bread

For this month’s project, I wanted to do some more work with Houdini. A friend of mine was talking about the struggles of trying to model bread for a 3D short they are working on, and that got me thinking: I should be able to procedurally generate bread with Houdini… how hard could that be?

Very hard, it turns out.

I wandered through some research papers and didn’t find any that seemed particularly compelling, until I found this:

This is very impressive, and the paper behind this is publicly available. Unfortunately, it is full of rather scary math.

In the end, I did not manage to fully implement the paper or simulate impeccable bread within a month. But, I did learn a lot of lessons about understanding graphics papers, different simulation methods, and translating all of that into Houdini.


unending bread notes

Firstly, working with friends is massively helpful. Almost every weekend I spent a few hours grinding through equations with Graham and Michael, both of whom I worked with during my Animation Capstone and both of whom have much mathier degrees than me. Most of the content of the paper was novel to all three of us, but getting other brains to bounce my intuition off of and to keep everyone honest about whether they really understood things was invaluable. Also, they knew what all the Greek symbols meant.

Secondly, through the process of understanding this particular paper I feel much better equipped to read other graphics papers. I got the same feeling from reading syntax papers while for my Linguistics degree; there is a subject-specific pattern of writing and the complexities are much easier to grasp once you know what to expect.

This paper had a lot of very complex math up front describing reality. After that was much simpler (relatively speaking) math approximating the first bunch of math, which is actually implementable on a computer. Knowing this, I don’t think I needed to spend nearly as much time on the first chunk as I did, just grasping the shape of the argument would have given me enough familiarity with what’s being described to find my way through the actual equations that I needed.

Finally, I got a lot of experience mucking around in Houdini. The methodology described in this paper centers on moving information between a particle representation and a grid representation, which meant juggling many different volumes and point attributes. I feel far more confident in doing these core manipulations, and more importantly in visualizing and debugging all sorts of different data in all sorts of different contexts.

I also have much better intuition for what sorts of workflows to use for what, something that has confused me in the past when working with node-and-code tools like Houdini. Some parts of the paper was just applying different equations which felt very comfortable to put in a giant stack of wrangles, and others were some of it was very geometric operations like surface detection that were quite awkward expressed in math, but became very fluid using Houdini nodes.

At the end of the day, I’ve got a bunch of points that can respond to forces, move around, and will expand a bit when heated. It’s runs very slowly and does not look tasty, but it doesn’t explode completely anymore so I’m happy.

Previous
Previous

Root Cause

Next
Next

Theseus: Return to the Labyrinth