Kristinka Hair 3.0 released
Plugins linking to this thread: (hide)
Kristinka Hair 3.2
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
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
Re: Kristinka Hair 3.0 released
You can freeze an ICE tree, as soon as the attributes are used in another ICE tree the attributes will stay.
if you are in 2013+ you can eventually create static ice attributes by script ( but not locations).
if you are in 2013+ you can eventually create static ice attributes by script ( but not locations).
-
- Posts: 35
- Joined: 20 Apr 2013, 17:40
Re: Kristinka Hair 3.0 released
Thank you very much, didn't get that right but I already wondered, that I didn't loose my strands after freezing
So what's the intended workflow, when using something like the cut by geo volume compound? I just want it to influence the basic hairstyle, which should be "frozen", so it doesn't continuously change the hair, when the character moves. Same for the fur-vector field by null, or do I get their usage wrong?
So what's the intended workflow, when using something like the cut by geo volume compound? I just want it to influence the basic hairstyle, which should be "frozen", so it doesn't continuously change the hair, when the character moves. Same for the fur-vector field by null, or do I get their usage wrong?
Re: Kristinka Hair 3.0 released
Well I think, most of your questions are answered in docs, there are about twenty samples as well.gitarrenvogel wrote: So what's the intended workflow, when using something like the cut by geo volume compound? I just want it to influence the basic hairstyle, which should be "frozen", so it doesn't continuously change the hair, when the character moves. Same for the fur-vector field by null, or do I get their usage wrong?
Anyway, if there is no simulation, there's 'deform hair' node, sample with same name too. It utilizes deformed copy of emitter, to move entire point cloud.
In short, everything you have in ICE tree with emitter node, it's just static modeling - something to consider if there's simulation, as simulation can destroy most of that initial modeling.
-
- Posts: 35
- Joined: 20 Apr 2013, 17:40
Re: Kristinka Hair 3.0 released
Sorry, that I missed that! There's very much documentation and I'm no native english speaker, so I didn't get everything that is written there.
So thank you, you helped me a lot!
Edit: Tried it and "deform hair" was exactly what i was looking for, thanks!
So thank you, you helped me a lot!
Edit: Tried it and "deform hair" was exactly what i was looking for, thanks!
Re: Kristinka Hair 3.0 released
Hey!
I'd like to use the Hair Filler compound, but apparently it has no effect. Maybe I missed something, could somebody explain how should I use it?
I'd like to use the Hair Filler compound, but apparently it has no effect. Maybe I missed something, could somebody explain how should I use it?
Re: Kristinka Hair 3.0 released
The hair filler compound only works in conjunction with the hair emission type set to guides + filler, rather than random. Also check your emission mesh is all tris.
Re: Kristinka Hair 3.0 released
hello,
there's small change in plan, instead of releasing the eternity version during this summer, I think it's better idea to split work into smaller, on (some) weekend chunks.
So first task is the setup for sticking the guides to curves, in 1:1 way - together with built in 'walker' on strands, to get a nice continuous deformation. This should allow:
1: ability to edit the hair manually, at some arbitrary point.
2: sticking the point cloud, at guides level, to curves, simulated by Syflex or something else.
3: single ICE tree setup, reduced to only two steps, generation of curves and sticking the point cloud back to curves. One point cloud plus curves, generated from guides, that's all. I hope I'll be able to put everything into single ICE node, having a switch of these two modes, or something like.
Now, few questions.
For now, I'm using Fabricio Chamon's StrandToCurves plugin, to generate curves. While it works nicely, I wanted it to create linear, instead of defaulted curved curves, in order to get 1:1 match to strands. Linear thing is much faster to edit, and it gives a cleaner visual feedback ( imho). So, after one night of messing with these lovely forth-back VBdata.toArray() things, dozens of crashes an so on, finally I've figured out that trick is to just leave the empty knot attribute, if degree 1 is set( 1 is linear). Just info, because I wasn't be able to find a ready made solution.
Instead of this, in last line....
is this:
Questions:
1: what people uses for simulation on curves, linear or curved curve. I guess this has no effect - but would be nice to know. To say again, linear curve simplifies many things there, a lot.
2: if there is a code master, willing to create a sort of 'StrandToCurves Pro', having exposed options for linear curves, perhaps option to do not generate ICE trees on curves, or additional SI center OP ( all that should be faster) - would be great. All that is somehow too much for my coding capabilities. Basically, I know how to mess up or comment out, something.
there's small change in plan, instead of releasing the eternity version during this summer, I think it's better idea to split work into smaller, on (some) weekend chunks.
So first task is the setup for sticking the guides to curves, in 1:1 way - together with built in 'walker' on strands, to get a nice continuous deformation. This should allow:
1: ability to edit the hair manually, at some arbitrary point.
2: sticking the point cloud, at guides level, to curves, simulated by Syflex or something else.
3: single ICE tree setup, reduced to only two steps, generation of curves and sticking the point cloud back to curves. One point cloud plus curves, generated from guides, that's all. I hope I'll be able to put everything into single ICE node, having a switch of these two modes, or something like.
Now, few questions.
For now, I'm using Fabricio Chamon's StrandToCurves plugin, to generate curves. While it works nicely, I wanted it to create linear, instead of defaulted curved curves, in order to get 1:1 match to strands. Linear thing is much faster to edit, and it gives a cleaner visual feedback ( imho). So, after one night of messing with these lovely forth-back VBdata.toArray() things, dozens of crashes an so on, finally I've figured out that trick is to just leave the empty knot attribute, if degree 1 is set( 1 is linear). Just info, because I wasn't be able to find a ready made solution.
Instead of this, in last line....
Code: Select all
var curve = Application.ActiveSceneRoot.AddNurbsCurve(aControlPoints);
curve.name = object.name+"_StrandsToCurves_curve"+i;
if (merge){
var VBdata = curve.ActivePrimitive.Geometry.Curves(0).Get2( siSINurbs );
var data = VBdata.toArray();
var crtlvertices = data[0];
var knots = data[1];
var isclosed = data[2];
var degree = data[3];
var parameterization = data[4];
oNurbsCurveList.ActivePrimitive.Geometry.AddCurve(crtlvertices, knots, isclosed, degree , siUniformParameterization);
deleteObj(curve.fullname)
Code: Select all
oNurbsCurveList.ActivePrimitive.Geometry.AddCurve(crtlvertices, null, isclosed, 1 , siUniformParameterization);
deleteObj(curve.fullname)
1: what people uses for simulation on curves, linear or curved curve. I guess this has no effect - but would be nice to know. To say again, linear curve simplifies many things there, a lot.
2: if there is a code master, willing to create a sort of 'StrandToCurves Pro', having exposed options for linear curves, perhaps option to do not generate ICE trees on curves, or additional SI center OP ( all that should be faster) - would be great. All that is somehow too much for my coding capabilities. Basically, I know how to mess up or comment out, something.
Re: Kristinka Hair 3.0 released
Not sure I've tried simulating on curves - can you control it with weightmaps? I was getting somewhere with extrusions and looking forward to 2015 coming out to use the most up to date syflex. Linear curves sounds good though, was having a few issues with hair not reacting to forces as much at angles as opposed to flat on with the poly strips. Wish I could help you out with the coding, but still mostly cut and paste myself!
Re: Kristinka Hair 3.0 released
For that more advanced stuff i think an idea would be asking for help in mailing list. I am not sure if many will catch your question here.
Re: Kristinka Hair 3.0 released
Honestly, all I know about ICE syflex on curves, that's coming from public available docs. Well there is weight map input in docs, at least. Anyway setup is almost already there. I exaggerated a bit, about coding. After all, it wasn't coding issue, just a logic of creation of curves, linear one can't have the same knots as default cubic, as far as I understand this.mattmos wrote:Not sure I've tried simulating on curves - can you control it with weightmaps? I was getting somewhere with extrusions and looking forward to 2015 coming out to use the most up to date syflex. Linear curves sounds good though, was having a few issues with hair not reacting to forces as much at angles as opposed to flat on with the poly strips. Wish I could help you out with the coding, but still mostly cut and paste myself!
Regarding mesh stripes, I have impression that syflex do not expect them, there's tendency to twist, I guess, because syflex relies on neighboring polygons, here ( that's wild guess). But, should be possible to attach the guides only by positions, leaving the orientation to 'walker' along strands.
Re: Kristinka Hair 3.0 released
Hello,
Here's mentioned setup for sticking the guides to curves, plus a few utilities.
Stick to curve list, first. Entire ICE part is a single compound. It is supposed to go somewhere after the last 'form', orange node, before the rest of ICE tree. Some kind of 'form' node has to be present, in order to provide everything needed for curve generation. Once the curve list is generated and connected, everything before 'kH3 Stick Guides To CurveList', related to strand segment count and strand position, is supposed to stay the same. This part is reference pose.
PPG looks like this. There are two modes:
1: curve generation, where the compound sets the all stuff for curve generation, also it disables the hair filler. If there is some modifier, later in ICE tree, effect of this, later deformation, won't be considered.
Parameter, called 'relative offset' has sense in case of self collision on simulated curve. kH by default, could create multiple guides on same place, which is not good start in case of self collision. Offset at more than zero, slightly moves the strands and points, close to center of triangle, ensuring them to do not be on top of each other. In stick phase, this offset is considered, to move strands back to original, starting position.
2: stick to curve. This part is partially based on Gillaume Laforge's 'strand extrusion' nodes. It has a double, cumulative calculation of orientations along strands and generated curve. This is for enabling the hair modifiers, still with smooth, non flipping orientation, after sticking to curve list.
'Stick To Curve Weight' is for blending. along strands, against the sort of built-in 'deform hair' compound. If nothing is plugged into 'deformed emitter' input, it blends to original strand position. If deformed copy of emitter is plugged, it blends between functionality of 'deform hair' and sticking to curve list.
Small 'kH3 Get UValue Along Curve' ICE compound is for setting the weight map along curve list.
Finally, there's small self installing plugin, 'k_hair_tools'.
1: kH Create Stick Curve: based on Fabricio Chamon's Strands To curves plugin and SDK examples. Generates the curve list from kH guides. Result is linear, uniformly interpolated curve list. This matches to structure of ICE strands, generated by kH. It outputs something meaningful only from kH guides, having 'kH3 Stick Guides To CurveList' in ICE tree. It does not take the strand position attribute, actually ( this is to avoid influence of later modifiers) - so, in case of another kind of strands, something weird should appear.
2: kH Create Stick Mesh. General purpose script and ICE node. Once Nurbs surface is selected, it creates polygon mesh from Nurbs surface, freezes this mesh, also it sticks the nurbs surface back to mesh, using the ordinary ICE 'switch context' method. That is, it allows to tweak the mesh instead of Nurbs surface. Of course, topology changes are not allowed. It does not take the SRT into account. Script is a bit messy, but it worked for me through the years.
3:kh Create Cluster on First Point. It just creates the point cluster on first points of selected curve list - for pinning or nailing with Syflex.
Get samples, ICE compounds and small plugin here.'stick_to_curve_stick_done.emdl' has a test animation.
Here's mentioned setup for sticking the guides to curves, plus a few utilities.
Stick to curve list, first. Entire ICE part is a single compound. It is supposed to go somewhere after the last 'form', orange node, before the rest of ICE tree. Some kind of 'form' node has to be present, in order to provide everything needed for curve generation. Once the curve list is generated and connected, everything before 'kH3 Stick Guides To CurveList', related to strand segment count and strand position, is supposed to stay the same. This part is reference pose.
PPG looks like this. There are two modes:
1: curve generation, where the compound sets the all stuff for curve generation, also it disables the hair filler. If there is some modifier, later in ICE tree, effect of this, later deformation, won't be considered.
Parameter, called 'relative offset' has sense in case of self collision on simulated curve. kH by default, could create multiple guides on same place, which is not good start in case of self collision. Offset at more than zero, slightly moves the strands and points, close to center of triangle, ensuring them to do not be on top of each other. In stick phase, this offset is considered, to move strands back to original, starting position.
2: stick to curve. This part is partially based on Gillaume Laforge's 'strand extrusion' nodes. It has a double, cumulative calculation of orientations along strands and generated curve. This is for enabling the hair modifiers, still with smooth, non flipping orientation, after sticking to curve list.
'Stick To Curve Weight' is for blending. along strands, against the sort of built-in 'deform hair' compound. If nothing is plugged into 'deformed emitter' input, it blends to original strand position. If deformed copy of emitter is plugged, it blends between functionality of 'deform hair' and sticking to curve list.
Small 'kH3 Get UValue Along Curve' ICE compound is for setting the weight map along curve list.
Finally, there's small self installing plugin, 'k_hair_tools'.
1: kH Create Stick Curve: based on Fabricio Chamon's Strands To curves plugin and SDK examples. Generates the curve list from kH guides. Result is linear, uniformly interpolated curve list. This matches to structure of ICE strands, generated by kH. It outputs something meaningful only from kH guides, having 'kH3 Stick Guides To CurveList' in ICE tree. It does not take the strand position attribute, actually ( this is to avoid influence of later modifiers) - so, in case of another kind of strands, something weird should appear.
2: kH Create Stick Mesh. General purpose script and ICE node. Once Nurbs surface is selected, it creates polygon mesh from Nurbs surface, freezes this mesh, also it sticks the nurbs surface back to mesh, using the ordinary ICE 'switch context' method. That is, it allows to tweak the mesh instead of Nurbs surface. Of course, topology changes are not allowed. It does not take the SRT into account. Script is a bit messy, but it worked for me through the years.
3:kh Create Cluster on First Point. It just creates the point cluster on first points of selected curve list - for pinning or nailing with Syflex.
Get samples, ICE compounds and small plugin here.'stick_to_curve_stick_done.emdl' has a test animation.
Re: Kristinka Hair 3.0 released
Hello,
For some unknown reason, I always expecting a fast and simple solution.... until things gets complicated. That is, it seems that script for curve generation, works only on my ancient XSI version . Hopefully, Maxime Jeanmougin reported this, also he was ready to assemble the workaround, on his new SI ( I think it was SI 2014). So, on same link in previous post, there's workaround. For now, script generates default, curved curvelist. Only way to get it linear, seems to be run SI Fit To Curve operator, well with drawback of different shape.
"kH3 Stick Guides To CurveList" is a version 2. For those who don't hesitate to dive into compound, there's instruction inside compound, how to enable 1:1 point-to-point matching, even in case of curved curvelist. Actually it's just replacing of 'ID to location', by 'Point Index To Location'. Last node doesn't exist in my XSI, that's why this additional procedure.
Next on road map is more streamlined setup for generation and sticking the guides to mesh stripes. What is available for download for now, it's created in 'last minute'.
For some unknown reason, I always expecting a fast and simple solution.... until things gets complicated. That is, it seems that script for curve generation, works only on my ancient XSI version . Hopefully, Maxime Jeanmougin reported this, also he was ready to assemble the workaround, on his new SI ( I think it was SI 2014). So, on same link in previous post, there's workaround. For now, script generates default, curved curvelist. Only way to get it linear, seems to be run SI Fit To Curve operator, well with drawback of different shape.
"kH3 Stick Guides To CurveList" is a version 2. For those who don't hesitate to dive into compound, there's instruction inside compound, how to enable 1:1 point-to-point matching, even in case of curved curvelist. Actually it's just replacing of 'ID to location', by 'Point Index To Location'. Last node doesn't exist in my XSI, that's why this additional procedure.
Next on road map is more streamlined setup for generation and sticking the guides to mesh stripes. What is available for download for now, it's created in 'last minute'.
Re: Kristinka Hair 3.0 released
Thanks so much for the new utilities! Looking forward to trying out the curves method.
Unfortunately the kh3 Stick Hair to Mesh Extrusion is crashing 2015 for me so far - just kills the session completely, no error messages. Wondering if there's anything I can do to fix, and what changes may have caused it to happen? Anyone else getting this?
Unfortunately the kh3 Stick Hair to Mesh Extrusion is crashing 2015 for me so far - just kills the session completely, no error messages. Wondering if there's anything I can do to fix, and what changes may have caused it to happen? Anyone else getting this?
Re: Kristinka Hair 3.0 released
this is a wild guess, but anywaymattmos wrote:Thanks so much for the new utilities! Looking forward to trying out the curves method.
Unfortunately the kh3 Stick Hair to Mesh Extrusion is crashing 2015 for me so far - just kills the session completely, no error messages. Wondering if there's anything I can do to fix, and what changes may have caused it to happen? Anyone else getting this?
Perhaps to remove anything related to 'point velocity' in this compound (of course, when is un connected) as this already produces troubles, depending on SI version. But not hard crash.... I think there's chain, like 'interpret location to new geometry > get point velocity > set self.pointvelocity' so probably to remove this chain completely.
Rest of compound is pretty much ordinary, have no idea what can cause troubles. If you didn't already, just for change, to replace all 'id to location', by point index to location, and respective 'get. some custom point normal' outputs of these, by get.pointnormal - this allows to skip the intermediate point cloud, and connect the mesh extrusion directly.
My bet is on velocity attribute.
Re: Kristinka Hair 3.0 released
Cool thanks for the suggestions, I'll try it out asap.
Cheers!
Cheers!
Re: Kristinka Hair 3.0 released
Thanks Mathaeus, removing the point velocity chain has stopped the crash. By removing that does it affect motion blur?
We've got another crash in 2015 when trying to make an eyebrow pointcloud visible, and narrowed it down to using the 'kh3 Deform Hair by Rotation' or the 'kh3 Deform Hair' node. I don't suppose you'd be able to suggest anything regarding those nodes? I can't see anything funky in the nodes themselves - wondering if it is something I need to bring to autodesk's attention?
Thanks again for the help!
We've got another crash in 2015 when trying to make an eyebrow pointcloud visible, and narrowed it down to using the 'kh3 Deform Hair by Rotation' or the 'kh3 Deform Hair' node. I don't suppose you'd be able to suggest anything regarding those nodes? I can't see anything funky in the nodes themselves - wondering if it is something I need to bring to autodesk's attention?
Thanks again for the help!
Who is online
Users browsing this forum: No registered users and 75 guests