[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