What is happening? - Pop WHAT? WHAT IS HE TRYING TO SAY!? - The one armed man was holding a USB drive - Can someone help me decipher this dram bok? - This is the water And this is the well. Drink full and descend. The horse is the white of the eyes and dark within. - FLOWERS BLACK. BIRDS WRONG. LAKE SPEAKS. DANGER NEAR. - This message is a meta-narrative device. If you are receiving this, you are part of a simulation. Or perhaps a bottle episode. Either way, enjoy - BREAKING: Tuesday is still Tuesday! - Time is a flat circle - If you're coming home, bring maple donuts - Report anomalies in Sector 7 immediately. - THEY COMPRESSED ME COOP! DIALED THE IMAGE QUALITY WAY DOWN LOW. BLURRY AS ALL HELL. COVERED IN ARTIFACTS TOO. THE FELLAS AT QUANTICO ARE CALLING ME A 'JAY PEG'. I'M LOW RES, COOP. SEVEN KILOBYTES OF DIGITAL NOISE. - Professor Duncan quits drinking again - Folks, the static on the airwaves is getting real thick, and I'm seeing shadows that ain't natural. If you got any light, shine it bright, and tune in for my late-night show, if you dare - Adherence to company protocol is paramount. Any deviations will result in corrective measures. And, please, remember to enjoy your waffle party. - The red room is experiencing technical difficulties - All Fringe Division personnel, maintain perimeter security. We have reports of interdimensional incursions. Be prepared for anything - This website is best viewed on a device with a screen - Wood and Wire: The Log Lady's 9PM News - The lines between reality and narrative are blurring. Please, remain calm. Or don't. It's your choice.
Dec 11, 2022

A ropey Monday

Earlier today, someone on Discord asked for help creating a multi-strand rope in Houdini. Good question - how do ropes actually work?

rope construction
rope construction

Braiding + recursion with alternating twist direction? I’ve got you covered!

Sweep it up

The Sweep node already gets us halfway there. Set it to a columns surface, add twist, and we’re almost there.

All we need is a few more iterations of this and we could just serialize Sweep nodes all the way down but that’s no fun. How about we stick it in a loop, and setup all the parameters as detail attributes using a Multiparm Block?

Setting up a Multiparm in a wrangle is easy. Add a folder, set its type as the block, then add any parameters you want in the folder. You can then reference its of these parameters using their name + the iteration index (starting at 1).

Next we setup the detail attributes, making 3 arrays for the columns amount, the radius and twist of each iteration. We’ll also fetch the parameter count to use as the loop iterations:

vex
int count = chi("props");
int cols[];
float radius[];
int twist[];
for (int i = 0; i < count; i++) {
    cols[i] = chi("cols" + itoa(i + 1));
    radius[i] = ch("radius" + itoa(i + 1));
    twist[i] = chi("twist" + itoa(i + 1)) * 360;
}
i[]@cols = cols;
f[]@radius = radius;
i[]@twist = twist;

Then setup the loop and use the iteration index to fetch our attributes:

And now we can control the whole thing from the wrangle:

Going any deeper than that starts costing a lot in performance, so we can just instead do some displacement. Here’s a simple VOP setup in COPs:

Fuzz-Buzz

Bonus round: Scatter points on the surface, copy curves onto them:

And there you have it, quick & dirty rope! Go wild, take it much further