Dynamic Hair / Hair Dynamics

May 5th, 2005 by Helge Mathee - Viewed 7023 times - Popularity: 8% [?]




As most of the XSI community probably already knows, the Softimage XSI hair dynamics engine is well suited to do precise collision, but not really for any other task. The stiffness control is totally limited, there is no control over the flex of the hair, there is no rigability to influence the hair’s dynamic motion, and, annoyingly, there is no way to make the hair find its way back to the original groom (in a dynamic way).

As I usually approach these kind of problems by completely rewriting something, I rewrote the hair dynamics from scratch. The result is a flexible, animatable and controllable hair dynamics system, which I’d like to present in this article.

hairdyn.jpg

The system works using vector fields for each segment of the hair, respectively each segment of a curve. Each vector’s force can be controlled along the hair using Softimage XSI’s fcurve editors for property pages (PPG). There are two curves for each parameter, so you can blend between two different setups and animate the blends.
The dyn_ctrl PPG has control over the following parameters:

stiffness: Controls how much each hair segment tries to straighten based on the previous segment.
flex: Controls each segment’s movement along the hair. This prevents bending and gives the hair a floaty look, esp. for underwater shots.
damp: This scales the simulation for each segment down, which enables the hair to move more or less depending on the setting.
density: Positive values allow clumping for each segment, negative values prevent hair segments to intersect using an avoidance algorithm.
Grav: Controls the amount of gravity force for each segment.
Wind: Controls the segments’ amount of wind influence.
Groom: Enables a force which makes the hair try to go back to its originally groomed position. Really good for tufts.
Tips: Uses each hair’s tip controller’s position as an additional attractor force per segment. This way the hair’s dynamics can be totally rigged.

All parameters are mappable to a weightmap, so you can get maximum control over each guide hair. The whole engine can be applied to just curves, so you do not need to use hair to get the dynamics working (as seen in the tree example movie).

ppg.jpg

All the different features can be seen in the following example movies:

Teaser (30 MB Sorenson 3 Quicktime)

Character with long hair and alot of wind (2.4 MB Sorenson 3 Quicktime)

Character with a mohawk kind of tuft (2.1 MB Sorenson 3 Quicktime)

Tree with chains enveloped to curves with dynamics (1.6 MB Sorenson 3 Quicktime)
(Tree setup by Adam Ferrall)

I hope you enjoy watching the movies, and let me know what you think!

best,

-H

Popularity: 8% [?]

13 Responses to “Dynamic Hair / Hair Dynamics”

  1. Jason Dexter says:

    Helge,

    This is really fascinating. I have been doing some novice level tests with hair over the last few weeks, and was finding it really hard to do things like get the hair to return to it’’s original grooming. I figured it was in there, and I was just being a meathead… I guess I wasn”t.

    You have clearly done a great job with this rewrite, and I hope it is really smoothing out the production. Very, very cool.

    Jason

  2. Peter says:

    wow thats very impressive, you”ve done some amazing things there :)
    anychance that us mortals will be able to try it out, in a plugin/script format? or is it all under some sort of NDA and can”t be released?

  3. Vince says:

    [pulling my hair out] Nice work Helge!
    It looks like a radical solution but the videos & descriptions show some very interesting features…
    I must admit that I have no idea of how this thing work. Does it completely override XSI’’s dynamics?
    Are you satisfied with the speed? How much time approx. did it take to build this toy?

    I wish I could go through every parameters myself but I assume you”re not releasing it, ah I miss the time when you were unemployed. kidding ;)
    Keep it up, always nice to follow your developments with XSI.
    Show more.

  4. buhrmi says:

    WOW

  5. Kjello says:

    Looks very impressive. Now we just need to see it expanded to be a full hair plug-in for Foundation :-D

  6. Helge Mathee says:

    Vince:

    Thanks.

    The dynamics engine works totally seperately from XSI’’s. The speed is realtime in most cases, the collision detection slows it down uite a bit though. I will possible sell / release it to the public, but I need to do some more testing.

  7. schyzomaniac says:

    Hi Helge,
    those videos look really awsome. If you”re going to release your hair solution to the public as a commercial product, will it run with the fundamental version of XSI? That would be an interesting alternative to get hair in Fundamental.

    All the best,
    daniel | schyzomaniac

  8. Mike Harrison says:

    This looks awesome. Add me to the list of people who would buy your plugin if it worked with Foundation. You”d be saving a lot of people a lot of money, since most of us non-pros can”t afford XSI Advanced. Although I bet Softimage would be upset, though, since Hair is one of the main value-added features in Advanced.

  9. Helge Mathee says:

    This is a hair dynamics solution, not a hair replacement. You will need hair to move it, sorry.
    ;-)

  10. Raymond says:

    Helge, Does:

    “You will need hair to move it, sorry.”

    Mean it won”t work at all with Foundation? Since the dynamics seems to work on curves,
    and it seems to be a good way to do whips, chains, treebraches, etc, would it at least WORK in
    Foundation, even if we couldn”t make it render like hair?

    Thank you for all your hard work for us geekizoids!

    Cheers…

  11. Hi Helge,

    The teaser video was really impressive. You solved the clumping with dynamic? How does that would work on a static model (i mean a single frame render for print work etc.)

    Do you need some beta testing? :)

    Best regards,

    Szabolcs Matefy

  12. Helge Mathee says:

    Raymond: Yes… that’’s correct. You can use the dynamics on other things than hair. Since it’’s a hair dynamics engine though, it will not be that satisfying…. ;-)

    Szablocs: Thanks. You can use the dynamics to just apply the clumping and then freeze the dynamics out! Using this system you have control over avoidance/attraction within a falloff range. This way you can control interhaircollision / clumping.

  13. Hi Helge,

    And when this little wonder will be available to the public? I`m really suffering with styling long hair…

Leave a Reply