Kristinka Hair 2.0

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

Re: Kristinka Hair 2.0

Post by Mathaeus » 06 Aug 2010, 19:45

Hi,

UV of emitter (PointUV from emit location) is re-mapped to UV of 'cross-section'. To line them up, basically there are two options:

- to add some NURBS surface, close to emitter ('close' means very close, I doing that by shrink-wrapping) , and plug this one in 'filtering NURBS' port. In this case, UV of emitter is replaced by 'filtering NURBS'.

- to model 'cross-section', in a way that all UVs (emitter, all 'cross-sections'), are lining up - that includes UV boundaries too. You can get that by repeating the 'swap UV' (in model> modify > srfmesh ), and inverting normals - some of solutions should match. You can see them by enabling 'NURBS boundaries' in view port. Or just to use copies of emitter - you can 'fit' copies later to get low count of points for tweaking, topology doesn't matter, here.

Cross Sections is actually first styling node I've created, almost two years ago.

Cheers

User avatar
shushens
Posts: 192
Joined: 13 Jun 2009, 07:34
Skype: shushens
Location: Paderborn, Germany
Contact:

Re: Kristinka Hair 2.0

Post by shushens » 14 Aug 2010, 20:13

Fascinating! Now I feel like a loser, asking for help on hair everytime but never actually doing it.
Can I propose a newbie thread for those who want to make great hair (like izze did) but have no concrete idea how to go about it step by step?
I am saying this because a lot of stupid questions will be asked there (some of them definitely by myself).
My ill-maintained blog: http://visualdeceptions.info/blogger

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

Re: Kristinka Hair 2.0

Post by Mathaeus » 18 Aug 2010, 02:02

Well instead of kH nodes, I would start with something more generic. Let's say, for modeling part, try to figure out how exactly works the standard XSI 'Deform by surface' operator. For ICE part.. I would play with factory particle/strand examples, and nodes that you can find under 'particle>modifiers' and 'surface>interaction'.

For kH stuff, I have to admit that styling approach is more 'indirect' (sliders, geometry queries, parameters, function curves...), than 'direct' modeling. By taking this article as an guideline - only creation of 'primary shape' belong to 'direct' modeling, 'secondary shape' is somewhere in between, 'tertiary shape' is completely indirect, procedural approach. Also I've tried to avoid a 'classic', curves/guides modeling, as much as I can.
Both because, for a long time that hair systems are available for public, I didn't sow so much good results ('so much' is a nice word), of using *only* 'direct' curves/guides modeling, especially for long hairs.

Anyway, it's not big deal to utilize this nice addon, to create curves from strands, somewhere after 'primary shape', then to use created curves for additional modeling. That needs a few more steps in creation, but I think it's still enough convenient. Possibly I'll add this as an option, in a near future.

Cheers

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

Re: Kristinka Hair 2.0

Post by Mathaeus » 22 Aug 2010, 03:18

Hi all,

just a WIP of a new modifier called 'Cut By Geometry', that doing... well I think it's pretty obvious what it's doing. Actually there was one in some previous version, with similar functionality, but it wasn't sooo convenient.... This one is a single-step modifier with exactly two parameters ('Enable' and 'Invert').

Cheers

Image

User avatar
Rork
Posts: 1359
Joined: 09 Jul 2009, 08:59
Location: Close to The Hague, Netherlands
Contact:

Re: Kristinka Hair 2.0

Post by Rork » 22 Aug 2010, 11:06

^:)^ :ymhug: :D

This set is getting better all the time!!

rob
SI UI tutorials: Toolbar http://goo.gl/iYOL0l | Custom Layout http://goo.gl/6iP5xQ | RenderManager View http://goo.gl/b4ZkjQ
So long, and thanks for all the Fish!!

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

Re: Kristinka Hair 2.0

Post by izze » 22 Aug 2010, 18:44

Oh yeah! That looks so neat. (and handy) Is that a poly mesh or nurbs doing the cutting?

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

Re: Kristinka Hair 2.0

Post by Mathaeus » 22 Aug 2010, 19:36

izze wrote:Oh yeah! That looks so neat. (and handy) Is that a poly mesh or nurbs doing the cutting?
It can be any of two. Poly mesh is a much faster. Actually it doing the test, how many strand segments are on front or back side of mesh.

Thanks you, guys.

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

Re: Kristinka Hair 2.0

Post by rray » 23 Aug 2010, 00:17

Very cool, that's the one I was missing but didn't know about it :D
softimage resources section updated Jan 5th 2024

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

Re: Kristinka Hair 2.0

Post by Mathaeus » 23 Aug 2010, 21:53

So it's here.

BTW, it's not to much precise, 'unit' for cutting is a strand segment. Also, if it's applied to guides, it's good idea to keep the smooth cutting edge - hair filer needs to find closest guides with similar length and shape, to interpolate correctly.

It's using 'Point In Volume' geometry query - it keeps the strand shape, inside of mesh. It need to be single intersection per strand, if there are many intersections, sum of all will cut the strand. According to the docs, cutting geometry need to be closed. From my test, it's faster to use Point In Volume for this case, than Get Closest Location.

Cheers

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

Re: Kristinka Hair 2.0

Post by izze » 24 Aug 2010, 22:22

Thanks a ton!

I wanted to ask a stupid question if you don't mind. How do you create the drop down arrows in your compounds? Like in Follow Curves. There is a Weight and Clump drop down (or Group?), when the compound is expanded. I ask this because, I am editing this compound to expose 100 curve ports, and renaming them numerically. But this makes the compound really really big. Soooooo I wanted to break my curve ports into groups of 25. So I could expand the first group and keep the rest minimized. Only to save space in my tree. (I can't seem to find my answer in the help file)

EDIT: Never mind. It never occurred to me to open the compound in a text editor. Figures, you spend all day on something, and figure it out once you post on the forums.


Also, I assume this will not break anything by doing this. I have 55 curves attached so far and it still seems fine.

Thanks.
Last edited by izze on 25 Aug 2010, 00:10, edited 1 time in total.

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

Re: Kristinka Hair 2.0

Post by Mathaeus » 24 Aug 2010, 23:48

izze wrote:Thanks a ton!
Also, I assume this will not break anything by doing this. I have 55 curves attached so far and it still seems fine.
Thanks.
Well this will not break anything, but can make things slower, much slower than 55 times. To find which curve belong to point (hair root), compound compares the UV distance between point itself and first point on curve - and 'plain' 'Sort Array With Key' node is used here. In case compound is used with guides, and allowed 8 curves, this is about 300-500 guides * 8 - not that much. But, if higher numbers are used, number of calculations is multiplied. At some point (especially with huge number of hairs), I'm afraid the calculation may take forever.

If you're using multiple compounds, one after another, calculations are split to nodes - a bit better, but not enough.

So I think the best way for such number of curves, is to merge all curves into the one, and create a separate, simple point cloud that contains only points, on first points on curves (that's allow using of much faster 'Get Closest Location' node, which uses a lot of ICE magic, and will stop with searching when target is found, calculation is almost 1*1). I had a compound that works in this way (actually, 'Emit Hair' is something like that), but didn't want to bother people with yet another point cloud, used only for searching.

Also, if only curves are used, creating vectors for later deformations (curls,bend) is a risky business, in some cases everything is nice, in some other cases, deformations become weird.

Anyway, I hope I'll post a working example tomorrow (here's late evening, now).

For merging multiple curves into one, I'm using a good old script by.... Ciaran Moloney - probably you can find this script, or something similar, somewhere on internet.

Cheers

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

Re: Kristinka Hair 2.0

Post by izze » 25 Aug 2010, 00:11

Thanks for the info. I will work on that.

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

Re: Kristinka Hair 2.0

Post by Mathaeus » 25 Aug 2010, 01:36

Model with compounds is here. You can just export compounds. When changing a merged curve with another one, possibly good idea is to first disconnect both compounds from main ICE node (node on 'target' point cloud, and 'follow curvelist' node). 'Follow CurveList' is a modification of 'Follow Curve'. There is about 80 subcurves, merged into one.

Cheers

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

Re: Kristinka Hair 2.0

Post by izze » 25 Aug 2010, 19:18

Hey Mathaeus, I was working with follow nurbs m, and was wondering if it would be easy to have the strands that follow the nurb become a different color then the ones that are not? I sure you don't want to keep updating these compounds, so feel free to say no. :)

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

Re: Kristinka Hair 2.0

Post by Mathaeus » 25 Aug 2010, 22:53

well If you're already in inside-compound-business :) - you can add a few nodes, like in screen shot. That will give a different, fully saturated color, per each NURBS - or a bit more pleasant color, by using gradient node, instead of 'HSVA to Color'. If you want just a color-per-node, plug 'is active' into the 'if' node, then 'set data' with Self.Color into 'true'.

Screen shot

Cheers

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

Re: Kristinka Hair 2.0

Post by izze » 25 Aug 2010, 23:11

I'm going to see if I can get that working now. Thanks again!

Post Reply

Who is online

Users browsing this forum: No registered users and 31 guests