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:
authorDaniel Genrich <daniel.genrich@gmx.net>2012-05-15 15:14:50 +0400
committerDaniel Genrich <daniel.genrich@gmx.net>2012-05-15 15:14:50 +0400
commit763a16cb70ca223babd9862a329c7f1c536b167d (patch)
tree9204ffd5414e881d27f908054b8d3e923f0dfa05 /source/blender/modifiers/intern/MOD_cloth.c
parent8107130854c0ff6b4406c92e926fa51253ad39d1 (diff)
Cloth:
- Triangulate Cloth Mesh for collisions - Speed up collisions - Remove EL Topo code - Prepare code to incooperate El Topo self collisions (TODO next commits) TODO: ---------- - Triangulation: Is custom data/uv preserved correctly? - Use MPoly not tessface?
Diffstat (limited to 'source/blender/modifiers/intern/MOD_cloth.c')
-rw-r--r--source/blender/modifiers/intern/MOD_cloth.c31
1 files changed, 13 insertions, 18 deletions
diff --git a/source/blender/modifiers/intern/MOD_cloth.c b/source/blender/modifiers/intern/MOD_cloth.c
index 2c38bc42a8f..72e5d792e1f 100644
--- a/source/blender/modifiers/intern/MOD_cloth.c
+++ b/source/blender/modifiers/intern/MOD_cloth.c
@@ -67,10 +67,10 @@ static void initData(ModifierData *md)
cloth_init(clmd);
}
-static void deformVerts(ModifierData *md, Object *ob, DerivedMesh *derivedData, float (*vertexCos)[3],
- int UNUSED(numVerts), ModifierApplyFlag UNUSED(flag))
+static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
+ DerivedMesh *dm,
+ ModifierApplyFlag UNUSED(flag))
{
- DerivedMesh *dm;
ClothModifierData *clmd = (ClothModifierData *) md;
DerivedMesh *result = NULL;
@@ -79,25 +79,20 @@ static void deformVerts(ModifierData *md, Object *ob, DerivedMesh *derivedData,
initData(md);
if (!clmd->sim_parms || !clmd->coll_parms)
- return;
+ return dm;
}
- dm = get_dm(ob, NULL, derivedData, NULL, 0);
- if (dm == derivedData)
- dm = CDDM_copy(dm);
-
- CDDM_apply_vert_coords(dm, vertexCos);
-
DM_ensure_tessface(dm); /* BMESH - UNTIL MODIFIER IS UPDATED FOR MPoly */
- clothModifier_do(clmd, md->scene, ob, dm, vertexCos);
+ result = clothModifier_do(clmd, md->scene, ob, dm);
- if (result) {
- result->getVertCos(result, vertexCos);
- result->release(result);
+ if(result)
+ {
+ CDDM_calc_normals(result);
+ return result;
}
- dm->release(dm);
+ return dm;
}
static void updateDepgraph(ModifierData *md, DagForest *forest, Scene *scene, Object *ob, DagNode *obNode)
@@ -205,17 +200,17 @@ ModifierTypeInfo modifierType_Cloth = {
/* name */ "Cloth",
/* structName */ "ClothModifierData",
/* structSize */ sizeof(ClothModifierData),
- /* type */ eModifierTypeType_OnlyDeform,
+ /* type */ eModifierTypeType_Constructive,
/* flags */ eModifierTypeFlag_AcceptsMesh |
eModifierTypeFlag_UsesPointCache |
eModifierTypeFlag_Single,
/* copyData */ copyData,
- /* deformVerts */ deformVerts,
+ /* deformVerts */ NULL,
/* deformMatrices */ NULL,
/* deformVertsEM */ NULL,
/* deformMatricesEM */ NULL,
- /* applyModifier */ NULL,
+ /* applyModifier */ applyModifier,
/* applyModifierEM */ NULL,
/* initData */ initData,
/* requiredDataMask */ requiredDataMask,