ZBrushCentral

Brush Strokes with Moving Average Position?

I would like a stroke that used a moving average for the position, where small blips in the surface position would not be weighted as much as it is when using just with the average position from the sample radius. Does anyone know how to achieve this?

When I use a cutter like SKSlash, it does not cut an even channel as you see from the non-red lines. Wherever there was a high spot, the channel has a high spot. Also, when I use ClayBuildup, it goes up and down with the immediate surface below it.

In relatively flat areas, I can increase the brush sample radius to 2 and the position to 2 and achieve this effect. But in busy areas like a channel, the wide radius of the sampling causes the stroke to be at the wrong position. If there were a moving average, then the sample radius could be small and just sample the channel while letting the noise have little impact.

Attachments

2014-10-27_13-07-59.jpg

EricM81,

I think I understand what you are saying. What I would consider is masking the ridge represented by the red line, then do your cuts. Just continue your brush stroke into the masking. Also, after making your cutting strokes, divide the model and use the first polish slider in the Deformations menu, but just set to a value of 1. Sneak up on it. If the results need more oomph, Use the repeat to active button at the bottom of the menu to replay the last action.

Thank you, masking and polishing seems to be the only way to go about this.

Since there is no way to make this work, maybe this could be a feature request for brush sampling?

Have you peeked in the brush modifiers to see what may have an effect closer to the desired? http://docs.pixologic.com/reference-guide/brush/samples/ Lots of settings, some aren’t really stuck in front where they’ll be seen and adjusted. :wink:

I have and the problem is they all sample under the cursor. I have not found an option for a moving average, which is what is needed.

Imagine I have an area represented in the following table. Each cell is a 1x1 section and corresponds to the sample radius of 1. The number is the position, or relative height of that area:

A B C D E F
1
6 6 4 6 6 6
2 1 1 1 1 4 1
3 6 8 6 6 4 6

If I were to brush over A2 to F2 with a sample radius of 1 and an intensity that would increase that position by 1, then the resulting surface would look like the following:

A B C D E F
1
6 6 4 6 6 6
2 2 2 2 2 5 2
3 6 8 6 6 4 6

The ‘hump’ in E5 is increased the same way as all the others. If I increase the sample radius to 2, then half of each value from A1-F1 and A3-F3 would also be averaged in:

A B C D E F
1
6 6 4 6 6 6
2 2.33 2.66 2.00 2.33 3.00 2.33
3 6 8 6 6 4 6

That gets me closer, but not where I want to be. With a radius of 1, a simple moving average of the last X samples would work:

A B C D E F
1
6 6 4 6 6 6
2 1.0 1.0 1.0 1.0 1.6 1.5
3 6 8 6 6 4 6

I know that the original height of E2 was 4 and the brush stroke would pass ‘under’ the hump, but this would be a great feature. I’m not sure if Pixologic takes feature requests, but after reading the whole internet this week, this is needed by a lot more people than just me.

Polygroups can be quite useful as can be hiding parts of the mesh. Masking by peaks and valleys is another possibility.
Logical steps, performed in the correct order, are necessary to get the best results…

I frequently mask by cavity and then refine the mask until I get the area I need to work on. Polygroups won’t work for my particular task because I cannot transfer polygroups between subtools. The workaround for that, use of polypaint, does not transfer very well between 8-16 million poly subtools.

I agree, there are workarounds to accomplish the task…but they are workarounds. You could achieve the result on the initial brush stroke if a little bit of math gets added as an option to brush sampling. That’s why it would be a nice feature request, but I don’t know how to submit it to the ZBrush devs.

Without a full understanding of your tools and the methods for using them and in what order, chaos can ensue.
Work around> Everything has limits of some sort and they need to be understood to succeed.
Workflow> Method/s used to achieve end goal. Without a clear understanding of what the end result should be, many times it can be hard to arrive there.

Screwdrivers are NOT= chisels.

I have tried my best to clearly articulate the issue.

Tool - Clay Build, standard settings
Method - Draw over a surface with noise.
Desired Result - Stroke with a smooth height and or orientation.
Limitation - It samples the immediate underlying surface amplifying noise.
Solution - Have the sample use a moving average of past samples for use with orientation and/or position.

Issue.jpg

Workarounds - I have read the posts of countless others who desire the same thing and am aware of the work arounds. Layers, masking, smoothing, flattening, etc. These are time consuming and could easily be replaced with the proposed solution.

Desired result is displaced mesh surface. You don’t need to use clay buildup for that; Polygroups can be created; Polygons can be moved and extruded. Points can be moved.
You should have a foundation before you try to build a house on it. Sorry you can’t get the results you’re after.

Doug, this is our conversation so far:

Eric: Question about brush samples.
Doug: http://docs.pixologic.com/reference-…brush/samples/. – You literally responded to my question with the definition of the words I was using.

Eric: Detailed explanation of problem and my understanding of the limitation of brush samples.
Doug: Polygroups. Masking. Logical steps, performed in the correct order, are necessary to get the best results…

Eric: Can’t use polygroups. I use masking but it’s too many steps. Can this be a feature request?
Doug: You’re question is vague. Screwdrivers are NOT= chisels.

Eric: More detail on brush samples.
Doug: Displaced mesh surface. You should have a foundation before you try to build a house on it.

Seriously Doug, what is the point of you? What do you do besides respond to questions with vague concepts and belittling statements? Do you have any knowledge to share? Is there any value to your posts?

I guess you’ve read and understand all of the adjustments that can be made. What do you have against Polygroups?
http://docs.pixologic.com/reference-guide/brush/smooth-brush-modifiers/

I’m not entirely sure what you are driving at with the polygroups reference (maybe auto mask by polygroup?), but here is my previous reply:

“Polygroups won’t work for my particular task because I cannot transfer polygroups between subtools. The workaround for that, use of polypaint, does not transfer very well between 8-16 million poly subtools.”

Eric, have you tried working with the layer brush with a morph target stored? Is this closer to the effect that you want? ( store a morph target first (Tool>Morph Target), then the layer brush will displace at a constant rate based on the surface of of the MT, not the active mesh.

I confess, despite your efforts here, I’m still not 100% on the effect that you’re after, and whether it’s something better achieved with something other than real time brushing. I know this must be frustrating for you.

In any event, if you can’t find what you’re looking for, submit the functionality request to Pixologic with their support system. It is very possible that the people who actually design the program will not see your issue here, and further discussion will be fruitless as your post sinks down the page.

In this case, the layer brush won’t work because I’m refining detail. It’s not a situation where I have a flat starting point and can use it to limit the height of new overlapping brush strokes. Masking out everything else and smoothing the heck out of it is the only way to go, which kinda sucks but I have to get this done by tomorrow.

I’ll try it in the future, but I’m using TS Wittelsbach’s workflow where you lay in the weights of your sculpt in say a 2 million poly mesh and then cut in the details on a 10+ mil poly mesh. Along the way, your geometry gets pinched and bunched so every once in a while you go through a cycle of duplicate the subtool, dyna/remesh, project, sculpt. Layers and the layer brush aren’t conducive to the workflow.

At one point I tried using the curve brush to add it in as separate geometry, but I can’t get dynamesh over 2 mill polys and dynamesh master can’t get it over 4 mill. Going from 16 to 4 mill lost more detail than I was happy with. It’s really hard working with these huge meshes in 32 bit.

Out of curiosity, how many total points are there in the mesh you’re trying to sculpt? Maybe using the Standard brush which works on normals would be a better alternative to adding clay.
Do you have to output a mesh or do a render?

I’ll try it in the future, but I’m using TS Wittelsbach’s workflow where you lay in the weights of your sculpt in say a 2 million poly mesh and then cut in the details on a 10+ mil poly mesh. Along the way, your geometry gets pinched and bunched so every once in a while you go through a cycle of duplicate the subtool, dyna/remesh, project, sculpt. Layers and the layer brush aren’t conducive to the workflow.

It should be clarified that the Layer brush is a separate thing from Layers, and would work as well with dynamesh and projection as any other brush stroke.

Could you share a link to an example of this workflow you’re trying to do, and where exactly you’re having trouble? I do quite a bit of dynamesh/remesh projection work myself with hard surface stuff. It may be more helpful to attack a specific issue, than for us to quibble over theoretical features.