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:
Diffstat (limited to 'source/blender/modifiers/intern/MOD_solidify.c')
-rw-r--r--source/blender/modifiers/intern/MOD_solidify.c286
1 files changed, 147 insertions, 139 deletions
diff --git a/source/blender/modifiers/intern/MOD_solidify.c b/source/blender/modifiers/intern/MOD_solidify.c
index 71839312cf5..96c84f5abbe 100644
--- a/source/blender/modifiers/intern/MOD_solidify.c
+++ b/source/blender/modifiers/intern/MOD_solidify.c
@@ -66,7 +66,7 @@ static void dm_calc_normal(DerivedMesh *dm, float (*temp_nors)[3])
float (*face_nors)[3];
float *f_no;
- int calc_face_nors= 0;
+ int calc_face_nors = 0;
numVerts = dm->getNumVerts(dm);
numEdges = dm->getNumEdges(dm);
@@ -124,15 +124,18 @@ static void dm_calc_normal(DerivedMesh *dm, float (*temp_nors)[3])
f_no = face_nors[i];
if (calc_face_nors)
- mesh_calc_poly_normal(mp, mloop+mp->loopstart, mvert, f_no);
+ mesh_calc_poly_normal(mp, mloop + mp->loopstart, mvert, f_no);
ml = mloop + mp->loopstart;
- for (j=0; j<mp->totloop; j++, ml++) {
+ for (j = 0; j < mp->totloop; j++, ml++) {
NOCALC_EDGEWEIGHT_ADD_EDGEREF_FACE(ml->v, ME_POLY_LOOP_NEXT(mloop, mp, j)->v);
}
}
- for (edge_iter = BLI_edgehashIterator_new(edge_hash); !BLI_edgehashIterator_isDone(edge_iter); BLI_edgehashIterator_step(edge_iter)) {
+ for (edge_iter = BLI_edgehashIterator_new(edge_hash);
+ !BLI_edgehashIterator_isDone(edge_iter);
+ BLI_edgehashIterator_step(edge_iter))
+ {
/* Get the edge vert indices, and edge value (the face indices that use it)*/
BLI_edgehashIterator_getKey(edge_iter, &ed_v1, &ed_v2);
edge_ref = BLI_edgehashIterator_getValue(edge_iter);
@@ -148,7 +151,7 @@ static void dm_calc_normal(DerivedMesh *dm, float (*temp_nors)[3])
/* only one face attached to that edge */
/* an edge without another attached- the weight on this is
* undefined, M_PI/2 is 90d in radians and that seems good enough */
- mul_v3_v3fl(edge_normal, face_nors[edge_ref->f1], M_PI/2);
+ mul_v3_v3fl(edge_normal, face_nors[edge_ref->f1], M_PI / 2);
}
add_v3_v3(temp_nors[ed_v1], edge_normal);
add_v3_v3(temp_nors[ed_v2], edge_normal);
@@ -168,7 +171,7 @@ static void dm_calc_normal(DerivedMesh *dm, float (*temp_nors)[3])
static void initData(ModifierData *md)
{
- SolidifyModifierData *smd = (SolidifyModifierData*) md;
+ SolidifyModifierData *smd = (SolidifyModifierData *) md;
smd->offset = 0.01f;
smd->offset_fac = -1.0f;
smd->flag = MOD_SOLIDIFY_RIM;
@@ -176,8 +179,8 @@ static void initData(ModifierData *md)
static void copyData(ModifierData *md, ModifierData *target)
{
- SolidifyModifierData *smd = (SolidifyModifierData*) md;
- SolidifyModifierData *tsmd = (SolidifyModifierData*) target;
+ SolidifyModifierData *smd = (SolidifyModifierData *) md;
+ SolidifyModifierData *tsmd = (SolidifyModifierData *) target;
tsmd->offset = smd->offset;
tsmd->offset_fac = smd->offset_fac;
tsmd->crease_inner = smd->crease_inner;
@@ -189,7 +192,7 @@ static void copyData(ModifierData *md, ModifierData *target)
static CustomDataMask requiredDataMask(Object *UNUSED(ob), ModifierData *md)
{
- SolidifyModifierData *smd = (SolidifyModifierData*) md;
+ SolidifyModifierData *smd = (SolidifyModifierData *) md;
CustomDataMask dataMask = 0;
/* ask for vertexgroups if we need them */
@@ -200,13 +203,13 @@ static CustomDataMask requiredDataMask(Object *UNUSED(ob), ModifierData *md)
static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
- DerivedMesh *dm,
- int UNUSED(useRenderParams),
- int UNUSED(isFinalCalc))
+ DerivedMesh *dm,
+ int UNUSED(useRenderParams),
+ int UNUSED(isFinalCalc))
{
int i;
DerivedMesh *result;
- const SolidifyModifierData *smd = (SolidifyModifierData*) md;
+ const SolidifyModifierData *smd = (SolidifyModifierData *) md;
MVert *mv, *mvert, *orig_mvert;
MEdge *ed, *medge, *orig_medge;
@@ -215,36 +218,36 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
const int numVerts = dm->getNumVerts(dm);
const int numEdges = dm->getNumEdges(dm);
const int numFaces = dm->getNumPolys(dm);
- int numLoops=0, newLoops=0, newFaces=0, newEdges=0;
+ int numLoops = 0, newLoops = 0, newFaces = 0, newEdges = 0;
int j;
/* only use material offsets if we have 2 or more materials */
- const short mat_nr_max= ob->totcol > 1 ? ob->totcol - 1 : 0;
- const short mat_ofs= mat_nr_max ? smd->mat_ofs : 0;
- const short mat_ofs_rim= mat_nr_max ? smd->mat_ofs_rim : 0;
+ const short mat_nr_max = ob->totcol > 1 ? ob->totcol - 1 : 0;
+ const short mat_ofs = mat_nr_max ? smd->mat_ofs : 0;
+ const short mat_ofs_rim = mat_nr_max ? smd->mat_ofs_rim : 0;
/* use for edges */
- int *new_vert_arr= NULL;
+ int *new_vert_arr = NULL;
BLI_array_declare(new_vert_arr);
- int *new_edge_arr= NULL;
+ int *new_edge_arr = NULL;
BLI_array_declare(new_edge_arr);
- int *old_vert_arr = MEM_callocN(sizeof(int)*numVerts, "old_vert_arr in solidify");
+ int *old_vert_arr = MEM_callocN(sizeof(int) * numVerts, "old_vert_arr in solidify");
- int *edge_users= NULL;
- char *edge_order= NULL;
+ int *edge_users = NULL;
+ char *edge_order = NULL;
int *edge_origIndex;
- float (*vert_nors)[3]= NULL;
+ float (*vert_nors)[3] = NULL;
float (*face_nors_result)[3] = NULL;
- const float ofs_orig= - (((-smd->offset_fac + 1.0f) * 0.5f) * smd->offset);
- const float ofs_new= smd->offset - (((-smd->offset_fac + 1.0f) * 0.5f) * smd->offset);
- const float offset_fac_vg= smd->offset_fac_vg;
- const float offset_fac_vg_inv= 1.0f - smd->offset_fac_vg;
+ const float ofs_orig = -(((-smd->offset_fac + 1.0f) * 0.5f) * smd->offset);
+ const float ofs_new = smd->offset - (((-smd->offset_fac + 1.0f) * 0.5f) * smd->offset);
+ const float offset_fac_vg = smd->offset_fac_vg;
+ const float offset_fac_vg_inv = 1.0f - smd->offset_fac_vg;
/* weights */
- MDeformVert *dvert, *dv= NULL;
+ MDeformVert *dvert, *dv = NULL;
const int defgrp_invert = ((smd->flag & MOD_SOLIDIFY_VGROUP_INV) != 0);
int defgrp_index;
@@ -264,11 +267,11 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
unsigned int v1, v2;
int eidx;
- for (i=0, mv=orig_mvert; i<numVerts; i++, mv++) {
+ for (i = 0, mv = orig_mvert; i < numVerts; i++, mv++) {
mv->flag &= ~ME_VERT_TMP_TAG;
}
- for (i=0, ed=orig_medge; i<numEdges; i++, ed++) {
+ for (i = 0, ed = orig_medge; i < numEdges; i++, ed++) {
BLI_edgehash_insert(edgehash, ed->v1, ed->v2, SET_INT_IN_POINTER(i));
}
@@ -291,14 +294,14 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
}
- edge_users= MEM_mallocN(sizeof(int) * numEdges, "solid_mod edges");
- edge_order= MEM_mallocN(sizeof(char) * numEdges, "solid_mod eorder");
+ edge_users = MEM_mallocN(sizeof(int) * numEdges, "solid_mod edges");
+ edge_order = MEM_mallocN(sizeof(char) * numEdges, "solid_mod eorder");
fill_vn_i(edge_users, numEdges, INVALID_UNUSED);
- for (i=0, mp=orig_mpoly; i<numFaces; i++, mp++) {
+ for (i = 0, mp = orig_mpoly; i < numFaces; i++, mp++) {
MLoop *ml;
- for (ml=orig_mloop + mp->loopstart, j=0; j<mp->totloop; ml++, j++) {
+ for (ml = orig_mloop + mp->loopstart, j = 0; j < mp->totloop; ml++, j++) {
ADD_EDGE_USER(ml->v, ME_POLY_LOOP_NEXT(orig_mloop, mp, j)->v, j);
}
}
@@ -307,9 +310,9 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
#undef INVALID_UNUSED
#undef INVALID_PAIR
- ehi= BLI_edgehashIterator_new(edgehash);
+ ehi = BLI_edgehashIterator_new(edgehash);
for (; !BLI_edgehashIterator_isDone(ehi); BLI_edgehashIterator_step(ehi)) {
- eidx= GET_INT_FROM_POINTER(BLI_edgehashIterator_getValue(ehi));
+ eidx = GET_INT_FROM_POINTER(BLI_edgehashIterator_getValue(ehi));
if (edge_users[eidx] >= 0) {
BLI_edgehashIterator_getKey(ehi, &v1, &v2);
orig_mvert[v1].flag |= ME_VERT_TMP_TAG;
@@ -321,7 +324,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
}
BLI_edgehashIterator_free(ehi);
- for (i=0, mv=orig_mvert; i<numVerts; i++, mv++) {
+ for (i = 0, mv = orig_mvert; i < numVerts; i++, mv++) {
if (mv->flag & ME_VERT_TMP_TAG) {
old_vert_arr[i] = BLI_array_count(new_vert_arr);
BLI_array_append(new_vert_arr, i);
@@ -335,11 +338,12 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
}
if (smd->flag & MOD_SOLIDIFY_NORMAL_CALC) {
- vert_nors= MEM_callocN(sizeof(float) * numVerts * 3, "mod_solid_vno_hq");
+ vert_nors = MEM_callocN(sizeof(float) * numVerts * 3, "mod_solid_vno_hq");
dm_calc_normal(dm, vert_nors);
}
- result = CDDM_from_template(dm, numVerts * 2, (numEdges * 2) + newEdges, 0, (numLoops*2) + newLoops, (numFaces * 2) + newFaces);
+ result = CDDM_from_template(dm, numVerts * 2, (numEdges * 2) + newEdges, 0,
+ (numLoops * 2) + newLoops, (numFaces * 2) + newFaces);
mpoly = CDDM_get_polys(result);
mloop = CDDM_get_loops(result);
@@ -363,14 +367,14 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
/*flip normals*/
mp = mpoly + numFaces;
- for (i=0; i<dm->numPolyData; i++, mp++) {
+ for (i = 0; i < dm->numPolyData; i++, mp++) {
MLoop *ml2;
int e;
ml2 = mloop + mp->loopstart + dm->numLoopData;
- for (j=0; j<mp->totloop; j++) {
- CustomData_copy_data(&dm->loopData, &result->loopData, mp->loopstart+j,
- mp->loopstart+(mp->totloop-j-1)+dm->numLoopData, 1);
+ for (j = 0; j < mp->totloop; j++) {
+ CustomData_copy_data(&dm->loopData, &result->loopData, mp->loopstart + j,
+ mp->loopstart + (mp->totloop - j - 1) + dm->numLoopData, 1);
}
if (mat_ofs) {
@@ -379,14 +383,14 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
}
e = ml2[0].e;
- for (j=0; j<mp->totloop-1; j++) {
- ml2[j].e = ml2[j+1].e;
+ for (j = 0; j < mp->totloop - 1; j++) {
+ ml2[j].e = ml2[j + 1].e;
}
- ml2[mp->totloop-1].e = e;
+ ml2[mp->totloop - 1].e = e;
mp->loopstart += dm->numLoopData;
- for (j=0; j<mp->totloop; j++) {
+ for (j = 0; j < mp->totloop; j++) {
ml2[j].e += numEdges;
ml2[j].v += numVerts;
}
@@ -396,7 +400,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
}
}
- for (i=0, ed=medge+numEdges; i<numEdges; i++, ed++) {
+ for (i = 0, ed = medge + numEdges; i < numEdges; i++, ed++) {
ed->v1 += numVerts;
ed->v2 += numVerts;
}
@@ -409,14 +413,14 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
if (ofs_new != 0.0f) {
- scalar_short= scalar_short_vgroup= ofs_new / 32767.0f;
- mv= mvert + ((ofs_new >= ofs_orig) ? 0 : numVerts);
- dv= dvert;
- for (i=0; i<numVerts; i++, mv++) {
+ scalar_short = scalar_short_vgroup = ofs_new / 32767.0f;
+ mv = mvert + ((ofs_new >= ofs_orig) ? 0 : numVerts);
+ dv = dvert;
+ for (i = 0; i < numVerts; i++, mv++) {
if (dv) {
- if (defgrp_invert) scalar_short_vgroup = 1.0f - defvert_find_weight(dv, defgrp_index);
- else scalar_short_vgroup = defvert_find_weight(dv, defgrp_index);
- scalar_short_vgroup= (offset_fac_vg + (scalar_short_vgroup * offset_fac_vg_inv)) * scalar_short;
+ if (defgrp_invert) scalar_short_vgroup = 1.0f - defvert_find_weight(dv, defgrp_index);
+ else scalar_short_vgroup = defvert_find_weight(dv, defgrp_index);
+ scalar_short_vgroup = (offset_fac_vg + (scalar_short_vgroup * offset_fac_vg_inv)) * scalar_short;
dv++;
}
VECADDFAC(mv->co, mv->co, mv->no, scalar_short_vgroup);
@@ -424,14 +428,14 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
}
if (ofs_orig != 0.0f) {
- scalar_short= scalar_short_vgroup= ofs_orig / 32767.0f;
- mv= mvert + ((ofs_new >= ofs_orig) ? numVerts : 0); /* same as above but swapped, intentional use of 'ofs_new' */
- dv= dvert;
- for (i=0; i<numVerts; i++, mv++) {
+ scalar_short = scalar_short_vgroup = ofs_orig / 32767.0f;
+ mv = mvert + ((ofs_new >= ofs_orig) ? numVerts : 0); /* as above but swapped, intentional use 'ofs_new' */
+ dv = dvert;
+ for (i = 0; i < numVerts; i++, mv++) {
if (dv) {
- if (defgrp_invert) scalar_short_vgroup = 1.0f - defvert_find_weight(dv, defgrp_index);
- else scalar_short_vgroup = defvert_find_weight(dv, defgrp_index);
- scalar_short_vgroup= (offset_fac_vg + (scalar_short_vgroup * offset_fac_vg_inv)) * scalar_short;
+ if (defgrp_invert) scalar_short_vgroup = 1.0f - defvert_find_weight(dv, defgrp_index);
+ else scalar_short_vgroup = defvert_find_weight(dv, defgrp_index);
+ scalar_short_vgroup = (offset_fac_vg + (scalar_short_vgroup * offset_fac_vg_inv)) * scalar_short;
dv++;
}
VECADDFAC(mv->co, mv->co, mv->no, scalar_short_vgroup);
@@ -442,11 +446,11 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
else {
/* make a face normal layer if not present */
float (*face_nors)[3];
- int face_nors_calc= 0;
+ int face_nors_calc = 0;
/* same as EM_solidify() in editmesh_lib.c */
- float *vert_angles= MEM_callocN(sizeof(float) * numVerts * 2, "mod_solid_pair"); /* 2 in 1 */
- float *vert_accum= vert_angles + numVerts;
+ float *vert_angles = MEM_callocN(sizeof(float) * numVerts * 2, "mod_solid_pair"); /* 2 in 1 */
+ float *vert_accum = vert_angles + numVerts;
float *face_angles = NULL;
BLI_array_staticdeclare(face_angles, 16); /* BM_NGON_STACK_SIZE */
int j, vidx;
@@ -454,23 +458,23 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
face_nors = CustomData_get_layer(&dm->polyData, CD_NORMAL);
if (!face_nors) {
face_nors = CustomData_add_layer(&dm->polyData, CD_NORMAL, CD_CALLOC, NULL, dm->numPolyData);
- face_nors_calc= 1;
+ face_nors_calc = 1;
}
- if (vert_nors==NULL) {
- vert_nors= MEM_mallocN(sizeof(float) * numVerts * 3, "mod_solid_vno");
- for (i=0, mv=mvert; i<numVerts; i++, mv++) {
+ if (vert_nors == NULL) {
+ vert_nors = MEM_mallocN(sizeof(float) * numVerts * 3, "mod_solid_vno");
+ for (i = 0, mv = mvert; i < numVerts; i++, mv++) {
normal_short_to_float_v3(vert_nors[i], mv->no);
}
}
- for (i=0, mp=mpoly; i<numFaces; i++, mp++) {
+ for (i = 0, mp = mpoly; i < numFaces; i++, mp++) {
if (face_nors_calc)
mesh_calc_poly_normal(mp, &mloop[mp->loopstart], mvert, face_nors[i]);
/* just added, calc the normal */
BLI_array_empty(face_angles);
- for (j=0, ml=mloop+mp->loopstart; j<mp->totloop; j++, ml++) {
+ for (j = 0, ml = mloop + mp->loopstart; j < mp->totloop; j++, ml++) {
MLoop *ml_prev = ME_POLY_LOOP_PREV(mloop, mp, j);
MLoop *ml_next = ME_POLY_LOOP_NEXT(mloop, mp, j);
@@ -482,10 +486,11 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
BLI_array_append(face_angles, angle);
}
- for (j=0, ml=mloop+mp->loopstart; j<mp->totloop; j++, ml++) {
+ for (j = 0, ml = mloop + mp->loopstart; j < mp->totloop; j++, ml++) {
vidx = ml->v;
vert_accum[vidx] += face_angles[j];
- vert_angles[vidx]+= shell_angle_to_dist(angle_normalized_v3v3(vert_nors[vidx], face_nors[i])) * face_angles[j];
+ vert_angles[vidx] += shell_angle_to_dist(angle_normalized_v3v3(vert_nors[vidx], face_nors[i])) *
+ face_angles[j];
}
}
@@ -495,27 +500,27 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
if (dvert) {
float scalar;
- dv= dvert;
+ dv = dvert;
if (defgrp_invert) {
- for (i=0; i<numVerts; i++, dv++) {
- scalar= 1.0f - defvert_find_weight(dv, defgrp_index);
- scalar= offset_fac_vg + (scalar * offset_fac_vg_inv);
+ for (i = 0; i < numVerts; i++, dv++) {
+ scalar = 1.0f - defvert_find_weight(dv, defgrp_index);
+ scalar = offset_fac_vg + (scalar * offset_fac_vg_inv);
vert_angles[i] *= scalar;
}
}
else {
- for (i=0; i<numVerts; i++, dv++) {
- scalar= defvert_find_weight(dv, defgrp_index);
- scalar= offset_fac_vg + (scalar * offset_fac_vg_inv);
+ for (i = 0; i < numVerts; i++, dv++) {
+ scalar = defvert_find_weight(dv, defgrp_index);
+ scalar = offset_fac_vg + (scalar * offset_fac_vg_inv);
vert_angles[i] *= scalar;
}
}
}
if (ofs_new) {
- mv= mvert + ((ofs_new >= ofs_orig) ? 0 : numVerts);
+ mv = mvert + ((ofs_new >= ofs_orig) ? 0 : numVerts);
- for (i=0; i<numVerts; i++, mv++) {
+ for (i = 0; i < numVerts; i++, mv++) {
if (vert_accum[i]) { /* zero if unselected */
madd_v3_v3fl(mv->co, vert_nors[i], ofs_new * (vert_angles[i] / vert_accum[i]));
}
@@ -523,9 +528,10 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
}
if (ofs_orig) {
- mv= mvert + ((ofs_new >= ofs_orig) ? numVerts : 0); /* same as above but swapped, intentional use of 'ofs_new' */
+ /* same as above but swapped, intentional use of 'ofs_new' */
+ mv = mvert + ((ofs_new >= ofs_orig) ? numVerts : 0);
- for (i=0; i<numVerts; i++, mv++) {
+ for (i = 0; i < numVerts; i++, mv++) {
if (vert_accum[i]) { /* zero if unselected */
madd_v3_v3fl(mv->co, vert_nors[i], ofs_orig * (vert_angles[i] / vert_accum[i]));
}
@@ -539,46 +545,48 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
MEM_freeN(vert_nors);
/* flip vertex normals for copied verts */
- mv= mvert + numVerts;
- for (i=0; i<numVerts; i++, mv++) {
- mv->no[0]= -mv->no[0];
- mv->no[1]= -mv->no[1];
- mv->no[2]= -mv->no[2];
+ mv = mvert + numVerts;
+ for (i = 0; i < numVerts; i++, mv++) {
+ mv->no[0] = -mv->no[0];
+ mv->no[1] = -mv->no[1];
+ mv->no[2] = -mv->no[2];
}
if (smd->flag & MOD_SOLIDIFY_RIM) {
int *origindex;
/* bugger, need to re-calculate the normals for the new edge faces.
- * This could be done in many ways, but probably the quickest way is to calculate the average normals for side faces only.
+ * This could be done in many ways, but probably the quickest way
+ * is to calculate the average normals for side faces only.
* Then blend them with the normals of the edge verts.
*
- * at the moment its easiest to allocate an entire array for every vertex, even though we only need edge verts - campbell
+ * at the moment its easiest to allocate an entire array for every vertex,
+ * even though we only need edge verts - campbell
*/
#define SOLIDIFY_SIDE_NORMALS
#ifdef SOLIDIFY_SIDE_NORMALS
/* annoying to allocate these since we only need the edge verts, */
- float (*edge_vert_nos)[3]= MEM_callocN(sizeof(float) * numVerts * 3, "solidify_edge_nos");
+ float (*edge_vert_nos)[3] = MEM_callocN(sizeof(float) * numVerts * 3, "solidify_edge_nos");
float nor[3];
#endif
- const unsigned char crease_rim= smd->crease_rim * 255.0f;
- const unsigned char crease_outer= smd->crease_outer * 255.0f;
- const unsigned char crease_inner= smd->crease_inner * 255.0f;
+ const unsigned char crease_rim = smd->crease_rim * 255.0f;
+ const unsigned char crease_outer = smd->crease_outer * 255.0f;
+ const unsigned char crease_inner = smd->crease_inner * 255.0f;
/* add faces & edges */
- origindex= result->getEdgeDataArray(result, CD_ORIGINDEX);
- ed= medge + (numEdges * 2);
- for (i=0; i<newEdges; i++, ed++) {
- ed->v1= new_vert_arr[i];
- ed->v2= new_vert_arr[i] + numVerts;
+ origindex = result->getEdgeDataArray(result, CD_ORIGINDEX);
+ ed = medge + (numEdges * 2);
+ for (i = 0; i < newEdges; i++, ed++) {
+ ed->v1 = new_vert_arr[i];
+ ed->v2 = new_vert_arr[i] + numVerts;
ed->flag |= ME_EDGEDRAW;
- origindex[numEdges * 2 + i]= ORIGINDEX_NONE;
+ origindex[numEdges * 2 + i] = ORIGINDEX_NONE;
if (crease_rim)
- ed->crease= crease_rim;
+ ed->crease = crease_rim;
}
/* faces */
@@ -588,24 +596,24 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
mp = mpoly + (numFaces * 2);
ml = mloop + (numLoops * 2);
j = 0;
- for (i=0; i<newFaces; i++, mp++) {
- int eidx= new_edge_arr[i];
- int fidx= edge_users[eidx];
+ for (i = 0; i < newFaces; i++, mp++) {
+ int eidx = new_edge_arr[i];
+ int fidx = edge_users[eidx];
int flip, k1, k2;
if (fidx >= numFaces) {
fidx -= numFaces;
- flip= 1;
+ flip = 1;
}
else {
- flip= 0;
+ flip = 0;
}
- ed= medge + eidx;
+ ed = medge + eidx;
/* copy most of the face settings */
DM_copy_poly_data(dm, result, fidx, (numFaces * 2) + i, 1);
- mp->loopstart = j+numLoops*2;
+ mp->loopstart = j + numLoops * 2;
mp->flag = mpoly[fidx].flag;
/* notice we use 'mp->totloop' which is later overwritten,
@@ -616,33 +624,33 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
mp->totloop = 4;
- CustomData_copy_data(&dm->loopData, &result->loopData, k1, numLoops*2+j+0, 1);
- CustomData_copy_data(&dm->loopData, &result->loopData, k2, numLoops*2+j+1, 1);
- CustomData_copy_data(&dm->loopData, &result->loopData, k2, numLoops*2+j+2, 1);
- CustomData_copy_data(&dm->loopData, &result->loopData, k1, numLoops*2+j+3, 1);
+ CustomData_copy_data(&dm->loopData, &result->loopData, k1, numLoops * 2 + j + 0, 1);
+ CustomData_copy_data(&dm->loopData, &result->loopData, k2, numLoops * 2 + j + 1, 1);
+ CustomData_copy_data(&dm->loopData, &result->loopData, k2, numLoops * 2 + j + 2, 1);
+ CustomData_copy_data(&dm->loopData, &result->loopData, k1, numLoops * 2 + j + 3, 1);
if (flip) {
ml[j].v = ed->v1;
ml[j++].e = eidx;
ml[j].v = ed->v2;
- ml[j++].e = numEdges*2 + old_vert_arr[ed->v2];
+ ml[j++].e = numEdges * 2 + old_vert_arr[ed->v2];
- ml[j].v = ed->v2+numVerts;
- ml[j++].e = eidx+numEdges;
+ ml[j].v = ed->v2 + numVerts;
+ ml[j++].e = eidx + numEdges;
- ml[j].v = ed->v1+numVerts;
- ml[j++].e = numEdges*2 + old_vert_arr[ed->v1];
+ ml[j].v = ed->v1 + numVerts;
+ ml[j++].e = numEdges * 2 + old_vert_arr[ed->v1];
}
else {
ml[j].v = ed->v2;
ml[j++].e = eidx;
ml[j].v = ed->v1;
- ml[j++].e = numEdges*2 + old_vert_arr[ed->v1];
+ ml[j++].e = numEdges * 2 + old_vert_arr[ed->v1];
- ml[j].v = ed->v1+numVerts;
- ml[j++].e = eidx+numEdges;
+ ml[j].v = ed->v1 + numVerts;
+ ml[j++].e = eidx + numEdges;
ml[j].v = ed->v2 + numVerts;
ml[j++].e = numEdges * 2 + old_vert_arr[ed->v2];
@@ -660,9 +668,9 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
}
if (crease_outer) {
/* crease += crease_outer; without wrapping */
- unsigned char *cr= (unsigned char *)&(ed->crease);
- int tcr= *cr + crease_outer;
- *cr= tcr > 255 ? 255 : tcr;
+ unsigned char *cr = (unsigned char *)&(ed->crease);
+ int tcr = *cr + crease_outer;
+ *cr = tcr > 255 ? 255 : tcr;
}
if (crease_inner) {
@@ -674,9 +682,9 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
#ifdef SOLIDIFY_SIDE_NORMALS
normal_quad_v3(nor, mvert[ml[j - 4].v].co,
- mvert[ml[j - 3].v].co,
- mvert[ml[j - 2].v].co,
- mvert[ml[j - 1].v].co);
+ mvert[ml[j - 3].v].co,
+ mvert[ml[j - 2].v].co,
+ mvert[ml[j - 1].v].co);
add_v3_v3(edge_vert_nos[ed->v1], nor);
add_v3_v3(edge_vert_nos[ed->v2], nor);
@@ -688,8 +696,8 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
}
#ifdef SOLIDIFY_SIDE_NORMALS
- ed= medge + (numEdges * 2);
- for (i=0; i<newEdges; i++, ed++) {
+ ed = medge + (numEdges * 2);
+ for (i = 0; i < newEdges; i++, ed++) {
float nor_cpy[3];
short *nor_short;
int j;
@@ -697,8 +705,8 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
/* note, only the first vertex (lower half of the index) is calculated */
normalize_v3_v3(nor_cpy, edge_vert_nos[ed->v1]);
- for (j=0; j<2; j++) { /* loop over both verts of the edge */
- nor_short= mvert[*(&ed->v1 + j)].no;
+ for (j = 0; j < 2; j++) { /* loop over both verts of the edge */
+ nor_short = mvert[*(&ed->v1 + j)].no;
normal_short_to_float_v3(nor, nor_short);
add_v3_v3(nor, nor_cpy);
normalize_v3(nor);
@@ -729,9 +737,9 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
#undef SOLIDIFY_SIDE_NORMALS
static DerivedMesh *applyModifierEM(ModifierData *md,
- Object *ob,
- struct BMEditMesh *UNUSED(editData),
- DerivedMesh *derivedData)
+ Object *ob,
+ struct BMEditMesh *UNUSED(editData),
+ DerivedMesh *derivedData)
{
return applyModifier(md, ob, derivedData, 0, 1);
}
@@ -743,11 +751,11 @@ ModifierTypeInfo modifierType_Solidify = {
/* structSize */ sizeof(SolidifyModifierData),
/* type */ eModifierTypeType_Constructive,
- /* flags */ eModifierTypeFlag_AcceptsMesh
- | eModifierTypeFlag_AcceptsCVs
- | eModifierTypeFlag_SupportsMapping
- | eModifierTypeFlag_SupportsEditmode
- | eModifierTypeFlag_EnableInEditmode,
+ /* flags */ eModifierTypeFlag_AcceptsMesh |
+ eModifierTypeFlag_AcceptsCVs |
+ eModifierTypeFlag_SupportsMapping |
+ eModifierTypeFlag_SupportsEditmode |
+ eModifierTypeFlag_EnableInEditmode,
/* copyData */ copyData,
/* deformVerts */ NULL,