I have an old suggestion about grooming that is using a projected curve from camera space in order to groom the hairs that are within close proximity of the first stroke point. The whole suggestion can be found here:
For better readability I’ll also post the text and images here. The steps below describes what happens under the hood during one single stroke. The problem this method tries to solve is to be able to groom separate strands at a time without accidentally deforming parts of the hair that the user does not want to deform when laying down the stroke:
This red line represents the strand groom brush stroke done in screen space. This view will later be referred to as “original camera position”
Red curve = original stroke from original camera position
In order to see what is happening we can examine the stroke from the side. The stroke is a flat projection from the original camera position. It’s depth is based on the position of the brush at the start of the stroke
Project stroke by zdepth buffer
The stroke is then projected onto the visible mesh based on the original camera position (in img 1) using the zdepth buffer
If projection is slow for some reason, it might be better to simplify the curve/stroke so that it only has 10 points or less. This means that the depth only needs to be sampled 10 times
Blue curve = projected stroke
However it is better to clamp the projection so that no point is further away from the original camera position than the distance between the “camera” (eg original view) and the start of position of the original stroke (red line in img 1,2 and 3)
Purple curve = projected stroke with depth clamping
This step will lock the first and last point of the curve and smooth the rest of the points. I think the smooth strength should be set in a slider in the brush settings, since the results might vary depending on hair length etc.
Get hair curves, which root points are within the proximity of the brush radius at the first point of the groom strand stroke (green line)
If there are already curves selected, prior to making the stroke, only the selected curves should be affected by the groom strand stroke.
Shape the appropriate hair curves along the smoothed groom strand stroke (green curve)
Tapering is applied if it is set in the UI
Selection of the hair curves if the checkbox
“keep hair selection after stroke” is checked. This will enable the user to tweak the hair curves afterwards without touching the other parts of the hair.