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>2013-04-17 13:27:23 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-04-17 13:27:23 +0400
commit14f9f167b2686a92883b754d111adbb5efec2515 (patch)
tree27132ff7ff9d8c65ecbcc26fab38bd3885870dea /source/blender/blenkernel/intern/DerivedMesh.c
parentbb1b2529a0b0dce1b9c34e616436599ab5fd8021 (diff)
display options to help with 3d printing.
editmesh debug info, - overhang (with axis angle options) - wall thickness (with min/max distance) - self-intersections. access below 'Mesh Display' panel.
Diffstat (limited to 'source/blender/blenkernel/intern/DerivedMesh.c')
-rw-r--r--source/blender/blenkernel/intern/DerivedMesh.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index d1a1163d5c7..255723b0977 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -1204,6 +1204,14 @@ void DM_update_weight_mcol(Object *ob, DerivedMesh *dm, int const draw_flag,
int i;
if (em) {
+
+ /* no need to store both */
+ if (em->derivedFaceColor) {
+ MEM_freeN(em->derivedFaceColor);
+ em->derivedFaceColor = NULL;
+ em->derivedFaceColorLen = 0;
+ }
+
if (em->derivedVertColor && em->derivedVertColorLen == numVerts) {
wtcol_v = em->derivedVertColor;
}
@@ -1283,6 +1291,30 @@ void DM_update_weight_mcol(Object *ob, DerivedMesh *dm, int const draw_flag,
}
}
+static void DM_update_statvis_color(Scene *scene, Object *ob, DerivedMesh *dm)
+{
+ BMEditMesh *em = BKE_editmesh_from_object(ob);
+ int numFaces = em->bm->totface;
+ unsigned char (*wtcol_f)[4];
+
+ /* no need to store both */
+ if (em->derivedVertColor) {
+ MEM_freeN(em->derivedVertColor);
+ em->derivedVertColor = NULL;
+ em->derivedVertColorLen = 0;
+ }
+
+ if (em->derivedFaceColor && em->derivedFaceColorLen == numFaces) {
+ wtcol_f = em->derivedFaceColor;
+ }
+ else {
+ if (em->derivedFaceColor) MEM_freeN(em->derivedFaceColor);
+ wtcol_f = em->derivedFaceColor = MEM_mallocN(sizeof(*wtcol_f) * numFaces, __func__);
+ em->derivedFaceColorLen = numFaces;
+ }
+
+ BKE_editmesh_statvis_calc(em, dm, &scene->toolsettings->statvis, wtcol_f);
+}
static void shapekey_layers_to_keyblocks(DerivedMesh *dm, Mesh *me, int actshape_uid)
{
@@ -1939,6 +1971,7 @@ static void editbmesh_calc_modifiers(Scene *scene, Object *ob, BMEditMesh *em, D
#endif
const int do_final_wmcol = FALSE;
int do_init_wmcol = ((((Mesh *)ob->data)->drawflag & ME_DRAWEIGHT) && !do_final_wmcol);
+ int do_init_statvis = ((((Mesh *)ob->data)->drawflag & ME_DRAW_STATVIS) && !do_init_wmcol);
modifiers_clearErrors(ob);
@@ -2127,6 +2160,8 @@ static void editbmesh_calc_modifiers(Scene *scene, Object *ob, BMEditMesh *em, D
/* In this case, we should never have weight-modifying modifiers in stack... */
if (do_init_wmcol)
DM_update_weight_mcol(ob, *final_r, draw_flag, NULL, 0, NULL);
+ if (do_init_statvis)
+ DM_update_statvis_color(scene, ob, *final_r);
}
else {
/* this is just a copy of the editmesh, no need to calc normals */
@@ -2136,6 +2171,8 @@ static void editbmesh_calc_modifiers(Scene *scene, Object *ob, BMEditMesh *em, D
/* In this case, we should never have weight-modifying modifiers in stack... */
if (do_init_wmcol)
DM_update_weight_mcol(ob, *final_r, draw_flag, NULL, 0, NULL);
+ if (do_init_statvis)
+ DM_update_statvis_color(scene, ob, *final_r);
}
/* --- */