Page MenuHome

Sculpt: Regularized Kelvinlets brushes
ClosedPublic

Authored by Pablo Dobarro (pablodp606) on Aug 30 2019, 4:15 PM.
Tags
None
Tokens
"Love" token, awarded by Artsolit."100" token, awarded by Frozen_Death_Knight."Love" token, awarded by Merens."Dat Boi" token, awarded by shader."Love" token, awarded by HAWk_."Love" token, awarded by johnsyed."Love" token, awarded by kookitoo."Like" token, awarded by YAFU."Love" token, awarded by Zino."Like" token, awarded by erickblender."Love" token, awarded by jfmatheu."Burninate" token, awarded by EitanSomething."100" token, awarded by satishgoda."Like" token, awarded by eobet."Like" token, awarded by theois."Like" token, awarded by amonpaike.

Details

Summary

This patch implements the paper "Regularized Kelvinlets: Sculpting Brushes based on Fundamental Solutions of Elasticity" https://graphics.pixar.com/library/Kelvinlets/paper.pdf

It includes grab, biscale grab, triscale grab, scale and twist.
All Kelvinlets are accessible under the same tool. This helps to keep the code organized and it should not make any difference to the user if this proposal is implemented. https://devtalk.blender.org/t/the-tools-brush-workflow/9111/11?u=pablodp606

Diff Detail

Repository
rB Blender
Branch
sculpt-kelvinlets (branched from master)
Build Status
Buildable 4698
Build 4698: arc lint + arc unit

Event Timeline

  • Fix artifacts in scale and twist
Brecht Van Lommel (brecht) requested changes to this revision.Sep 6 2019, 7:43 PM
Brecht Van Lommel (brecht) added inline comments.
source/blender/editors/sculpt_paint/sculpt.c
2819

Add a comment with the name of the paper for reference. Something like:

/* Regularized Kelvinlets: Sculpting Brushes based on Fundamental Solutions of Elasticity
 * Pixar Technical Memo #17-03 */

Bonus points for adding comments with the formula numbers from the paper.

2820

itearion -> iteration

2843

Weird indentation.

2891

itearion -> iteration

source/blender/makesrna/intern/rna_brush.c
94

Can we name this something like "Elastic Deform"? "Kelvinlet" is a pretty obscure name.

1687

Name this deform_type?

1828

Name this "compressibility"?

This revision now requires changes to proceed.Sep 6 2019, 7:43 PM
Pablo Dobarro (pablodp606) marked 7 inline comments as done.
  • Rename Kelvinlet to Elastic Deform
  • Move kelvinlet parameters to a struct for better organization
  • Rename poisson_ratio to compressibility
  • Fix naming
  • Rebase
This revision is now accepted and ready to land.Sep 6 2019, 11:44 PM
  • Rename poisson_ratio to compressibility

Note that the Poisson's Ratio represents how much a solid deforms transversally when a longitudinal force is applied to it, so the transversal section goes thinner for traction longitudinal forces, and thicker with compression longitudinal forces. It's a common term in rigid solid mechanics and it will be missed with this relabeling. "Compressibility" is not related to this, it's not even a concept applied to solids' physics but fluids', and in any case I'm not sure if it provides a clear insight towards the behaviour of the tool when tweaking this property. So I would keep the Poisson's Ratio concept present somewhere, in the description at least; but maybe keeping it as property name accompanied with a description like "amount of transversal deformation caused by every (axial) deformation applied" is more suited and hopefully understandable enough.

One last thing: this property is hardly ever over 0.5 for real materials, and has an average value of 0.3. Maybe it's a good idea to reflect this in the ui, while introducing a value up to 1 manually is allowed.

So I would keep the Poisson's Ratio concept present somewhere, in the description at least; but maybe keeping it as property name accompanied with a description like "amount of transversal deformation caused by every (axial) deformation applied" is more suited and hopefully understandable enough.

That's much too technical, we can't assume a user knows what "transversal deformation" means.

If "Compressibility" is confusing for someone who knows physics, we can rename it to something like "Volume Preservation".

The description can be something like. "Poisson ratio for elastic deformation. Higher values preserve volume more, but also lead to more bulging".

One last thing: this property is hardly ever over 0.5 for real materials, and has an average value of 0.3. Maybe it's a good idea to reflect this in the ui, while introducing a value up to 1 manually is allowed.

We can test if 0.3 works better, but really this is something we should decide empirically. We're not doing an actual physics simulation here and digital sculpting is not necessarily most useful with real material parameters. The paper shows higher values than 0.5 are useful, so I wouldn't set even a soft limit on that.

I know, but I had to point it out. As long as the expression "Poisson's Ratio" is not lost, I think it's ok. I find both Volume Preservation as property name as well as the new description so much better. Thank you.

This revision was automatically updated to reflect the committed changes.