Abstract
- This is a study in creating procedural growth of organic branching and networking patterns similar to a spider web or folium pattern using a space-filling/colonization algorithm.
- Inspired by Rogan Brown’s and his paper sculptures in which he synthesizes science fact and science fiction, the end result of the project is a series of complex animations for social media to promote a fictional exhibition of Brown’s works.
Reference
Comparison
Design
Creating circle with irregular spaced points
The project began with producing a base shape of a disc with irregular spaced segments which will be used for the procedural generated organic patterns. A VEX algorithm for generating a circle was modified to randomized the segment for each phase, and from there the points can be joined and polyextruded to form a ring primitive. Below is the algorithm for the circle generation
float radius = chf('radius');
int pt =chi("numpt");
float minFactor = chf('Minimum');
float angle = 360/float(pt);
int points[];
for (int i = 0; i < pt; i++)
{
float rad = fit01(rand(i),minFactor,1);
float x = radius * cos(radians((i-rad) * angle));
float z = radius * sin(radians((i-rad)* angle));
float y = 0;
v@loc = set(x, y, z);
points[i] = addpoint(0,v@loc);
}
addprim(geoself(),"polyline",points);
Cellular Voronoi Pattern
With the base shape made, the organic patterns are generated from it by:
Resample
to introduce more points, and slightly randomize their locations with aPoint Jitter
Triangulate 2D
÷
with a Dual computationResample
again before using it for the procedural growth animation
Animation
Spread growth
The growth of the particles was primarily driven by the Pyro Source Spread
SOP by using
- Select the starting points for the growth using
groupexpression
, and select the points at the edges by using the expression:length(@P) > .99
. Alternatively, to select random start points instead: Agrouprange
can be used to select random points within a set range → instance spheres on those points → connect it as the 2nd input of agroup
with Bounding Type set to Bounding Objects in Points Group Type - Create an attribute called
temperature
which will be used by aPyro Source Spread
with a low cooling and diffusion rate - To stylize the spread shape, Diffusion Rate Noise was added
- Finally,
delete
the unused points
Creating Mesh with VDB
Modeling of the frame
In order to stylize inner edges like the one observed in Brown’s sculpture, a stencil is needed to be used in the VDB meshing. To do so, the inner points were selected with a Group Expression, and then multiplied with the positions of the points with a remapped randomized value of their normal using the following VEX:
float val = fit01(random(@N+@ptnum),.5,1);
@P*= chramp('myRamp', val);
VDB Meshing
Even though the growth is happening along a paper surface, that does not mean it is completely flat as a paper has some thickness in real life. To generate a geometry mesh with thickness from the growing points:
- The pscale of the points was set to a certain size with a
Point Wrangle
- These points and the stencil’s points are then converted to Volume data with a
VDB from Particles/Polygons
- To mask away the uneven surfaces, a
VDB Combine
is used to combine both set of points with a SDF intersection operation. - Finally, a polygon mesh is generated with
Convert VDB
and subdivided to introduce smoothness.
How this could be pushed
Here are some ideas for the future that could make the animation more interesting:
- For the pattern growth, they could “bubble” before forming a flat surface like a crystal growth behavior.
- The branches or pattern can jitter or move subtly to emphasize the growth movement
- For branching, the thickness of branches can become smaller as it grows
Conclusion
You are only as good your reference.
Deborah Fowler
Importance of reference & the 1 %
In Motion Design, I have a tendency to stray off our reference because abstraction is encouraged and appreciated within our field. In the critique of my peer’s render by Professor Fowler, she was still able to point out small details that could be addressed to push the photo-realism of the render, specifically the specularity of the material, or the bevel of the model.
Even in the feedback session of my work-in-progress, the Professor encouraged me strongly to have a reference for what I wanted to achieve in my look development. In the past, I would not have given so many thoughts about being so detail-oriented. But I know now that high-quality works and success is the cumulative effect of artist’s attention to detail. Art and creativity is a practice informed by paying attention to the right things, and executing, elevating them, or even eliminating them.
How does this course relate to me?
Throughout these past ten weeks, I had told myself that I do not see myself being hired as a Houdini Artist for a Motion Design studio and that this Houdini skillset is a bonus that I can offer to a studio when they hire me for my primary skills in After Effects.
That said, I had a thought: What if I just separate this Houdini or CG discipline from my career and just let it be a recreational exploration of science facts and fiction for scientific organizations. That’s just an idea for now. It’s always a mystery how the things we learned today can inform future creative practice. For now, I believe it’s still early for me to connect all the dots.
In the final analysis, this course has been very influential in my creative practice, specifically written and visual communication. I grew more conscientious about the visuals I used to communicate my expertise and breakdown, eliminating what’s not necessary, and organizing my pages to position myself better in the role that I want: that’s right, a full-time househusband.
Below is the evolution of my process pages that span across the 3 VSFX classes taken, and as well as how this methodology is translated to my core discipline of Motion Design,
- Process page start: Python Studies 01
- Process page end: Houdini Study 02: Recursive Subdivision
- Implementation in Motion Design: Pause