[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