diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2018-06-29 15:56:38 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2018-06-29 15:57:02 +0300 |
commit | 5ba87cf22ebdfa660ec2044a8e97c3501c573176 (patch) | |
tree | d071dcf8c643366069eb80f0ed9a787e68864388 /source/blender/blenkernel/intern/deform.c | |
parent | a59df21ad8282c20f33a216ba9e3ba739881577d (diff) |
Cleanup: remove another bunch of DM usages, includes etc.
Diffstat (limited to 'source/blender/blenkernel/intern/deform.c')
-rw-r--r-- | source/blender/blenkernel/intern/deform.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/deform.c b/source/blender/blenkernel/intern/deform.c index 2da157d5b88..d08e3643ca7 100644 --- a/source/blender/blenkernel/intern/deform.c +++ b/source/blender/blenkernel/intern/deform.c @@ -1293,3 +1293,43 @@ bool data_transfer_layersmapping_vgroups( } /** \} */ + +/* -------------------------------------------------------------------- */ + +/** \name Various utils & helpers. + * \{ */ + +void BKE_defvert_weight_to_rgb(float r_rgb[3], const float weight) +{ + const float blend = ((weight / 2.0f) + 0.5f); + + if (weight <= 0.25f) { /* blue->cyan */ + r_rgb[0] = 0.0f; + r_rgb[1] = blend * weight * 4.0f; + r_rgb[2] = blend; + } + else if (weight <= 0.50f) { /* cyan->green */ + r_rgb[0] = 0.0f; + r_rgb[1] = blend; + r_rgb[2] = blend * (1.0f - ((weight - 0.25f) * 4.0f)); + } + else if (weight <= 0.75f) { /* green->yellow */ + r_rgb[0] = blend * ((weight - 0.50f) * 4.0f); + r_rgb[1] = blend; + r_rgb[2] = 0.0f; + } + else if (weight <= 1.0f) { /* yellow->red */ + r_rgb[0] = blend; + r_rgb[1] = blend * (1.0f - ((weight - 0.75f) * 4.0f)); + r_rgb[2] = 0.0f; + } + else { + /* exceptional value, unclamped or nan, + * avoid uninitialized memory use */ + r_rgb[0] = 1.0f; + r_rgb[1] = 0.0f; + r_rgb[2] = 1.0f; + } +} + +/** \} */ |