iTranslated by AI

The content below is an AI-generated translation. This is an experimental feature, and may contain errors. View original article
🟠

Notes from the 25th Houdini Casual Meetup

に公開
2025/08/24

header

This is a retrospective and introduction of the presentation materials for the 25th Houdini Yuru Yuru Meetup.

https://houdini-teaparty.connpass.com/event/364583/

I was extremely busy this month as well, but I managed to give my presentation. Phew, that was close. Let's start with the retrospective.

This Month's Theme

'Nature'

The theme for this session was 'Nature'. It was a very broad theme, so various ideas and expressions were gathered.

My Presentation

This time, I presented on the Fibonacci sequence, which is often seen in nature, and the Fibonacci spiral, which is one of its manifestations.

Dividing two consecutive numbers in the Fibonacci sequence approaches the golden ratio, and the shape itself is beautiful. It's also an interesting theme that infinite zoom can be achieved due to self-similarity.

loop

Implementing the Fibonacci Sequence

First, let's create a point cloud that holds the Fibonacci sequence as an attribute using VEX. RunOver is set to Detail.

Fibonacci sequence

attribwrangle_fibonacci
int a = 0;
int b = 1;
int temp = 0;
int max = chi('max');
for (int i = 0; i < max; i++) {
  // printf('%d,',b);
  int pt = addpoint(0, 0);
  addpointattrib(0, 'pid', '');
  setpointattrib(0, 'pid', i, itoa(b));
  temp = b;
  b = a + temp;
  a = temp;
}

Nothing particularly difficult. The part where the sequence is passed to the FontSOP uses the Copy StampSOP, which is a legacy mechanism.

By the way, in many programming languages, swapping values requires a temporary variable like temp, but Python allows a simpler syntax. I think this is one of Python's strengths.

python_fibonacci
a, b = 0, 1
while b < 150:
    print(b, end=' ')
    a, b = b, a+b

Implementation with For-Each

For-Each

After trying the Fibonacci sequence implementation above, here is a previous work example. Due to space limitations, I will omit the explanation and only introduce the network.

Implementation with Wrangle

Wrangle

This uses the first VEX-based implementation of the Fibonacci sequence. A brief explanation of the implementation points follows:

  • Create primitives with a while loop. By dividing the primitives per arc, they are used later for creating bounding boxes.
  • Draw the arcs with a subsequent for loop.

This node also has RunOver set to Detail.

attribwrangle_spiral
int fibo0 = 0;
int fibo1 = 1;
int fibo2 = 1;
int count = 0;
int spiral_polyline = -1;

vector center = 0;
vector direction = {1, 0, 0};
float theta = radians(270);
vector opposite = center + qrotate(quaternion(theta - radians(45.0), {0,0,1}), direction * sqrt(2.0) * fibo1);

while(fibo1 < chi("max"))
{
    int arc_pts = 24;
    float r = float(fibo1);
    float start_angle = theta - radians(90.0);
    float end_angle = theta;
    spiral_polyline = addprim(0, "polyline");
    for(int i=0; i<=arc_pts; i++)
    {
        float t = float(i)/float(arc_pts);
        float ang = lerp(start_angle, end_angle, t);
        vector p = center + set(cos(ang), sin(ang), 0) * r;
        addvertex(0, spiral_polyline, addpoint(0, p));
    }

    // Update center position
    vector move = qrotate(quaternion(theta + radians(90.0), {0,0,1}), direction * float(fibo0));
    center += move;

    // Update Fibonacci sequence
    fibo0 = fibo1;
    fibo1 = fibo2;
    fibo2 = fibo0 + fibo1;

    // Update movement direction
    count++;
    theta = radians(270.0) - radians(90.0) * (count%4);
    opposite = center + qrotate(quaternion(theta - radians(45.0), {0,0,1}), direction * sqrt(2.0) * fibo1);
}

Summary

The other presentations were also excellent, with everyone passionately sharing their learning outcomes and areas of expertise.

There were a wide variety of presentations this time as well, including comparisons with C4D, terrain manipulation using COPs, integration with game engines, examples of using ML, and Solaris scenes, all of which were very stimulating.

This study group is a closed event, so if you would like to participate, please contact me via my account Mentaiko (@kickbase) / X.

Discussion