[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58312] trunk/blender/source/blender/ modifiers/intern: fix own regression [#36154] Simple deform modifier doesn' t recalculate normals
Campbell Barton
ideasman42 at gmail.com
Tue Jul 16 10:24:53 CEST 2013
Revision: 58312
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58312
Author: campbellbarton
Date: 2013-07-16 08:24:53 +0000 (Tue, 16 Jul 2013)
Log Message:
-----------
fix own regression [#36154] Simple deform modifier doesn't recalculate normals
get_cddm and get_dm are called within modifiers so they wont ensure normals are valid, added an arg to optionally ensure valid normals.
Modified Paths:
--------------
trunk/blender/source/blender/modifiers/intern/MOD_cast.c
trunk/blender/source/blender/modifiers/intern/MOD_cloth.c
trunk/blender/source/blender/modifiers/intern/MOD_displace.c
trunk/blender/source/blender/modifiers/intern/MOD_hook.c
trunk/blender/source/blender/modifiers/intern/MOD_laplaciansmooth.c
trunk/blender/source/blender/modifiers/intern/MOD_meshdeform.c
trunk/blender/source/blender/modifiers/intern/MOD_particlesystem.c
trunk/blender/source/blender/modifiers/intern/MOD_shrinkwrap.c
trunk/blender/source/blender/modifiers/intern/MOD_simpledeform.c
trunk/blender/source/blender/modifiers/intern/MOD_smooth.c
trunk/blender/source/blender/modifiers/intern/MOD_surface.c
trunk/blender/source/blender/modifiers/intern/MOD_util.c
trunk/blender/source/blender/modifiers/intern/MOD_util.h
trunk/blender/source/blender/modifiers/intern/MOD_warp.c
trunk/blender/source/blender/modifiers/intern/MOD_wave.c
Modified: trunk/blender/source/blender/modifiers/intern/MOD_cast.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_cast.c 2013-07-16 06:49:03 UTC (rev 58311)
+++ trunk/blender/source/blender/modifiers/intern/MOD_cast.c 2013-07-16 08:24:53 UTC (rev 58312)
@@ -453,7 +453,7 @@
DerivedMesh *dm = NULL;
CastModifierData *cmd = (CastModifierData *)md;
- dm = get_dm(ob, NULL, derivedData, NULL, 0);
+ dm = get_dm(ob, NULL, derivedData, NULL, false, false);
if (cmd->type == MOD_CAST_TYPE_CUBOID) {
cuboid_do(cmd, ob, dm, vertexCos, numVerts);
@@ -470,7 +470,7 @@
ModifierData *md, Object *ob, struct BMEditMesh *editData,
DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts)
{
- DerivedMesh *dm = get_dm(ob, editData, derivedData, NULL, 0);
+ DerivedMesh *dm = get_dm(ob, editData, derivedData, NULL, false, false);
CastModifierData *cmd = (CastModifierData *)md;
if (cmd->type == MOD_CAST_TYPE_CUBOID) {
Modified: trunk/blender/source/blender/modifiers/intern/MOD_cloth.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_cloth.c 2013-07-16 06:49:03 UTC (rev 58311)
+++ trunk/blender/source/blender/modifiers/intern/MOD_cloth.c 2013-07-16 08:24:53 UTC (rev 58312)
@@ -82,7 +82,7 @@
return;
}
- dm = get_dm(ob, NULL, derivedData, NULL, 0);
+ dm = get_dm(ob, NULL, derivedData, NULL, false, false);
if (dm == derivedData)
dm = CDDM_copy(dm);
Modified: trunk/blender/source/blender/modifiers/intern/MOD_displace.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_displace.c 2013-07-16 06:49:03 UTC (rev 58311)
+++ trunk/blender/source/blender/modifiers/intern/MOD_displace.c 2013-07-16 08:24:53 UTC (rev 58312)
@@ -265,7 +265,7 @@
int numVerts,
ModifierApplyFlag UNUSED(flag))
{
- DerivedMesh *dm = get_cddm(ob, NULL, derivedData, vertexCos);
+ DerivedMesh *dm = get_cddm(ob, NULL, derivedData, vertexCos, dependsOnNormals(md));
displaceModifier_do((DisplaceModifierData *)md, ob, dm,
vertexCos, numVerts);
@@ -278,7 +278,7 @@
ModifierData *md, Object *ob, struct BMEditMesh *editData,
DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts)
{
- DerivedMesh *dm = get_cddm(ob, editData, derivedData, vertexCos);
+ DerivedMesh *dm = get_cddm(ob, editData, derivedData, vertexCos, dependsOnNormals(md));
displaceModifier_do((DisplaceModifierData *)md, ob, dm,
vertexCos, numVerts);
Modified: trunk/blender/source/blender/modifiers/intern/MOD_hook.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_hook.c 2013-07-16 06:49:03 UTC (rev 58311)
+++ trunk/blender/source/blender/modifiers/intern/MOD_hook.c 2013-07-16 08:24:53 UTC (rev 58312)
@@ -252,7 +252,7 @@
DerivedMesh *dm = derivedData;
/* We need a valid dm for meshes when a vgroup is set... */
if (!dm && ob->type == OB_MESH && hmd->name[0] != '\0')
- dm = get_dm(ob, NULL, dm, NULL, 0);
+ dm = get_dm(ob, NULL, dm, NULL, false, false);
deformVerts_do(hmd, ob, dm, vertexCos, numVerts);
@@ -267,7 +267,7 @@
DerivedMesh *dm = derivedData;
/* We need a valid dm for meshes when a vgroup is set... */
if (!dm && ob->type == OB_MESH && hmd->name[0] != '\0')
- dm = get_dm(ob, editData, dm, NULL, 0);
+ dm = get_dm(ob, editData, dm, NULL, false, false);
deformVerts_do(hmd, ob, dm, vertexCos, numVerts);
Modified: trunk/blender/source/blender/modifiers/intern/MOD_laplaciansmooth.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_laplaciansmooth.c 2013-07-16 06:49:03 UTC (rev 58311)
+++ trunk/blender/source/blender/modifiers/intern/MOD_laplaciansmooth.c 2013-07-16 08:24:53 UTC (rev 58312)
@@ -669,7 +669,7 @@
static void deformVerts(ModifierData *md, Object *ob, DerivedMesh *derivedData,
float (*vertexCos)[3], int numVerts, ModifierApplyFlag UNUSED(flag))
{
- DerivedMesh *dm = get_dm(ob, NULL, derivedData, NULL, 0);
+ DerivedMesh *dm = get_dm(ob, NULL, derivedData, NULL, false, false);
laplaciansmoothModifier_do((LaplacianSmoothModifierData *)md, ob, dm,
vertexCos, numVerts);
@@ -682,7 +682,7 @@
ModifierData *md, Object *ob, struct BMEditMesh *editData,
DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts)
{
- DerivedMesh *dm = get_dm(ob, editData, derivedData, NULL, 0);
+ DerivedMesh *dm = get_dm(ob, editData, derivedData, NULL, false, false);
laplaciansmoothModifier_do((LaplacianSmoothModifierData *)md, ob, dm,
vertexCos, numVerts);
Modified: trunk/blender/source/blender/modifiers/intern/MOD_meshdeform.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_meshdeform.c 2013-07-16 06:49:03 UTC (rev 58311)
+++ trunk/blender/source/blender/modifiers/intern/MOD_meshdeform.c 2013-07-16 08:24:53 UTC (rev 58312)
@@ -212,7 +212,7 @@
/* if we don't have one computed, use derivedmesh from data
* without any modifiers */
if (!cagedm) {
- cagedm = get_dm(mmd->object, NULL, NULL, NULL, 0);
+ cagedm = get_dm(mmd->object, NULL, NULL, NULL, false, false);
if (cagedm)
cagedm->needsFree = 1;
}
@@ -343,7 +343,7 @@
int numVerts,
ModifierApplyFlag UNUSED(flag))
{
- DerivedMesh *dm = get_dm(ob, NULL, derivedData, NULL, 0);
+ DerivedMesh *dm = get_dm(ob, NULL, derivedData, NULL, false, false);
modifier_vgroup_cache(md, vertexCos); /* if next modifier needs original vertices */
@@ -359,7 +359,7 @@
float (*vertexCos)[3],
int numVerts)
{
- DerivedMesh *dm = get_dm(ob, NULL, derivedData, NULL, 0);
+ DerivedMesh *dm = get_dm(ob, NULL, derivedData, NULL, false, false);
meshdeformModifier_do(md, ob, dm, vertexCos, numVerts);
Modified: trunk/blender/source/blender/modifiers/intern/MOD_particlesystem.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_particlesystem.c 2013-07-16 06:49:03 UTC (rev 58311)
+++ trunk/blender/source/blender/modifiers/intern/MOD_particlesystem.c 2013-07-16 08:24:53 UTC (rev 58312)
@@ -142,7 +142,7 @@
return;
if (dm == NULL) {
- dm = get_dm(ob, NULL, NULL, vertexCos, 1);
+ dm = get_dm(ob, NULL, NULL, vertexCos, false, true);
if (!dm)
return;
Modified: trunk/blender/source/blender/modifiers/intern/MOD_shrinkwrap.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_shrinkwrap.c 2013-07-16 06:49:03 UTC (rev 58311)
+++ trunk/blender/source/blender/modifiers/intern/MOD_shrinkwrap.c 2013-07-16 08:24:53 UTC (rev 58312)
@@ -48,7 +48,9 @@
#include "MOD_util.h"
+static bool dependsOnNormals(ModifierData *md);
+
static void initData(ModifierData *md)
{
ShrinkwrapModifierData *smd = (ShrinkwrapModifierData *) md;
@@ -120,8 +122,9 @@
CustomDataMask dataMask = requiredDataMask(ob, md);
/* ensure we get a CDDM with applied vertex coords */
- if (dataMask)
- dm = get_cddm(ob, NULL, dm, vertexCos);
+ if (dataMask) {
+ dm = get_cddm(ob, NULL, dm, vertexCos, dependsOnNormals(md));
+ }
shrinkwrapModifier_deform((ShrinkwrapModifierData *)md, ob, dm, vertexCos, numVerts);
@@ -136,8 +139,9 @@
CustomDataMask dataMask = requiredDataMask(ob, md);
/* ensure we get a CDDM with applied vertex coords */
- if (dataMask)
- dm = get_cddm(ob, editData, dm, vertexCos);
+ if (dataMask) {
+ dm = get_cddm(ob, editData, dm, vertexCos, dependsOnNormals(md));
+ }
shrinkwrapModifier_deform((ShrinkwrapModifierData *)md, ob, dm, vertexCos, numVerts);
Modified: trunk/blender/source/blender/modifiers/intern/MOD_simpledeform.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_simpledeform.c 2013-07-16 06:49:03 UTC (rev 58311)
+++ trunk/blender/source/blender/modifiers/intern/MOD_simpledeform.c 2013-07-16 08:24:53 UTC (rev 58312)
@@ -317,7 +317,7 @@
/* we implement requiredDataMask but thats not really useful since
* mesh_calc_modifiers pass a NULL derivedData */
if (dataMask)
- dm = get_dm(ob, NULL, dm, NULL, 0);
+ dm = get_dm(ob, NULL, dm, NULL, false, false);
SimpleDeformModifier_do((SimpleDeformModifierData *)md, ob, dm, vertexCos, numVerts);
@@ -337,7 +337,7 @@
/* we implement requiredDataMask but thats not really useful since
* mesh_calc_modifiers pass a NULL derivedData */
if (dataMask)
- dm = get_dm(ob, editData, dm, NULL, 0);
+ dm = get_dm(ob, editData, dm, NULL, false, false);
SimpleDeformModifier_do((SimpleDeformModifierData *)md, ob, dm, vertexCos, numVerts);
Modified: trunk/blender/source/blender/modifiers/intern/MOD_smooth.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_smooth.c 2013-07-16 06:49:03 UTC (rev 58311)
+++ trunk/blender/source/blender/modifiers/intern/MOD_smooth.c 2013-07-16 08:24:53 UTC (rev 58312)
@@ -221,7 +221,7 @@
static void deformVerts(ModifierData *md, Object *ob, DerivedMesh *derivedData,
float (*vertexCos)[3], int numVerts, ModifierApplyFlag UNUSED(flag))
{
- DerivedMesh *dm = get_dm(ob, NULL, derivedData, NULL, 0);
+ DerivedMesh *dm = get_dm(ob, NULL, derivedData, NULL, false, false);
smoothModifier_do((SmoothModifierData *)md, ob, dm,
vertexCos, numVerts);
@@ -234,7 +234,7 @@
ModifierData *md, Object *ob, struct BMEditMesh *editData,
DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts)
{
- DerivedMesh *dm = get_dm(ob, editData, derivedData, NULL, 0);
+ DerivedMesh *dm = get_dm(ob, editData, derivedData, NULL, false, false);
smoothModifier_do((SmoothModifierData *)md, ob, dm,
vertexCos, numVerts);
Modified: trunk/blender/source/blender/modifiers/intern/MOD_surface.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_surface.c 2013-07-16 06:49:03 UTC (rev 58311)
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list