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:
authorSergey Sharybin <sergey.vfx@gmail.com>2020-03-17 17:28:24 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2020-03-17 18:41:43 +0300
commitbf5151b2d29dc64d11c86d04485667f6045c0aed (patch)
tree261524365175b846b30727b2acbe1424ac59fe28
parenta45c34ae8eb73448726a92d0b4d79b632dc69d9e (diff)
Mesh: Add utility to calculate deform modifier up to index
Intention is to be used to create mesh at the state which is an input to the multires modifier.
-rw-r--r--source/blender/blenkernel/BKE_mesh_runtime.h6
-rw-r--r--source/blender/blenkernel/intern/DerivedMesh.c21
2 files changed, 27 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_mesh_runtime.h b/source/blender/blenkernel/BKE_mesh_runtime.h
index fdddafcc71f..bdf7692b89b 100644
--- a/source/blender/blenkernel/BKE_mesh_runtime.h
+++ b/source/blender/blenkernel/BKE_mesh_runtime.h
@@ -87,6 +87,12 @@ struct Mesh *mesh_create_eval_final_view(struct Depsgraph *depsgraph,
struct Object *ob,
const struct CustomData_MeshMasks *dataMask);
+struct Mesh *mesh_create_eval_final_view_index(struct Depsgraph *depsgraph,
+ struct Scene *scene,
+ struct Object *ob,
+ const struct CustomData_MeshMasks *dataMask,
+ int index);
+
struct Mesh *mesh_create_eval_no_deform(struct Depsgraph *depsgraph,
struct Scene *scene,
struct Object *ob,
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index 5feb51534e9..2db48e1fb13 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -2013,6 +2013,27 @@ Mesh *mesh_create_eval_final_view(Depsgraph *depsgraph,
return final;
}
+Mesh *mesh_create_eval_final_view_index(Depsgraph *depsgraph,
+ Scene *scene,
+ Object *ob,
+ const CustomData_MeshMasks *dataMask,
+ int index)
+{
+ 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, 1, false, dataMask, index, false, false, NULL, &final);
+
+ ob->transflag &= ~OB_NO_PSYS_UPDATE;
+
+ return final;
+}
+
Mesh *mesh_create_eval_no_deform(Depsgraph *depsgraph,
Scene *scene,
Object *ob,