Houdini Algorithmic Live #108 - Strip Encoding

Junichiro Horikawa85 minutes read

June Jorikawa demonstrates creating strips from input geometry and peeling chips using KinFX in a live stream, emphasizing procedural techniques and workflow steps. The process involves preparing geometry, converting meshes to quad faces, and adjusting for connectivity to achieve a dynamic peeling effect.

Insights

  • June Jorikawa hosts a weekly live stream focused on Houdini, featuring tutorials on creating strips from input geometry using tools like Instant Mesh and KinFX.
  • The detailed workflow involves converting input geometry into quad faces, creating strips through loops, and procedurally unrolling them, emphasizing the importance of half edges for connectivity, edge splitting, and group organization to achieve a peeling effect with precise control and transformation.

Get key ideas from YouTube videos. It’s free

Recent questions

  • How does one create strips from input geometry?

    By preparing input geometry, converting it into quad faces, and creating strips using a for each Loop.

  • How can one procedurally peel chips using KinFX?

    By creating code to unroll the strips using KinFX procedurally, allowing for adjustments in angle and timing.

  • What is the significance of half edges in creating connections between primitives?

    Half edges are crucial for determining starting and ending points for edges, aiding in creating connections between primitives.

  • How can one optimize the creation of strips to avoid small connections?

    By limiting the maximum connections to 100 and implementing nodes manually for more control.

  • What steps are involved in creating a peeling effect using KinFX rig functions?

    By converting strips into polylines, establishing connections based on neighbor primitive numbers, and controlling rotation speed and range.

Related videos

Summary

00:00

"Creating Procedural Strips in Houdini"

  • June Jorikawa hosts a weekly live stream for Houdini, focusing on reading "Alchemic Life" and providing tutorials.
  • Due to being busy, June missed two weeks of live streams but is now continuing with a new topic.
  • The topic for this week's live stream is creating strips from input geometry, adjusting resolutions using Instant Mesh, and procedurally peeling chips using KinFX.
  • June outlines the workflow for the day, starting with preparing input geometry and creating a quad mesh using Instant Mesh from SideFX Labs.
  • The quad mesh is then used to create strip quad faces, followed by creating strips using a for each Loop.
  • The final step involves creating code to unroll the strips using KinFX procedurally, allowing for adjustments in angle and timing.
  • June demonstrates the process from scratch, starting with preparing the geometry and ensuring it is a solid closed mesh.
  • Instant Meshes from SideFX Labs is used to convert the mesh into quad faces, with the resolution adjustable.
  • June explains the process for Mac users to install Instant Meshes and integrate it into Houdini.
  • The process involves creating a quad mesh, deleting the original mesh, adjusting parameters, and ensuring the mesh is globally parameterized for control.

27:56

Creating connections between primitives using Half Edges.

  • The connection of primitives is based on the type selected, such as a strip having two neighboring polygons.
  • Half Edge information is crucial for creating connections between primitives.
  • The process involves creating lines connecting strips and quads to form a thread or string.
  • To address irregularities like crossings, splits are necessary at specific points.
  • The output quad group is named "quad loop" for separate geometry extraction.
  • Checking the number of neighbor polygons helps identify cross centers for cuts or splits.
  • Half Edges are utilized to determine the starting and ending points for edges.
  • Assigning edge groups to half Edges aids in specifying edges for splitting.
  • Splitting edges using the "Edge cusp" group alters connectivity and class numbers.
  • Ensuring proper conditions like four neighbor polygons before splitting edges is essential.

56:52

"Optimizing Node Connections for Efficient Processing"

  • The maximum connections should be limited to 100 to avoid creating small connections.
  • Implementing nodes manually allows for more control over the process.
  • Recursively repeating the process to fill leftover spaces with strips is essential.
  • Creating groups like "empty" and "strip" aids in organizing the process.
  • Merging all elements together for the next iteration is crucial.
  • Selecting a new starting edge from the new empty geometry is necessary.
  • Checking for boundary edges and finding perpendicular points is vital.
  • Setting a condition to stop looping when no new empty primitives are available is important.
  • Creating attributes to determine when to stop looping is a key step.
  • Converting strips into polylines and creating a peeling effect using KinFX rig functions is the next phase.

01:29:43

Establishing Connections for Primitives in KinFX

  • The condition for creating connections when the neighbor primitive number is one needs to be established.
  • Before removing the primitive, a line needs to be created to connect the primitive.
  • If a primitive has only one neighbor, connect it with other edges.
  • If the number of neighbors is zero, create random directions for connections.
  • To ensure all primitives are removed, create a nice line string with connections.
  • To use for KinFX, clean up and fuse all polyline paths to connect them as one polyline.
  • Check the class numbers and ensure the total number of primitive connected pieces matches the total number of primitives.
  • Use a rig doctor to create initial transformation information for each point.
  • Create a rolling effect by rotating the primitive along a specific axis for each point.
  • Control the speed and range of rotation based on a slider value to achieve the desired effect.

02:01:07

"Class transfer and wire capture troubleshooting"

  • The class is copied when a line is created, with the attribute "class" being transferred using attribute transfer.
  • The distance threshold is removed, and the class is set to zero using a trim group attrib.
  • After using the poly pass, the class disappears, prompting the need to bring it back.
  • Attribute transfer successfully brings back the class, allowing for further manipulation.
  • The reference class is checked against the current class to remove any discrepancies.
  • A wire capture connection is established, with parameters set for a clean capture.
  • Issues arise with capturing due to differences in polygon numbers on each side.
  • A check for missing classes is conducted to ensure accurate capture.
  • The wire capture data is unpacked to modify values effectively.
  • The wire capture data is adjusted based on UV values from the original curve for precise capture.

02:36:40

Troubleshooting technical issues in project animation.

  • The speaker is troubleshooting a technical issue related to class numbers and gaps in a project.
  • They suspect an order mix-up and ensure the number of classes match in different sections.
  • The speaker attempts various fixes, including adjusting point IDs and primitive numbers.
  • They encounter issues with wire capture and geometry twisting, trying to rectify the problems.
  • The speaker experiments with different parameters and settings to control the peeling animation.
  • They explore modifying the starting offset ratio and speed of rotation for the peeling effect.
  • The speaker tests the animation on various geometries like a rubber toy and a sphere.
  • They increase the number of strips and adjust their lengths to create different effects.
  • The speaker considers applying wallpaper to a wall using the animation.
  • They discuss the limitations of the current software version and plan to share the project files.
Channel avatarChannel avatarChannel avatarChannel avatarChannel avatar

Try it yourself — It’s free.