[Bf-committers] [Bf-blender-cvs] [3889483] master: Fix T40053: Cloth simulation, rest shape key does not function

Sergey Sharybin sergey.vfx at gmail.com
Thu May 15 14:33:09 CEST 2014


Woops. Had a brain glitch. GSoC project is about fluid sim, not cloth. But
for Goosberry we'll look into better cloth support anyway :)


On Thu, May 15, 2014 at 2:20 PM, Sergey Sharybin <noreply at git.blender.org>wrote:

> Commit: 3889483b1fa23911e58cff4d7d195d16e83760b0
> Author: Sergey Sharybin
> Date:   Thu May 15 14:18:35 2014 +0200
> https://developer.blender.org/rB3889483b1fa23911e58cff4d7d195d16e83760b0
>
> Fix T40053: Cloth simulation, rest shape key does not function
>
> It was a regression since 5d49eff. Not really sure about proper solution
> here, so used a bit workaround-ish way for now.
>
> Hopefully new cloth will be landed after this GSoC anyway.
>
> ===================================================================
>
> M       source/blender/modifiers/intern/MOD_cloth.c
>
> ===================================================================
>
> diff --git a/source/blender/modifiers/intern/MOD_cloth.c
> b/source/blender/modifiers/intern/MOD_cloth.c
> index 6bda821..1561fd1 100644
> --- a/source/blender/modifiers/intern/MOD_cloth.c
> +++ b/source/blender/modifiers/intern/MOD_cloth.c
> @@ -32,8 +32,10 @@
>   *  \ingroup modifiers
>   */
>
> +#include <string.h>
>
>  #include "DNA_cloth_types.h"
> +#include "DNA_key_types.h"
>  #include "DNA_scene_types.h"
>  #include "DNA_object_types.h"
>
> @@ -45,6 +47,7 @@
>  #include "BKE_cloth.h"
>  #include "BKE_cdderivedmesh.h"
>  #include "BKE_global.h"
> +#include "BKE_key.h"
>  #include "BKE_modifier.h"
>  #include "BKE_pointcache.h"
>
> @@ -68,7 +71,7 @@ static void initData(ModifierData *md)
>  }
>
>  static void deformVerts(ModifierData *md, Object *ob, DerivedMesh
> *derivedData, float (*vertexCos)[3],
> -                        int UNUSED(numVerts), ModifierApplyFlag
> UNUSED(flag))
> +                        int numVerts, ModifierApplyFlag UNUSED(flag))
>  {
>         DerivedMesh *dm;
>         ClothModifierData *clmd = (ClothModifierData *) md;
> @@ -85,6 +88,26 @@ static void deformVerts(ModifierData *md, Object *ob,
> DerivedMesh *derivedData,
>         if (dm == derivedData)
>                 dm = CDDM_copy(dm);
>
> +       /* TODO(sergey): For now it actually duplicates logic from
> DerivedMesh.c
> +        * and needs some more generic solution. But starting
> experimenting with
> +        * this so close to the release is not that nice..
> +        *
> +        * Also hopefully new cloth system will arrive soon..
> +        */
> +       if (derivedData == NULL && clmd->sim_parms->shapekey_rest) {
> +               KeyBlock *kb =
> BKE_keyblock_from_key(BKE_key_from_object(ob),
> +
>  clmd->sim_parms->shapekey_rest);
> +               if (kb->data != NULL) {
> +                       float (*layerorco)[3];
> +                       if (!(layerorco = DM_get_vert_data_layer(dm,
> CD_CLOTH_ORCO))) {
> +                               DM_add_vert_layer(dm, CD_CLOTH_ORCO,
> CD_CALLOC, NULL);
> +                               layerorco = DM_get_vert_data_layer(dm,
> CD_CLOTH_ORCO);
> +                       }
> +
> +                       memcpy(layerorco, kb->data, sizeof(float) * 3 *
> numVerts);
> +               }
> +       }
> +
>         CDDM_apply_vert_coords(dm, vertexCos);
>
>         DM_ensure_tessface(dm); /* BMESH - UNTIL MODIFIER IS UPDATED FOR
> MPoly */
>
> _______________________________________________
> Bf-blender-cvs mailing list
> Bf-blender-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>



-- 
With best regards, Sergey Sharybin


More information about the Bf-committers mailing list