Bezier#01: Trail Decay

Some R&D for adding organic trail decay for classic line motion — trim & offseting through a bezier curve.
All process is done inside Houdini.


01. Split and shrink

Started with a simple iteration of dividing & resampling the curve.
Although the motion appears to be little complex, it's a result of only 2-step loop.

  1. Split curves in half at the certain probability.
  2. Shrink every curve just a little. (like 10% for each ends)

For both motion, I animated the split probability to go higher toward the end.

Though it starts as a bezier curve, it soon gets subdivided into tiny poly-lines after frame#2.
The problem was not only the unefficiency due to the massive count of verticies,
but also the deformation of the original line which comes from the iteration of resampling.
(Maybe, resampling is not always necesarry. depends on usage)

I started looking for the way to keep expressed as parametric(bezier) curve in the process as long as possible,
while maintaining fine control over each curves' behavior.

02. Treat as particles

This time I first generated particles (which is not rendered directly) for curve info.
Each particle contains curve position(1D) and length, which represents a partial curve from the original one.
And basic procedure in each frame is exactly the same as 01 - repeat split and shrink. But this time, by manipulating the particles.

This way, the original curve won't get deformed, since it is just used as a reference curve.

By setting velocities for each curve, they can now slide along the curve individually. (and overlapping won't be a problem).
This enables velocity inheritance from the head of growing line, or the curve before splitted.

Above all, treating as particle makes much easier to manage many properties for each curve.
For instance, something like slippness(friction?) can be expressed with decay amount of velocity.
Or adding length condition when splitting, slowing down the shrink speed, gives a feel of viscosity inside stroke.

It's interesting that we can now feel a quite complex material from the line motion, by just "trimming" the static curve.
You can see the transition of materials along time in both motions above.

03. Final Touch

Just bundled multiple lines for thickness and detail.
Added a feel like 3D brush by offsetting each original curve in 3D space.

Application: "SWOOSH" effect

Same technique used to generate swoosh effect around moving object.
Maybe can be used as realtime effect, as it is generated fully procedurally.

  1. Scatter points along vertex or surface.
  2. Offset points randomly toward normal direction.
  3. Generate trails if enough speed was given.