diff options
author | Robert Sheldon <rsheldiii> | 2021-07-15 16:58:34 +0300 |
---|---|---|
committer | Sebastian Parborg <darkdefende@gmail.com> | 2021-07-15 17:09:24 +0300 |
commit | 59f9a5e6ac6f5bff914204ef299cba27bb5016eb (patch) | |
tree | b0b9620b8f84e8831b34439ac6ced8368644e583 /source/blender/simulation | |
parent | 60fee69682ac399204404a03ba99845787a53e39 (diff) |
Fix T88188: Allow keyframing vertex mass in cloth sim
Update vertex weights between simulation steps if they have changed.
This allows for animated vertex weights in the cloth sim.
Reviewed By: Sebastian Parborg
Differential Revision: http://developer.blender.org/D11640
Diffstat (limited to 'source/blender/simulation')
-rw-r--r-- | source/blender/simulation/SIM_mass_spring.h | 2 | ||||
-rw-r--r-- | source/blender/simulation/intern/SIM_mass_spring.cpp | 6 |
2 files changed, 7 insertions, 1 deletions
diff --git a/source/blender/simulation/SIM_mass_spring.h b/source/blender/simulation/SIM_mass_spring.h index 43de8b155cf..b3299258209 100644 --- a/source/blender/simulation/SIM_mass_spring.h +++ b/source/blender/simulation/SIM_mass_spring.h @@ -45,6 +45,8 @@ void SIM_mass_spring_solver_free(struct Implicit_Data *id); int SIM_mass_spring_solver_numvert(struct Implicit_Data *id); int SIM_cloth_solver_init(struct Object *ob, struct ClothModifierData *clmd); +void SIM_mass_spring_set_implicit_vertex_mass(struct Implicit_Data *data, int index, float mass); + void SIM_cloth_solver_free(struct ClothModifierData *clmd); int SIM_cloth_solve(struct Depsgraph *depsgraph, struct Object *ob, diff --git a/source/blender/simulation/intern/SIM_mass_spring.cpp b/source/blender/simulation/intern/SIM_mass_spring.cpp index cf654ebff07..ca01120eecb 100644 --- a/source/blender/simulation/intern/SIM_mass_spring.cpp +++ b/source/blender/simulation/intern/SIM_mass_spring.cpp @@ -203,7 +203,7 @@ int SIM_cloth_solver_init(Object *UNUSED(ob), ClothModifierData *clmd) cloth->implicit = id = SIM_mass_spring_solver_create(cloth->mvert_num, nondiag); for (i = 0; i < cloth->mvert_num; i++) { - SIM_mass_spring_set_vertex_mass(id, i, verts[i].mass); + SIM_mass_spring_set_implicit_vertex_mass(id, i, verts[i].mass); } for (i = 0; i < cloth->mvert_num; i++) { @@ -213,6 +213,10 @@ int SIM_cloth_solver_init(Object *UNUSED(ob), ClothModifierData *clmd) return 1; } +void SIM_mass_spring_set_implicit_vertex_mass(Implicit_Data *data, int index, float mass){ + SIM_mass_spring_set_vertex_mass(data, index, mass); +} + void SIM_cloth_solver_free(ClothModifierData *clmd) { Cloth *cloth = clmd->clothObject; |