[Bf-blender-cvs] [b1a305b] temp-modifier-deltamush-experimental: Initial cleanup
Campbell Barton
noreply at git.blender.org
Sat Mar 28 19:25:15 CET 2015
Commit: b1a305b050a50bc9a5dbc591d7b3f143dfd673c5
Author: Campbell Barton
Date: Sun Mar 29 05:23:54 2015 +1100
Branches: temp-modifier-deltamush-experimental
https://developer.blender.org/rBb1a305b050a50bc9a5dbc591d7b3f143dfd673c5
Initial cleanup
===================================================================
M release/scripts/startup/bl_ui/properties_data_modifier.py
M source/blender/modifiers/intern/MOD_deltamush.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py
index 3bda8c4..112254f 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -1387,10 +1387,10 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
sub.prop(md, "use_invert_vertex_group", text="", icon='ARROW_LEFTRIGHT')
def DELTAMUSH(self, layout, ob, md):
- if bool(md.bind):
+ if md.bind:
layout.operator("object.deltamush_bind", text="Unbind")
else:
- layout.operator("object.deltamush_bind", text="Bind")
+ layout.operator("object.deltamush_bind", text="Bind")
layout.prop(md, "only_smooth");
layout.prop(md, "pin_bounds");
layout.label(text="Smoothing Details")
@@ -1398,6 +1398,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
layout.prop(md, "lambda_factor", text="Factor")
layout.label(text="Vertex Group:")
layout.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
-
+
+
if __name__ == "__main__": # only for live edit.
bpy.utils.register_module(__name__)
diff --git a/source/blender/modifiers/intern/MOD_deltamush.c b/source/blender/modifiers/intern/MOD_deltamush.c
index 87d63da..4f1a62c 100644
--- a/source/blender/modifiers/intern/MOD_deltamush.c
+++ b/source/blender/modifiers/intern/MOD_deltamush.c
@@ -33,16 +33,18 @@
#include "MEM_guardedalloc.h"
-#include "BKE_cdderivedmesh.h"
+#include "BKE_cdderivedmesh.h"
#include "BKE_deform.h"
#include "MOD_modifiertypes.h"
#include "MOD_util.h"
+#include "BLI_strict_flags.h"
+
static void initData(ModifierData *md)
{
- DeltaMushModifierData *dmmd = (DeltaMushModifierData *) md;
+ DeltaMushModifierData *dmmd = (DeltaMushModifierData *)md;
dmmd->dm_flags = MOD_DELTAMUSH_PINBOUNDS;
dmmd->boundverts = 0;
@@ -57,8 +59,8 @@ static void initData(ModifierData *md)
static void copyData(ModifierData *md, ModifierData *target)
{
- DeltaMushModifierData *dmmd = (DeltaMushModifierData *) md;
- DeltaMushModifierData *t_dmmd = (DeltaMushModifierData *) target;
+ DeltaMushModifierData *dmmd = (DeltaMushModifierData *)md;
+ DeltaMushModifierData *t_dmmd = (DeltaMushModifierData *)target;
modifier_copyData_generic(md, target);
if (dmmd->deltas) {
t_dmmd->deltas = MEM_dupallocN(dmmd->deltas);
@@ -120,7 +122,7 @@ static void update_weights(Object *ob, DeltaMushModifierData *dmmd, DerivedMesh
modifier_get_vgroup(ob, dm, dmmd->defgrp_name, &dvert, &defgrp_index);
if (!dmmd->smooth_weights && dvert) {
dmmd->smooth_weights = MEM_callocN(sizeof(float) * (size_t) numVerts, "delta mush weight cache");
- }
+ }
else if (dmmd->smooth_weights && !dvert) {
MEM_freeN(dmmd->smooth_weights);
dmmd->smooth_weights = NULL;
@@ -140,7 +142,8 @@ static void update_weights(Object *ob, DeltaMushModifierData *dmmd, DerivedMesh
}
-static void find_boundaries(DerivedMesh *dm, short *adjacent_counts) {
+static void find_boundaries(DerivedMesh *dm, short *adjacent_counts)
+{
MPoly *polys = dm->getPolyArray(dm);
MLoop *loops = dm->getLoopArray(dm);
MEdge *edges = dm->getEdgeArray(dm);
@@ -164,16 +167,16 @@ static void find_boundaries(DerivedMesh *dm, short *adjacent_counts) {
}
-typedef struct SmoothingData{
+typedef struct SmoothingData {
float delta[3];
float edge_lengths;
float edge_count;
-
} SmoothingData;
-static void smooth_iter(DeltaMushModifierData *dmmd, DerivedMesh *dm, float(*vertexCos)[3], int numVerts,
- short *boundaries, SmoothingData *smoothingData)
+static void smooth_iter(
+ DeltaMushModifierData *dmmd, DerivedMesh *dm, float(*vertexCos)[3], int numVerts,
+ short *boundaries, SmoothingData *smoothingData)
{
int numEdges = dm->getNumEdges(dm);
MEdge *edges = dm->getEdgeArray(dm);
@@ -202,24 +205,26 @@ static void smooth_iter(DeltaMushModifierData *dmmd, DerivedMesh *dm, float(*ver
w = w * (boundaries[i] != 0 ? 0.0f : 1.0f);
}
mul_v3_fl(smoothingData[i].delta, w * dmmd->lambda /
- (smoothingData[i].edge_lengths * smoothingData[i].edge_count));
+ (smoothingData[i].edge_lengths * smoothingData[i].edge_count));
add_v3_v3(vertexCos[i], smoothingData[i].delta);
}
}
}
-static void smooth_verts(DeltaMushModifierData *dmmd, DerivedMesh *derivedData, float(*vertexCos)[3], int numVerts)
+static void smooth_verts(
+ DeltaMushModifierData *dmmd, DerivedMesh *derivedData,
+ float(*vertexCos)[3], int numVerts)
{
- SmoothingData *smoothingData = MEM_mallocN((size_t)(numVerts)* sizeof(SmoothingData), "delta mush smoothing data");
+ SmoothingData *smoothingData = MEM_mallocN((size_t)numVerts * sizeof(SmoothingData), "delta mush smoothing data");
short *boundaries = NULL;
int i;
if (dmmd->dm_flags & MOD_DELTAMUSH_PINBOUNDS) {
- boundaries = MEM_callocN((size_t)(numVerts)* sizeof(short), "delta mush boundary data");
+ boundaries = MEM_callocN((size_t)numVerts * sizeof(short), "delta mush boundary data");
find_boundaries(derivedData, boundaries);
}
for (i = 0; i < dmmd->repeat; i++) {
- memset(smoothingData, 0, (size_t)(numVerts)* sizeof(SmoothingData));
+ memset(smoothingData, 0, (size_t)numVerts * sizeof(SmoothingData));
smooth_iter(dmmd, derivedData, vertexCos, numVerts, boundaries, smoothingData);
}
MEM_freeN(smoothingData);
@@ -229,8 +234,9 @@ static void smooth_verts(DeltaMushModifierData *dmmd, DerivedMesh *derivedData,
}
-static void calc_axes(const MLoop *pre, const MLoop *loop, const MLoop *post, float(*vertexCos)[3],
- float r_tspace[3][3])
+static void calc_axes(
+ const MLoop *pre, const MLoop *loop, const MLoop *post, float(*vertexCos)[3],
+ float r_tspace[3][3])
{
float v_prev[3];
float v_next[3];
@@ -243,7 +249,7 @@ static void calc_axes(const MLoop *pre, const MLoop *loop, const MLoop *post, fl
add_v3_v3v3(r_tspace[1], v_prev, v_next);
if (compare_v3v3(v_prev, v_next, FLT_EPSILON * 10.0f) == false) {
- float nor[3];
+ float nor[3];
float weight = fabsf(acosf(dot_v3v3(v_next, v_prev)));
cross_v3_v3v3(nor, v_prev, v_next);
@@ -258,15 +264,17 @@ static void calc_axes(const MLoop *pre, const MLoop *loop, const MLoop *post, fl
}
-static void calculate_tangent_spaces(DerivedMesh *dm, float(*vertexCos)[3],
- float(*r_tangentSpaces)[3][3])
+static void calculate_tangent_spaces(
+ DerivedMesh *dm, float(*vertexCos)[3],
+ float (*r_tangentSpaces)[3][3])
{
MPoly *polys = dm->getPolyArray(dm);
MLoop *loops = dm->getLoopArray(dm);
- int numFaces, f, numLoops, l, pre, post, loop, vert;
+ int numFaces, f, numLoops, l, pre, post, loop, i;
float t[3], bt[3], temp1[3], temp2[3];
numFaces = dm->getNumPolys(dm);
+
for (f = 0; f < numFaces; f++) {
MPoly *p = &polys[f];
numLoops = p->totloop;
@@ -274,36 +282,37 @@ static void calculate_tangent_spaces(DerivedMesh *dm, float(*vertexCos)[3],
loop = pre + 1;
post = p->loopstart;
for (l = 0; l < numLoops; l++) {
- vert = loops[loop].v;
- calc_axes(&loops[pre], &loops[loop], &loops[post], vertexCos, r_tangentSpaces[vert]);
+ i = (int)loops[loop].v;
+ calc_axes(&loops[pre], &loops[loop], &loops[post], vertexCos, r_tangentSpaces[i]);
pre = loop;
loop = post;
post++;
}
}
- for (vert = 0; vert < dm->getNumVerts(dm); vert++) {
- normalize_v3(r_tangentSpaces[vert][2]);
- copy_v3_v3(t, r_tangentSpaces[vert][0]);
- copy_v3_v3(bt, r_tangentSpaces[vert][1]);
+ for (i = 0; i < dm->getNumVerts(dm); i++) {
+ normalize_v3(r_tangentSpaces[i][2]);
+
+ copy_v3_v3(t, r_tangentSpaces[i][0]);
+ copy_v3_v3(bt, r_tangentSpaces[i][1]);
- cross_v3_v3v3(r_tangentSpaces[vert][1], r_tangentSpaces[vert][2], t);
- mul_v3_fl(r_tangentSpaces[vert][1], dot_v3v3(r_tangentSpaces[vert][1], bt) < 0.0f ? -1.0f : 1.0f);
+ cross_v3_v3v3(r_tangentSpaces[i][1], r_tangentSpaces[i][2], t);
+ mul_v3_fl(r_tangentSpaces[i][1], dot_v3v3(r_tangentSpaces[i][1], bt) < 0.0f ? -1.0f : 1.0f);
/* orthognalise tangent */
- mul_v3_v3fl(temp1, r_tangentSpaces[vert][2], dot_v3v3(r_tangentSpaces[vert][2], t));
- sub_v3_v3v3(r_tangentSpaces[vert][0], t, temp1);
+ mul_v3_v3fl(temp1, r_tangentSpaces[i][2], dot_v3v3(r_tangentSpaces[i][2], t));
+ sub_v3_v3v3(r_tangentSpaces[i][0], t, temp1);
/* orthognalise bitangent */
- mul_v3_v3fl(temp1, r_tangentSpaces[vert][2],
- dot_v3v3(r_tangentSpaces[vert][2], r_tangentSpaces[vert][1]));
- mul_v3_v3fl(temp2, r_tangentSpaces[vert][0],
- dot_v3v3(r_tangentSpaces[vert][0], r_tangentSpaces[vert][1]) / dot_v3v3(t, t));
- sub_v3_v3(r_tangentSpaces[vert][1], temp1);
- sub_v3_v3(r_tangentSpaces[vert][1], temp2);
-
- normalize_v3(r_tangentSpaces[vert][0]);
- normalize_v3(r_tangentSpaces[vert][1]);
+ mul_v3_v3fl(temp1, r_tangentSpaces[i][2],
+ dot_v3v3(r_tangentSpaces[i][2], r_tangentSpaces[i][1]));
+ mul_v3_v3fl(temp2, r_tangentSpaces[i][0],
+ dot_v3v3(r_tangentSpaces[i][0], r_tangentSpaces[i][1]) / dot_v3v3(t, t));
+ sub_v3_v3(r_tangentSpaces[i][1], temp1);
+ sub_v3_v3(r_tangentSpaces[i][1], temp2);
+
+ normalize_v3(r_tangentSpaces[i][0]);
+ normalize_v3(r_tangentSpaces[i][1]);
}
}
@@ -315,7 +324,7 @@ static void calc_deltas(DeltaMushModifierData *dmmd, DerivedMesh *dm, float(*ver
float invMat[3][3], d[3];
int i;
- tangentSpaces = MEM_callocN((size_t)(numVerts) * sizeof(float [3][3]), "delta mush tangents");
+ tangentSpaces = MEM_callocN((size_t)(numVerts) * sizeof(float[3][3]), "delta mush tangents");
dmmd->boundverts = numVerts;
/* allocate deltas if they have not yet been allocated, otheriwse we will just write over them */
if (!dmmd->deltas) {
@@ -399,8 +408,9 @@ static void deltamushmodifier_do(ModifierData *md, Object *ob, DerivedMesh *dm,
}
-static void deformVerts(ModifierData *md, Object *ob, DerivedMesh *derivedData,
- float(*vertexCos)[3], int numVerts, ModifierApplyFlag UNUSED(flag))
+static void deformVerts(
+ ModifierData *md, Object *ob, DerivedMesh *derivedData,
+ float(*vertexCos)[3], int numVerts, ModifierApplyFlag UNUSED(flag))
{
DerivedMesh *dm = get_dm(ob, NULL, derivedData, N
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list