Smooth only hair particle lenghts

Would it be possible to only smooth the particle lengths. There’s an option in the comb mode to “keep Lengths”. How about another option, “keep form”… Or something so I could only smooth out the length of the hair. Or just a new brush named “smooth lengths”. Either ways works for me (though more could be done with the “keep form” I think).

So yeah… This would be a feature request more than anything. Not sure is there a better place for this (move if there is in this forum, otherwise I just wish to hear how many would like to have this feature) but this would speed up the workflow a lot with fur when I don’t need to manually set the length for every single parent separately. :cool:

Not sure exactly what you mean by “smooth lengths” – do you mean even out the lengths of the strands? That can be done with careful use of the Cut tool, or similar careful use of the Grow/Shrink Length tool. Even key editing can be used for this.

Basically that’s exactly what I need. Some way to even out the strand lengths in the comb mode but cut tool doesn’t really work if working in a valley. Length (Grow/Shrink) tool is what I use all the time anyway, and I also use quite a lot of key editing on the individual parent strands. How I usually go with the length when I want to even out some area is to go through every single parent hair, selecting it and then using Length tool on it (as only selected ones are effected by the tool).

So the cut tool is a bit of a pain and in some cases it’s near impossible to use it like when the fur is already combed close to the surface. The Length tool (grow/shrink) I already use but after combing the fur back and forth for a while and adjusting it’s size to get the look right, the lengths are usually a bit of a mess. So I need to clean that up. Another time is that when I want to make shorter fur on one area and then taller/lengthier on another and then mix the in-between area, there’s no easy way to do that. Ability to smooth the strand sizes, still keeping their shape, would be a huge speeup for me and a few other artists I know.

I think I can safely say that I know the particle hair system pretty well already.

Okay, no need to get umbratious :wink: Since you posted in “Support” & mentioned little of what you had already used for this process, I figured covering the existing basics wouldn’t hurt.

I agree this would probably be a useful tool. Not sure how feasible it might be, though. I guess if the brush operates only on the strand tips, it could calculate an average length to apply to the strands under the brush. This would make the origin point (root) of the strands less relevant to the operation. But the geometry of the strand’s curve determines its length, so it may be difficult to get evenly-arranged tips on strands that take significantly different paths to arrive at the same (or close) point under the brush, simply by adjusting the strand length to an average.

Plus changing the length by either Cut or the Length tool also changes the strand’s key locations somewhat, which can affect the overall shape of the strand curve. So I’m not sure how much of the overall hair system “form” could be well-preserved while doing the length smoothing operation.

Now that the 2.5 API is probably settling down to a final state, this might be a good project for an add-on, if you can find an interested scripter to tackle it.

Eh… Sorry. Didn’t mean it like that. It’s hard to express feelings and such on the net and make “to the point” text at the same. Just added a lot of info so it could be easier to see if there were any doubt about what I was talking about… Too much it seemed. Should use more emoticons from now on… :stuck_out_tongue:

Anyhow. I originally send this post to news&discussion. Seems like it got moved to support. Not sure however would this feature be much of a trouble to “hard code” into blender.

I don’t think the length smoothing needs to be 100% exact. Something like: From all the strands, get the distance between first and last key, average the distances, and then scale the strand keys for each strand from the first key… If I got it right that what “key” is in this…

I think I’ll look more into python myself. I’ve been using it some. Mostly just to automatize some big repeating tasks. I’m fairly sure there’s no possibility to write a custom brush just yet. But I’ll check if I can get into the key data via python. Thanks for the reminder.

I remember seeing an ideas post for blender somewhere but couldn’t find it anymore. Not sure was that in this forum at all. That was my initial plan but decided to make some discussion about in here instead and ask around what would other people think about it…

Okay that’s a novel enough… XD I’ll just shut up now and see what I can do with python myself.

The “keys” are the vertex-like elements that determine the strand curves, what you select when hand-editing the strand shapes.

One of the problems I see with the length-averaging approach is that some strands in the operation may have much different lengths to begin with because they start from very different locations on the emitter mesh. A strand originating in a “widows peak” area on the upper forehead, for example, would have a much longer path to reach the same end-point at the back of the head than a strand that originates on the rear-crown of the head. Both may have tips in a similar area, but giving them an average length will lengthen one a lot and shorten the other a lot, maybe not producing the expected result. This is more a problem with long hair strands than fur, but the tool would have to work with all kinds of hairy situations :smiley:

I’ve done some BPython also, but the new API is terra incognito for me, plus I don’t know whether there is user-access to properties like the strand length and the “grooming” operations. Lots of research there unless someone can provide insight – maybe worth an inquiry. AFAIK Blender is currently feature-locked in terms of the main development plan, until it gets thoroughly hashed over and (hopefully) de-bugged. But I doubt there will be any more major API changes, so it’s likely “safe” to start digging into new scripting projects.

Thanks. :slight_smile:

Yeah. I think it will not be entirely easy to do so that it will suite everyone. But I’d be happy with a basic one too. I don’t think there’s much use for this feature for long hair anyhow. It’s more tedious on the short facial fur.

It did take a bit of time to figure out the path to the particle key data but seems like there is a way to get it. Pretty easy now that I look at it.


bpy.context.active_object.particle_systems['ParticleSystem'].particles[0].hair_keys[0]

I love how organized the BPython api is. But I still need to figure out the names and steps there is to get to the data I need. Anyhow, that will get me somewhere but I don’t see any way to get the selected strands. Yet anyhow.