Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2014-02-24 12:53:44 +0400
committerCampbell Barton <ideasman42@gmail.com>2014-02-24 12:55:04 +0400
commite72775e34a461e82624aeaec0aff15703efbd987 (patch)
treeb8b805c982f4e363e55e1fa3d464ad7c9d711461 /source/blender/blenkernel/intern/editderivedmesh.c
parente82d6487603dfb9e18521e709ad980aacc2e61be (diff)
Fix T38795: Mesh Analysis overhang faces show gray
Diffstat (limited to 'source/blender/blenkernel/intern/editderivedmesh.c')
-rw-r--r--source/blender/blenkernel/intern/editderivedmesh.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/editderivedmesh.c b/source/blender/blenkernel/intern/editderivedmesh.c
index 0b89e6c0960..b3e0bfa387b 100644
--- a/source/blender/blenkernel/intern/editderivedmesh.c
+++ b/source/blender/blenkernel/intern/editderivedmesh.c
@@ -1741,9 +1741,13 @@ static void statvis_calc_overhang(
float dir[3];
int index;
const float minmax_irange = 1.0f / (max - min);
+ bool is_max;
/* fallback */
- const char col_fallback[4] = {64, 64, 64, 255};
+ const char col_fallback[2][4] = {
+ {64, 64, 64, 255}, /* gray */
+ {0, 0, 0, 255}, /* max color */
+ };
BLI_assert(min <= max);
@@ -1754,12 +1758,19 @@ static void statvis_calc_overhang(
normalize_v3(dir);
}
+ /* fallback max */
+ {
+ float fcol[3];
+ weight_to_rgb(fcol, 1.0f);
+ rgb_float_to_uchar((unsigned char *)col_fallback[1], fcol);
+ }
+
/* now convert into global space */
BM_ITER_MESH_INDEX (f, &iter, bm, BM_FACES_OF_MESH, index) {
float fac = angle_normalized_v3v3(polyNos ? polyNos[index] : f->no, dir) / (float)M_PI;
/* remap */
- if (fac >= min && fac <= max) {
+ if ((is_max = (fac <= max)) && (fac >= min)) {
float fcol[3];
fac = (fac - min) * minmax_irange;
fac = 1.0f - fac;
@@ -1768,7 +1779,7 @@ static void statvis_calc_overhang(
rgb_float_to_uchar(r_face_colors[index], fcol);
}
else {
- copy_v4_v4_char((char *)r_face_colors[index], (const char *)col_fallback);
+ copy_v4_v4_char((char *)r_face_colors[index], (const char *)(col_fallback[is_max]));
}
}
}