Kristinka Hair 3.0 released

Plugins linking to this thread: (hide)

Kristinka Hair 3.2Author: Anto Matkovic
The July 2014 update is another big one introducing new nodes like »Fit NURBS«, »Curls advanced«, »Curvature Amplifier«, »Grouping in Form« »Follow CurveList« »Stretch Hair« »Hair Filler Rounded« — for a full description see the si-community thread and the updated documentation.

The Kristinka Hair toolset is a new and unique way to set up, style and simulate hair using ICE nodes. A set of fully customizable ICE nodes Scalable, from only a few basic compounds for building basic hair, to very complex structures. Hair styling that always considers the whole shape of the hair. Styling works well for short and for long hair. Unlimited hair length, unlimited number of hair segments. Automatic, procedural generation of details - always with full control. Locks, clumps, curls, turbulence, are created by ICE compounds Additional modifiers, like cutting hairs by external geometry, constant strand length for key frame animation, resampling and subdividing strands, morphing with another hair, modulating hair's distribution over emitter, so user can increase density on most visible areas Full support for the Sofimage's built-in Strand Dynamics Framework simulation engine. Only factory ICE nodes were used, it should work nicely with any Softimage version from 7.01 on.

Other media available: Version 3.1's online 'first steps' tutorial. si-community user Bronco67 has created a video introduction for an earlier version available here. Also: A rendering tests thread, a TV ad by PsyOp featuring Kristinka Hair.

In case you want to apply kH3 nodes and dynamics on top of strands that were not generated by kH3 itself, here is a setup to enable that.

local backup: kristinka_hair_32_02july2014.rar

User avatar
Mathaeus
Posts: 1708
Joined: 08 Jun 2009, 21:11
Location: Zagreb, Croatia

Re: Kristinka Hair 3.0 released

Post by Mathaeus » 01 Jul 2014, 23:11

Hello,

Here's version 3.2. As I mentioned, it's collection of already posted stuff, plus new things.

First of all, there are small workflow helpers, like switches for all node types, in root node. For now, it's possible to separately enable form nodes, enable modifiers, and hair filler. 'Point Color' node is able to assign the random color to components, according to form node ID, chunk or guide.
From improvements, there's option in 'stick to mesh extrusion', to override the local twist of mesh stripe, in favor of 'by walk' defined orientation. That's in case if Syflex simulation creates too wild twisting of mesh stripes.'Deform hair' has both options built in, 'faceted' by polygon orientation, and 'interpolated' which is a mix of polygon orientation and point normal.For now, suggested method for all nodes related to static-deformed pair of something, it is what seems to works in SI 2015 (and everything bellow). Deformed copy has to be connected into ICE tree on emitter mesh, or Nurbs surface. Appropriate nodes have suffix '2'. Like 'deform hair 2'.Everything is supposed to work flawlessly with v3.1 stuff - except the functionality of new nodes, of course.

New nodes:

'Fit Nurbs' 'form' node, as an general styling operator. Opposite to 'follow nurbs', it is for hair that grows perpendicularly to emitter. It's filtered by plain distance to red boundary of Nurbs shaping surface, angle to normal of shaper as well. Should be much easier to figure out the behavior, than with 'follow nurbs'. However, by nature of searching from single line, single node can not cover properly the entire surface of human head, except maybe in layout like in picture. Node has internal trickery, to do proper filtering against self, similar to big 'follow nurbs' (should be visible in pic).'Fit Nurbs One' is a lite version, it takes only one, closest chunk, also it allows multiple NURBS inputs. This one is for individual stripes of hair.

Image

Curls Adv(anced) is supposed to do what ordinary Curls can't - exact 'to angle' blending from root, additional twist of hair stripe, also, what I call 'inverse tip', typical unfinished bending, at tip of curled hair. I've created first version for this pic. Node under the hood, is about ten times more complex than ordinary 'Curls' node. It works in different way, turns are defined by segments, in order to be able to use as much less segments per one turn. It's tied to 'chunk' in kH - one chunk, one curled hair stripe.

Image

More new modifiers, like 'Curvature Amplifier', which exaggerates the hair curvature, by testing the distance between strand segment and midpoint of two neighboring segments.'Bridge strands' which interpolates strand position, to randomly chosen another strand. Finally,'Skip strand', used for detailing in pic in previous post. At some strand position, it draws extensions according to tangents, then it blends the extensions. On flat portion of hair, it does nothing, on curved portion it does deviation, still relative to strand shape.
These three modifiers does not rely on predefined kH orientation vectors, should be easy to adapt them to some other ICE hair system. Also they are based on relative cheap computations, no big deal to use them repeatedly.

Image

There are other news, for example, there's new 'grouping in form' node, allowing to define the group IDs into individual 'follow nurbs' or 'fit nurbs' node. Should be a cleaner solution in case of many 'form' nodes in ICE tree. 'Follow CuveList', is version of 'follow curve', which rely on sub curves into curvelist.'Stretch Hair', more an utility for local re-scaling along strand.'Hair Filler Rounded' distributes strands in one chunk, more in circle like shape, instead plain triangle - it's for use after 'curls advanced' or 'clumps and locks'.

As usual, there are samples for almost all mentioned, docs are updated. This time, there is much more of compounds in pack - for 'just in case' reason, I put the older versions, too. Download ICE compounds, samples, docs.. here..

Good luck !

P.S. From my tests, it seems everything worked smoothly. Anyway don't hesitate to report possible problem - as now we have whole eternity :) for fixes.
The renderer "turtle" used by this scene, is not currently available. The "turtle" renderer will be used instead.

User avatar
mattmos
Posts: 420
Joined: 02 Dec 2009, 16:59

Re: Kristinka Hair 3.0 released

Post by mattmos » 02 Jul 2014, 13:00

Amazing work as always Mathaeus! ^:)^

The new modifiers look very useful, looking forward to playing with them soon.

User avatar
FXDude
Posts: 923
Joined: 19 Jun 2012, 21:59

Re: Kristinka Hair 3.0 released

Post by FXDude » 03 Jul 2014, 03:43

rray wrote:Very nice, you've got one of the trickiest hairstyles very natural looking

It just so happens that I never had to create hair (except long ago using geometry & quickstretch lol)

But this really makes me want to give it a go, from what I can see, it indeed looks like everything is there to make it look just natural!

I'm anxious to see how it behaves in animation, (with collisions, dynamics, etc)
and anxious to shade / render it :)

User avatar
Mathaeus
Posts: 1708
Joined: 08 Jun 2009, 21:11
Location: Zagreb, Croatia

Re: Kristinka Hair 3.0 released

Post by Mathaeus » 03 Jul 2014, 10:31

FXDude wrote:
rray wrote:
It just so happens that I never had to create hair (except long ago using geometry & quickstretch lol)

But this really makes me want to give it a go, from what I can see, it indeed looks like everything is there to make it look just natural!

I'm anxious to see how it behaves in animation, (with collisions, dynamics, etc)
and anxious to shade / render it :)
Hello FXDude
well these questions were discussed before, in many threads on old XSI Base and here. Since first release in May 2009, I think there's total of more than 100K views, of related posts. Anyway it's always nice to see, if someone new is looking at this thing.
Regrading simulation, here's my small test from 2012,wmw of about 5mb, already posted few pages before, of what's called 'stick to mesh extrusion', where actually Syflex is used. There are other methods to simulate, but this one seems to be most popular. Latest version has a few improvements in that method, there is sample with this setup in download.
About rendering, perhaps best known is Psyop's MiO 'Nose Job'. Also I'd be free to invite You to RRay's rendering test thread, or even to my site.

BUT ( there's always some... but), in all these years, the system relied solely on ICE nodes and nature of open, visual programming system. That is, there's always a big chance for new user, to step into a deep hole. No rails around dangerous areas, or at least, not that much.
The renderer "turtle" used by this scene, is not currently available. The "turtle" renderer will be used instead.

User avatar
FXDude
Posts: 923
Joined: 19 Jun 2012, 21:59

Re: Kristinka Hair 3.0 released

Post by FXDude » 03 Jul 2014, 12:43

Hi, I actually remembered those pics (and also thinking 'wow')

But I admit not having made the association, I actually wasn't really much into any forum t'll about 2012 believe it or not (apart occasional lurking)

But anyhoo, thanks for the tips & those links,
I think it's great for them to be resurfaced again including the nose-job spot,
( making I'm sure not just me go 'wow' once more :] )

User avatar
Mathaeus
Posts: 1708
Joined: 08 Jun 2009, 21:11
Location: Zagreb, Croatia

Re: Kristinka Hair 3.0 released

Post by Mathaeus » 07 Sep 2014, 02:21

Hello,

I think it's easy to see - this is a sort of re-construction of ICE kH styling node called "Follow Nurbs", in Houdini. Got the Indie thing week ago, so this is really just an experiment. Exactly, there's vector surface Operator at bottom of screen, defining the math part of ICE equivalent (if i correctly understood the VOPSOP). And this is the only part, similar to ICE. In short, I think it definitively worth to proceed with hair experiments in Houdini, even I it can lead to something conceptually different. Maybe completely different, maybe not, hard to tell, for now.

Image
The renderer "turtle" used by this scene, is not currently available. The "turtle" renderer will be used instead.

User avatar
Tekano
Posts: 488
Joined: 09 Jun 2009, 14:49
Location: London, UK

Re: Kristinka Hair 3.0 released

Post by Tekano » 07 Sep 2014, 15:17

heres a little example of some r&d made from few years ago, melena and kristinka styled hair with custom verlet/melena/spring style forces simulation applied to the guide curves.

Gossip is what no one claims to like, but everybody enjoys.

User avatar
Mathaeus
Posts: 1708
Joined: 08 Jun 2009, 21:11
Location: Zagreb, Croatia

Re: Kristinka Hair 3.0 released

Post by Mathaeus » 16 Sep 2014, 01:51

Tekano wrote:heres a little example of some r&d made from few years ago, melena and kristinka styled hair with custom verlet/melena/spring style forces simulation applied to the guide curves.
Thanks for posting this.

Back to Houdini hair experiment, just to avoid cross posting, a few early observations about Houdini.

First of all, It's really cool how this app takes the imported geometry, in a way similar to dealing with bitmaps in other 3d apps. That is, imported *obj or *iges still stays referenced on HDD - if I overwrite the file on HDD, Houdini loads the new version. This just calls to do poly modeling, using something else.

Second, Houdini "extract" tool, which creates a sort of SI clone. But, it's possible in Houdini to define on "clone", from which level to extract. Let's say, if I place "null" node somewhere in network ("null" node in Houdini is close to ICE "pass through"), I can call the result of network exactly at point of that "null". And network can include practically the entire scene, allowing to extract, for example, the door from model of house. Well a bit dark side of cool approach is, that it is utilized :), this time for rendering. Mantra likes the procedurally generated hair, at render time (which is also cool) so in this case, an ordinary slapping of hair shader in SI, became interesting network of extracted objects and cross connections in Houdini. Need to say that out of box, from the shelf "add fur", creates all these nodes automatically. Simple shader assignment to polygon geometry could be just a drag and drop. But I wanted to pass the all stages, node by node, so... understanding the rendering setup takes me more time than re-construction of ICE hair styling part. Anyway, once I know how the thing works, that's it.

Here in pics, there's a feature introduced in last Houdini: hair generated at render time (took a few seconds to generate around 50K of long hairs). Finally, new dual-scattering hair shader, providing the complete modern hair shading show. Primary and secondary reflection, transmission, glints. Basically, second part of "dual" does a caustics-like leaking of light, from bright points. Perhaps most visible above the eye. An old school approach was, to provide the transparent shadow shader to hair, which, obviously, does not create enough diversity in coloring, typical for real hair shading. This time I've used what's called "faked caustics". There's 'real' one on menu too, together with a good number of another options.


Image
The renderer "turtle" used by this scene, is not currently available. The "turtle" renderer will be used instead.

User avatar
Tekano
Posts: 488
Joined: 09 Jun 2009, 14:49
Location: London, UK

Re: Kristinka Hair 3.0 released

Post by Tekano » 23 Sep 2014, 18:55

hello Matic

am pleased to say am working on a hair job for a commercial here in London and am loving your new KH3 compounds so far. it has bought a lot of disparate elements together and improved considerably the control and styling from when I previously looked at it. I shall endeavour to show and tell when commercial is aired and perhaps a mini tutorial beforehand on dynamics.

just a quick question.

I use many individual follow curve nodes on top of an existing follow nurbs style, but would like some further control on the length of the hairs along each curve. when clump is on or off they are all regular lengths and would be nice to plug an individual KH3 random value into a 'length' slot for each follow curve. is this possible? if I set the length after the follow curves it affects considerably the overall hairstyle and does not compute actual length but a percentage along curve.

thanks again for these great set of hair tools they are proving very robust so far and with redshift its a killer combo
Gossip is what no one claims to like, but everybody enjoys.

User avatar
Mathaeus
Posts: 1708
Joined: 08 Jun 2009, 21:11
Location: Zagreb, Croatia

Re: Kristinka Hair 3.0 released

Post by Mathaeus » 23 Sep 2014, 20:59

Tekano wrote:hello Matic

just a quick question.

I use many individual follow curve nodes on top of an existing follow nurbs style, but would like some further control on the length of the hairs along each curve. when clump is on or off they are all regular lengths and would be nice to plug an individual KH3 random value into a 'length' slot for each follow curve. is this possible? if I set the length after the follow curves it affects considerably the overall hairstyle and does not compute actual length but a percentage along curve.
There is node called 'follow curvelist' in latest download, which takes the set of merged curves. If it is convenient to merge these curves into one and use this node, should be easy to utilize the indices of array into this node, already created for catching the sub-curve IDs. Something like this
Image

Otherwise, almost every 'form' node sets it's own id, attribute is called 'kH_SplitHairID' , actually X component of 3d vector raises by 2 for each 'form' node ( don't ask me why is just that, it's historical reason :D ). At the end of tree, inside node, global 'counter' from start of node (this one is called 'kH_Modifier_ID') is used to set the splithairID attribute. So it's possible to set something partially by each 'form' node, anywhere later in tree. Unfortunately, I said 'almost every' because just 'kH Follow Curve" doesn't, even it's possible.

Hair length in world units, this is combo of "kh get hair length" and "kh hair length" where 'divided by' of 'get' goes into 'factor' of 'kh hair length". No big deal to have something related to world units in particular 'form' node, but this wants an additional sampling of length, before any strand position is set - so nothing along this line, in download, for sake of simplicity. Also, real world units and function curves, this could be somehow tricky, as user manually has to define the re-mapped part.
The renderer "turtle" used by this scene, is not currently available. The "turtle" renderer will be used instead.

User avatar
Tekano
Posts: 488
Joined: 09 Jun 2009, 14:49
Location: London, UK

Re: Kristinka Hair 3.0 released

Post by Tekano » 24 Sep 2014, 13:09

Anto, thanks! will dig into this further. i wonder how you are merging your curves into the KH3 required crvlist?

I tried the Gear merge curves and CM_mergecurves script from Ciaran but both crash SI 2014 sp2 as soon as I connect the follow Crvlist node with the merge curve connected. the individual follow curves still work fine though
Gossip is what no one claims to like, but everybody enjoys.

User avatar
Mathaeus
Posts: 1708
Joined: 08 Jun 2009, 21:11
Location: Zagreb, Croatia

Re: Kristinka Hair 3.0 released

Post by Mathaeus » 24 Sep 2014, 15:22

Tekano wrote:Anto, thanks! will dig into this further. i wonder how you are merging your curves into the KH3 required crvlist?

I tried the Gear merge curves and CM_mergecurves script from Ciaran but both crash SI 2014 sp2 as soon as I connect the follow Crvlist node with the merge curve connected. the individual follow curves still work fine though
Fabricio Chamon's strand to curve, but, just personally, I don't use curves at all. Made this curvelist thing for someone, sometime around SI 2012, didn't heard complaints, after. Works flawlessly on my antique XSI 7.01.
I think it's again something that particular SI version don't like, related to curve list, this time. Unfortunately can't go into testing session, to find what this is.
Generally, for more control on few hero clumps (if this is the case), there are two new nodes, relying on NURBS surfaces, "kH Fit nurbs" and "kH Fit nurbs one" - second takes just one 'chunk' from emitter's area. *If* there is no problem :D with these two in particular SI version.
The renderer "turtle" used by this scene, is not currently available. The "turtle" renderer will be used instead.

User avatar
Tekano
Posts: 488
Joined: 09 Jun 2009, 14:49
Location: London, UK

Re: Kristinka Hair 3.0 released

Post by Tekano » 24 Sep 2014, 15:30

ok thanks for the heads up will try Fabrico's strand to curve and also your hero clumps suggestions. I find it easier to manipulate curves that nurbs surfaces - even though tried your tip of nurbs to mesh > constraint to mesh with switch context, its just an extra layer of fiddle in between

I do believe that merged curves are and have been pretty damn buggy in Softimage after version 7 yes...


***edit ***
actually I just used KH3_Follow_curve_JF_Orientation node with KH3_random_value into Normalize strand length. It seems to give me look am after - plus I have about 20 curves used, so making these into nurbs surfaces would have been a pain. am trying to match a celebrities loose bun with whisps look and hand placed curves are the only way :)

nice one Anto
Gossip is what no one claims to like, but everybody enjoys.

User avatar
talent103
Posts: 150
Joined: 08 Jan 2010, 15:47
Location: New York City

Re: Kristinka Hair 3.0 released

Post by talent103 » 24 Sep 2014, 21:43

Hi Mathaeus
Just a quick question. Am I able to use advanced curl node on the syflex model example? I copied and pasted the adv curl nodes from the model example into the Syflex done model example master point cloud but it does not affect the hair.
John
PS
Do you find that the Syflex method gives better results than the previous dynamics example you had provided?

User avatar
Mathaeus
Posts: 1708
Joined: 08 Jun 2009, 21:11
Location: Zagreb, Croatia

Re: Kristinka Hair 3.0 released

Post by Mathaeus » 24 Sep 2014, 22:23

talent103 wrote:Hi Mathaeus
Just a quick question. Am I able to use advanced curl node on the syflex model example? I copied and pasted the adv curl nodes from the model example into the Syflex done model example master point cloud but it does not affect the hair.
It should work, but it wants a bit more of strand segments, than count in this example, to do something visible, using it's defaults. Let's say instead of 'kh clumps and locks' node in example, try to put "kH subdivide strands". After this one, 'kH Curls Adv'. It uses the strand segments instead of relative length, this is to be able to do as much more turns with less points. One turn is 8 points by default.
The renderer "turtle" used by this scene, is not currently available. The "turtle" renderer will be used instead.

User avatar
talent103
Posts: 150
Joined: 08 Jan 2010, 15:47
Location: New York City

Re: Kristinka Hair 3.0 released

Post by talent103 » 24 Sep 2014, 23:22

Thank You! That worked beautifully!