diff options
author | Sybren A. Stüvel <sybren@stuvel.eu> | 2018-07-05 16:41:58 +0300 |
---|---|---|
committer | Sybren A. Stüvel <sybren@stuvel.eu> | 2018-07-10 13:00:58 +0300 |
commit | b9bef10d1953bda4e1eb882bdc525815c2e32e01 (patch) | |
tree | 0347a2b7b372726530d15a0db4d6e001343bfefa /source/blender/blenkernel | |
parent | 6807b4318f25a581b7ec75739bd36cf8b07086b1 (diff) |
Ported mesh_create_derived_view() to mesh_create_eval_final_view()
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_DerivedMesh.h | 3 | ||||
-rw-r--r-- | source/blender/blenkernel/BKE_mesh_runtime.h | 9 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/DerivedMesh.c | 24 |
3 files changed, 33 insertions, 3 deletions
diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h index e497e84b7e0..cdf0d683779 100644 --- a/source/blender/blenkernel/BKE_DerivedMesh.h +++ b/source/blender/blenkernel/BKE_DerivedMesh.h @@ -532,9 +532,6 @@ DerivedMesh *getEditDerivedBMesh( /* same as above but wont use render settings */ DerivedMesh *mesh_create_derived(struct Mesh *me, float (*vertCos)[3]); -DerivedMesh *mesh_create_derived_view( - struct Depsgraph *depsgraph, struct Scene *scene, - struct Object *ob, CustomDataMask dataMask); DerivedMesh *mesh_create_derived_no_deform( struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, float (*vertCos)[3], diff --git a/source/blender/blenkernel/BKE_mesh_runtime.h b/source/blender/blenkernel/BKE_mesh_runtime.h index 8ff097eb61b..e673a30c0b3 100644 --- a/source/blender/blenkernel/BKE_mesh_runtime.h +++ b/source/blender/blenkernel/BKE_mesh_runtime.h @@ -94,6 +94,15 @@ struct Mesh *mesh_create_eval_final_index_render( struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, CustomDataMask dataMask, int index); +#ifdef USE_DERIVEDMESH +struct DerivedMesh *mesh_create_derived_view( + struct Depsgraph *depsgraph, struct Scene *scene, + struct Object *ob, CustomDataMask dataMask); +#endif +struct Mesh *mesh_create_eval_final_view( + struct Depsgraph *depsgraph, struct Scene *scene, + struct Object *ob, CustomDataMask dataMask); + void BKE_mesh_runtime_eval_to_meshkey(struct Mesh *me_deformed, struct Mesh *me, struct KeyBlock *kb); /* Temporary? A function to give a colorband to derivedmesh for vertexcolor ranges */ diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index 4fe689523e0..9c4aae7cda5 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -3182,6 +3182,8 @@ struct Mesh *mesh_create_eval_final_index_render( return final; } +#ifdef USE_DERIVEDMESH +/* Deprecated, use `mesh_create_eval_final_view` instead. */ DerivedMesh *mesh_create_derived_view( struct Depsgraph *depsgraph, Scene *scene, Object *ob, CustomDataMask dataMask) @@ -3202,6 +3204,28 @@ DerivedMesh *mesh_create_derived_view( return final; } +#endif + +Mesh *mesh_create_eval_final_view( + struct Depsgraph *depsgraph, Scene *scene, + Object *ob, CustomDataMask dataMask) +{ + Mesh *final; + + /* XXX hack + * psys modifier updates particle state when called during dupli-list generation, + * which can lead to wrong transforms. This disables particle system modifier execution. + */ + ob->transflag |= OB_NO_PSYS_UPDATE; + + mesh_calc_modifiers( + depsgraph, scene, ob, NULL, 1, false, dataMask, -1, false, false, false, + NULL, &final); + + ob->transflag &= ~OB_NO_PSYS_UPDATE; + + return final; +} DerivedMesh *mesh_create_derived_no_deform( struct Depsgraph *depsgraph, Scene *scene, Object *ob, |