Kristinka C

New plugins, tools etc.
User avatar
Mathaeus
Posts: 1778
Joined: 08 Jun 2009, 21:11
Location: Zagreb, Croatia
Contact:

Re: Kristinka C

Post by Mathaeus » 07 Feb 2010, 23:50

Yeah, node reference may be cool :) Honestly I've avoided to add something like that, because all these nodes are some kind of work in progress. So only a few deserves writing about them, I think. Here's brief description:

Emitters for first and second point cloud, also two 'strand profile generators': Follow NURBS and Cross Sections, are here for relative long time. Both profile generators were designed for creating main shape of hair in one go, avoiding using of many guides/curves.

Deformers such as Curls, Static Turbulence, Randomize, Push, all were builded using same pattern, strands are just moved along two vectors.

'Emit Hair'- it's compound for second, filler point cloud - has a lot of 'Emit Filler Strands' and 'Constrain To Guide Hairs' from PhilPack.

General way for hair parting/grouping rely on method described here, actually on second method described by Ronald Beirouti. I'm pretty sure I'll keep this method in the future.

'Strand fCurve' compound is taken from MT Strands samples, it may be interesting because something like that doesn't exist with factory strand nodes. It allows modulating of almost any scalar value along strand length, such as hair thickness, weight of deformers and such, also keeping PPGs clear of many function curves all around.' Get emitter UV' is doing the same, but this time, along U or V of emitter. Both are some kind of 'portable function curves'. Just these two, I think, may be important for figuring out the modular, 'lego bricks' concept of ICE nodes.

'Offset Curve' compound from 'Follow-Two-NURBS-Offset-Curves', it's something I found in last minute when working on update - as some kind of multiple, 3d function curve, it seems to be very useful. I just working on cleaner version that may be plugged where ever it makes sense, for yet another, small update.

'Big' simulation, the one from 'Simulation-PhilPack-xsibase-08aug09' is taken from PhilPack. Another one called One Point Dynamics, it's just simple implementation of Hooke's law, performed only on points.


Cheers

User avatar
rray
Moderator
Posts: 1775
Joined: 26 Sep 2009, 15:51
Location: Bonn, Germany
Contact:

Re: Kristinka C

Post by rray » 10 Feb 2010, 12:22

Node reference is still work in progress but I'll post it tonight.

What I don't understand at all is the whole concept of spiltting offsets, including the kH Splitting Offset compound.
:-t

Any chance you got a minute to give me some clues as to how this works? I'm stumped :ymblushing:
softimage resources section updated Jan 5th 2024

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

Re: Kristinka C

Post by Mathaeus » 10 Feb 2010, 20:28

Thank You!

kH Splitting Offset is for proper hair interpolation around hair parting areas. It adds custom attribute to points, which is used later by kH Emit Hair, or kH Grouping compound. Emit Hait is doing a search for three closest UV points on guides, then it interpolates strands in between. If some of these points are on opposite side of line of parting, strands are interpolated in wrong way, like in last image. To prevent this, there is a way to 'cheat' ICE point locators, such as Get Closest Points, or Get closest Location node - at searching stage, points are grouped and moved to ensure that 'closest' point match to desired groups of hair. After taking attributes, points are moved back to their original positions.

Also, there is general styling purpose for splitting offset groups. In image, IDs, created by searching for closest location on 'subcurves point cloud', were used as splitting offset value.

Image


With Kristinka Hair nodes, both kH Emit Hair and kH Grouping compound are doing a search from UV point at emitters (instead from point position, as in PhilPack), which means this value, after conversion to 3d vector, is always somewhere inside point cloud's XY 0-1,. Splitting Offset value is able to change this (only at searching stage).

Modifiers such as Follow NURBS are able to set it's own splitting offset value, but this isn't enough when some parts of NURBS surface, used for modifier, are close to each other. For this case, kH Splitting Offset node is able to take modifer's UV, and create 'splitting groups'.
In image bellow, this somewhere in middle of Y(V) of modifier's NURBS surface. Another way may be using two modifiers on same NURBS surface, like before the last update, which isn't so convenient.

Previous version from September had a very limited way for proper splitting, dependent on shape of NURBS emitter. First version had alomost nothing. I've tried some automatic way, where every modifier adds splitting value to result of previous, but this wasn't enough, so there is a separate node, also values in modifier's PPG. Now it's possible to create splittng groups by weighmaps on emitter or influence nulls.

When using only one point cloud, all that Splitting Offset story has effect only when using kH Grouping node.

By the way, Softimage hair system has a way to do splitting that 'overlaps', which looks strange in viewports, but seems to be a nice option for covering the hair parting lines in rendering. I have a few nodes that doing something similar, but nothing as a definite solution, for now.


Cheers

Image

User avatar
rray
Moderator
Posts: 1775
Joined: 26 Sep 2009, 15:51
Location: Bonn, Germany
Contact:

Re: Kristinka C

Post by rray » 10 Feb 2010, 21:59

Thanks a lot for the explanation! I have uploaded the first version of the node reference,

viewtopic.php?f=15&p=3139

I will work in the new info from your post when I have some more time.

Of course feel free to put the node ref on your site when finished (and corrected :ymblushing:)
softimage resources section updated Jan 5th 2024

User avatar
Hirazi Blue
Administrator
Posts: 5107
Joined: 04 Jun 2009, 12:15

Re: Kristinka C

Post by Hirazi Blue » 10 Feb 2010, 22:10

I promoted your new "node reference" thread to "Sticky"-status (at least until "owei" tells me otherwise :D )...
And must congratulate you on the effort!!! :-bd ;)
Stay safe, sane & healthy!

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

Re: Kristinka C

Post by Mathaeus » 14 Feb 2010, 01:48

Hi

First I need to say thanks to RRay again. I would say, that's a help and motivation that worth for a few thousands of nice words on forums!
I've added a link to Node Reference from my site, I hope I'll have a time to write more about these ICE nodes.

Here is a short changelog of new, small update:

- Nodes for making offsets on Follow NURBS and Cross Sections modifiers, are improved. Now it's possible to use multiple curves as input, there is no need for merged curve list or separate point cloud. The 'old' way is still possible, for now compound that takes the attributes for curve list and separated point cloud is called "kH Offset Curvelist".

- The same interface for using many input curves is present with 'Follow Curve' node. Note that this node, even it looks like a 'standard' hair styling tool, is designed mostly for slight offsets from main shape. It doesn't set both up vectors and tangents as Follow NURBS or Cross Sections does, so later deformers might look wrong with some wild usage of kH Follow Curve compound.

- There is compound that allow to use fur with NURBS emitters, inside the 'ussual' hair ICE tree. It's mainly for short hair, or mixing short and long hair. Sample with last two features is called 'Follow-Curve_Hair-Fur-From-NURBS' (what a name... :) )

- Random emission from Emit Hair and Emit Guides nodes is modified, to behave more like a emission from Generate Sample Set factory node. Now, when changing emission rate, points won't slide along emitters.

Downloads:
Samples and compounds


Cheers

caledonian_tartan
Posts: 253
Joined: 17 Feb 2010, 15:13

Re: Kristinka C

Post by caledonian_tartan » 17 Feb 2010, 15:27

this is absolutely great! thank you very much.
now i've a little question:

first i have a few discs assembled to one nurbs surface.
i'd like to use the assembled discs as an emitter for kristinka hair. (plugging in neighter multiple emitters nor a group of nurbs discs didn't work, so i tried to assemble them.)
second i have a few tubes to use the follow nurbs compound on. same problem...

so the problem is obvious. somehow the hair gets emitted only on one disc. and the follow nurbs does not work anymore.

is there any solution for this?
Attachments
nurbsemitter.jpg
nurbsemitter.jpg (44.39 KiB) Viewed 4868 times
SI 2015 @ WIN7-64

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

Re: Kristinka C

Post by Mathaeus » 17 Feb 2010, 20:21

Hi,

thank you for using these nodes

So short answer is: no, there isn't solution with this pack. Only one, single NURBS surface may be used for point cloud emitter. Only one, single NURBS surface may be used with kH Follow NURBS compound - of course, it's possible to modify strands with more than one Follow NURBS modifier, using different NURBS surface for each compound.

Long answer is, I didn't tried to allow using of NURBS assemblies together with Follow NURBS modifier, because I found problems at lower levels. There is Get Clocest Location node inside the compound, which may not work correctly with single NURBS surface which is merged, snipped multiple times, so on. Looks like a heritage from old problems when using Shrink Wrap operator on NURBS surfaces. I mentioned these problems in tutorial on my site. Generally, only single, open, fresh-lofted NURBS surface is "supported".

Also, modifier is designed for layers of hairs that are parallel to emitter's surface, with a few built-in options that produces look that you probably don't want here.

If you want strands to only follow the NURBS subsurfaces, simple way would be something like ICE tree in image. Only UV To Location node is used for point and strand positions, "Build Linearly Interpolated Array" compound is from Phil Pack.

Cheers

User avatar
rray
Moderator
Posts: 1775
Joined: 26 Sep 2009, 15:51
Location: Bonn, Germany
Contact:

Re: Kristinka C

Post by rray » 06 Mar 2010, 13:47

Hey there !

Been my pleasure doing these reference docs ~o)
If you find any mistakes (It's probably riddled with them)
don't hesitate to pull the alam trigger

Btw I've written up a few things during the last days
Might be useful in case you ever run out of ideas...
Not sure yet if they make too much sense though.

Ok this one I tried to make myself but completely failed:

"Optimize Strand" compound
---(this would add more and shorter segments in more curved parts of the strands, and longer segments in straight parts
---goal is to make the strands appear smooth while still having a low segment count for rendering)
---parameters:
---"maximum angle between segments" (maybe with a "2D-from camera" option)
---"minimal segment length" (so small curves don't get too much segments)

The next two I magaged to build in ICE, I'll upload them later here but they would be 4 seconds of work for you.

"Affect only X percent" parameter in Follow NURBS, Follow Curve
---(this could be useful if multiple Follow NURBS's pick up strands from the same area, so the last one doesn't take all the strands)
---then again more params clutter the interface, don't know if it would make sense to include this in a distribution

And this one, but I'm not really sure if this could be achieved with other compounds:
I used something like after a curl compound to draw the tips a little back towards the head

Scale compound
---If weight was at 100% everywhere this would scale the whole strand down to it's root
---weight would be definable along the strand algon the strand of course-

(Moderator edit: changed your font colors slightly, to achieve (slightly) better readability on both board style settings, HB)
softimage resources section updated Jan 5th 2024

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

Re: Kristinka C

Post by Mathaeus » 06 Mar 2010, 17:35

Hi,

Yeah, "optimize strand" may be a real challenge :) - the top I've managed is to force MT strand fitting node to do that *per point*, using summary of angles, but this still requires some high count of segments before, just to do it's task correctly. On the other side, subdividing strands by using "Fit bezier curve" from Phil Pack, which is used in 'kh Subdivide Strands', this is slow - I guessing, because of lot of calculations, needed for hermite interpolation.

Anyway I think I'll try some simple and fast, 'loose' bezier curve, which just doesn't use points on strands that are bellow some angle-based criteria - ... if removing these points from arrays doesn't cause crash or something. From my experience, it's very good idea to do CTRL+S before using array nodes in ICE - but once they start to work, they just works...

For "affect X percent", I don't know is it enough to put something into 'enable' port of kH Follow NURBS or Follow Curve. In case of random emission, 'every nth particle' factory compound (modulo by point ID is inside), may do the job. In case of 'grid' emission, which I found a bit better if second point cloud is present, yet another random value node may be required.

'Scale along strand shape', if I took that correctly, this is 'kH Strand Length' compound, based on Helge Mathe's 'Get Position On Strand'. It can also 're scale' strands to real length in SI units (along existing shape of strand, no more than that), instead of ratio. Here, it's not big deal to add option for variable segment's count, based on strand length. I've just added this option to 'kH Strand Length'.

Small problem with these re-sampling/subdividing compounds is that every strand array needs re-building, including up vectors, tangents, size, ratio, strand velocity, so this kind of nodes may be used sparely, at the end of the ICE tree.

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

Re: Kristinka C

Post by Mathaeus » 06 Mar 2010, 21:37

Hi

For now, 'optimize by angle' is working, with something like this ICE tree. I'm not sure what is impact to viewport performance, but anyway, I hope there will be an 'Optimize' compound.

RRay, thanks for idea!

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

Re: Kristinka C

Post by Mathaeus » 07 Mar 2010, 22:47

Hi all

Download for version 1.14: Samples And Compounds

Short change log:

- kH Emit Guides and kH Emit Hair:

Number of clean-ups. 'Density' parameter in 'Emit Hair' is now linked to values in 'Emit Guides'. It's not only for cleaner PPG - it seems this can can help in avoiding the nasty rendering problem, related only to kH Emit Hair, when some of hairs just disappear in rendering, even everything looks OK in view ports. At least, problem is gone for me - of course I would be very interesting if someone notice that issue, again.
For strand rendering size, there is only one parameter, that affects both points and strands. Actually, point size is linked to the size of first strand segment.


- Motion Blur:

Now it should behave equally in all Softimage versions from 7.01 above, there is no need for special compound. 'Emit Hair' will automatically take velocity values from 'Emit Guides', also 'Follow NURBS' will take velocities from underlying NURBS surface. So, if 'Guides' point cloud is simulated, only this one need caching. If underlying NURBS surface for 'Follow NURBS' is simulated, it's good idea to cache just NURBS surface.
For point clouds, only position and velocity attributes, both for point and strands, should be enough for caching.


- kH Loft Shape In Render compound:

It overrides default, segment strand type, and offers all other types of points-strands for rendering. Strands are aligned automatically, by using up vectors and tangents from Follow NURBS, or Cross Sections modifier.


- kH Follow NURBS:

Now it's supports animated deformations, in a way that functions of underlying NURBS surfaces, can be separated - second NURBS surface can move the strands. In case nothing is moved-simulated, you just plug the same NURBS in two ports - internally it's the same structure as before. In 'Simulation-Follow-NURBS-SICloth' sample, SI Cloth is used for simulation, only this engine supports the NURBS. If you want to use meshes instead, I've described procedure in mentioned sample file.

'Negative push' option, that mimics behavior of 'Follow 2 NURBS' - it's not the same, but I think it's enough to always use only 'single' kH Follow NURBS.
Few small changes: cutoff distance can be limited by angle too, a few parameters for better strand distribution, mainly for working together with 'kH Offset Curves'.


- kH Offset Curves and kH Follow Curve

Better interface for connecting the array of control curves. Now, only standard, 'purple' geometry reference can be used. Every curve still need to be plugged into two ports. In order to allow multiple ports feature to works correctly, two small compounds, 'kH Add Curve Root', and 'kH Add Curve Ratio', need to be in folder that Softimage recognizes when loading. Both compounds are using UV distance for searching points, instead of 3d.


- kH Optimize Strands

It can be found in 'Length-And-Optimize' sample. Purpose is to get lighter point cloud in rendering, trying to keep original shape. It removes segments from strands, except a few of them, almost equally distributed by 'segment length' value. Then it keeps segments with angle to neighbor, higher than 'min angle'. Also it always keeps first and last segment.

Suggested usage is to first set count of segments in kh Emit Guides, to get smooth shape, then to gradually increase 'segment length' and 'min angle' parameters in kH Optimize Strands.

This compound should go as 'last before rendering'. If second, 'hair filler' point cloud is used, kH Optimize Strands should go *only* on second point cloud. Because kH Emit Hair takes strand positions from three closest points from guides, variable array of strands that kH Optimize produces, if kH Optimize is applied to 'guides' point cloud, can cause problems.
Compound will transfer some attributes, such as size and velocity, to newly created array - I've got it to work with motion blur too. Anyway, if you notice any problems in rendering animations, this one may be first to turn off.

- One Point Dynamics

Now it can 'clamp' strands movement, using distance between simulated points and their emit location.

- MT compounds

Three of them were always been in distribution, but not in samples. All three are just 'convenience packing' of originals from Helge Mathe's MT Strands Addon. 'kH Prepare For MT Extrusion' has a few more options, for taking variable strand size, and orientation.


Cheers

User avatar
rray
Moderator
Posts: 1775
Joined: 26 Sep 2009, 15:51
Location: Bonn, Germany
Contact:

Re: Kristinka C

Post by rray » 08 Mar 2010, 12:37

Very nice - Thanks for taking care of the optimize strands node, also that went incredibly fast! Gonna check out the new features now.
softimage resources section updated Jan 5th 2024

izze
Posts: 176
Joined: 24 Sep 2009, 20:02

Re: Kristinka C

Post by izze » 10 Mar 2010, 20:12

Simply amazing. Loving it! Thanks again, and again.. and again.......

User avatar
Werner
Posts: 157
Joined: 09 Jun 2009, 13:30
Contact:

Re: Kristinka C

Post by Werner » 10 May 2010, 11:51

Hi guys and girls,

I'm using Kristinka C hair on a current project ( little girl with long hair) and phill's dynamics is great but how would I go about restoring the style I created?
The hair loses it's groomed style once dynamics kicks in.

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

Re: Kristinka C

Post by Mathaeus » 10 May 2010, 14:29

Hi there,

usually it's some kind of blending, or just weighting the simulation against original shape. More simulation weight at tips, less or nothing at roots. You can use two point clouds too. In order to get it work properly with Strand Dynamics Framework from Phil Pack, original shape need to be re-sampled, to get even distribution of strand segments. I've played a lot with this in times of September 2009 version, there are some samples about blending with it. MT_Strand Modes addon is required for that release.

Now I prefer (of course that's just my personal preference) to go in another way - for any complex styling, the way is to simulate the modifier used for styling, instead of hair guides. For now, that's possible with kH Follow NURBS modifier. The best engine that I know for this purpose, it's SI Cloth.

As far as I know, there is no public available strand simulation engine that supports self-collision, even friction isn't supported. Sample provided with last kH nodes, uses a few tricks for creating volume and direction of simulated strands, but this is just a trick, that works only is certain scenarios.

I didn't had a chance to try Nest Studio Melena yet. From what I read, it supports lattices for styling and simulation, in some way. Kristinka Hair is built around first version of Helge's Strand Nodes, it even shares some of custom attributes, so you may be lucky :) with combining.

Cheers

Post Reply

Who is online

Users browsing this forum: SiteExplorer [Bot] and 83 guests