[Bf-blender-cvs] [0c15f1ed3ec] lanpr-under-gp: LineArt: CD_MDEFORMVERT flag in viewport evaluation.

YimingWu noreply at git.blender.org
Fri Oct 2 10:58:34 CEST 2020


Commit: 0c15f1ed3ec14ef877dae190a75ec9b2b4039340
Author: YimingWu
Date:   Fri Oct 2 16:58:16 2020 +0800
Branches: lanpr-under-gp
https://developer.blender.org/rB0c15f1ed3ec14ef877dae190a75ec9b2b4039340

LineArt: CD_MDEFORMVERT flag in viewport evaluation.

===================================================================

M	source/blender/blenkernel/intern/object_update.c
M	source/blender/editors/lineart/lineart_cpu.c

===================================================================

diff --git a/source/blender/blenkernel/intern/object_update.c b/source/blender/blenkernel/intern/object_update.c
index 1c4e0227876..56c29c9ee0e 100644
--- a/source/blender/blenkernel/intern/object_update.c
+++ b/source/blender/blenkernel/intern/object_update.c
@@ -180,6 +180,7 @@ void BKE_object_handle_data_update(Depsgraph *depsgraph, Scene *scene, Object *o
 #ifdef WITH_FREESTYLE
       cddata_masks.emask |= CD_MASK_FREESTYLE_EDGE;
       cddata_masks.pmask |= CD_MASK_FREESTYLE_FACE;
+      cddata_masks.vmask |= CD_MASK_MDEFORMVERT;
 #endif
       if (DEG_get_mode(depsgraph) == DAG_EVAL_RENDER) {
         /* Always compute UVs, vertex colors as orcos for render. */
diff --git a/source/blender/editors/lineart/lineart_cpu.c b/source/blender/editors/lineart/lineart_cpu.c
index 81c402a476d..d02ba32c3b3 100644
--- a/source/blender/editors/lineart/lineart_cpu.c
+++ b/source/blender/editors/lineart/lineart_cpu.c
@@ -4103,15 +4103,22 @@ void ED_lineart_gpencil_generate_from_chain(Depsgraph *depsgraph,
       if ((gpdg = BKE_object_defgroup_name_index(gpencil_object, vgname)) >= 0) {
         if (eval_ob->type == OB_MESH) {
           int dindex = 0;
+          Mesh *me = (Mesh *)eval_ob->data;
+          if (!me->dvert) {
+            continue;
+          }
           LISTBASE_FOREACH (bDeformGroup *, db, &eval_ob->defbase) {
             if (strstr(db->name, source_vgname) == db->name) {
-              Mesh *me = (Mesh *)eval_ob->data;
               int sindex = 0, vindex;
               LISTBASE_FOREACH (LineartRenderLineChainItem *, rlci, &rlc->chain) {
                 vindex = rlci->index;
-                MDeformWeight *mdw = BKE_defvert_find_index(&me->dvert[vindex], dindex);
+                /* XXX: Here doesn't have post-modifier dvert! */
+                if (vindex >= me->totvert) {
+                  break;
+                }
+                MDeformWeight *mdw = BKE_defvert_ensure_index(&me->dvert[vindex], dindex);
                 if (mdw->weight > 0.999f) {
-                  MDeformWeight *gdw = BKE_defvert_find_index(&gps->dvert[sindex], gpdg);
+                  MDeformWeight *gdw = BKE_defvert_ensure_index(&gps->dvert[sindex], gpdg);
                   gdw->weight = 1.0f;
                 }
                 sindex++;



More information about the Bf-blender-cvs mailing list