Revision: 48654
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48654
Author:   apinzonf
Date:     2012-07-05 16:22:01 +0000 (Thu, 05 Jul 2012)
Log Message:
-----------
Add volume preservation flag in UI

Modified Paths:
--------------
    
branches/soc-2012-sushi/release/scripts/startup/bl_ui/properties_data_modifier.py
    branches/soc-2012-sushi/source/blender/bmesh/intern/bmesh_opdefines.c
    
branches/soc-2012-sushi/source/blender/bmesh/operators/bmo_smooth_laplacian.c
    branches/soc-2012-sushi/source/blender/editors/mesh/editmesh_tools.c
    branches/soc-2012-sushi/source/blender/makesdna/DNA_modifier_types.h
    branches/soc-2012-sushi/source/blender/makesrna/intern/rna_modifier.c
    
branches/soc-2012-sushi/source/blender/modifiers/intern/MOD_laplaciansmooth.c

Modified: 
branches/soc-2012-sushi/release/scripts/startup/bl_ui/properties_data_modifier.py
===================================================================
--- 
branches/soc-2012-sushi/release/scripts/startup/bl_ui/properties_data_modifier.py
   2012-07-05 15:23:39 UTC (rev 48653)
+++ 
branches/soc-2012-sushi/release/scripts/startup/bl_ui/properties_data_modifier.py
   2012-07-05 16:22:01 UTC (rev 48654)
@@ -317,11 +317,13 @@
         layout.prop(md, "lamb")
         layout.prop(md, "lambdaborder")
         layout.prop(md, "minarea")
-        layout.label(text="Axis:")
         row = layout.row()
+        row.label(text="Axis: ")
         row.prop(md, "use_x")
         row.prop(md, "use_y")
         row.prop(md, "use_z")
+        row = layout.row()
+        row.prop(md, "volume_preservation")
         layout.label(text="Vertex Group:")
         layout.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
 

Modified: branches/soc-2012-sushi/source/blender/bmesh/intern/bmesh_opdefines.c
===================================================================
--- branches/soc-2012-sushi/source/blender/bmesh/intern/bmesh_opdefines.c       
2012-07-05 15:23:39 UTC (rev 48653)
+++ branches/soc-2012-sushi/source/blender/bmesh/intern/bmesh_opdefines.c       
2012-07-05 16:22:01 UTC (rev 48654)
@@ -125,6 +125,7 @@
         {BMO_OP_SLOT_BOOL, "use_y"}, //Smooth object along Y axis
         {BMO_OP_SLOT_BOOL, "use_z"}, //Smooth object along Z axis
         {BMO_OP_SLOT_MAPPING, "vertex_group"}, // Vertex group with weights 
for every vertice.
+        {BMO_OP_SLOT_BOOL, "volume_preservation"}, //Apply volume preservation 
after smooth
        {0} /* null-terminating sentinel */,
        },
        bmo_smooth_laplacian_vert_exec,

Modified: 
branches/soc-2012-sushi/source/blender/bmesh/operators/bmo_smooth_laplacian.c
===================================================================
--- 
branches/soc-2012-sushi/source/blender/bmesh/operators/bmo_smooth_laplacian.c   
    2012-07-05 15:23:39 UTC (rev 48653)
+++ 
branches/soc-2012-sushi/source/blender/bmesh/operators/bmo_smooth_laplacian.c   
    2012-07-05 16:22:01 UTC (rev 48654)
@@ -476,7 +476,7 @@
 {
        int i;
        int m_vertex_id;
-       int usex, usey, usez;
+       int usex, usey, usez, volumepreservation;
        float lambda, lambda_border;
        float vini, vend;
        float w;
@@ -498,6 +498,7 @@
        usex = BMO_slot_bool_get(op, "use_x");
        usey = BMO_slot_bool_get(op, "use_y");
        usez = BMO_slot_bool_get(op, "use_z");
+       volumepreservation = BMO_slot_bool_get(op, "volume_preservation");
 
 
        nlNewContext();
@@ -549,7 +550,9 @@
        nlEnd(NL_SYSTEM);
 
        if (nlSolveAdvanced(NULL, NL_TRUE) ) {
-               vini = compute_volume(bm, op);
+               if(volumepreservation){
+                       vini = compute_volume(bm, op);
+               }
                BMO_ITER (v, &siter, bm, op, "verts", BM_VERT) {
                        m_vertex_id = BM_elem_index_get(v);
                        if (usex) {
@@ -562,8 +565,10 @@
                                v->co[2] =  nlGetVariable(2, m_vertex_id);
                        }
                }
-               vend = compute_volume(bm, op);
-               volume_preservation(bm, op, vini, vend, usex, usey, usez);
+               if(volumepreservation){
+                       vend = compute_volume(bm, op);
+                       volume_preservation(bm, op, vini, vend, usex, usey, 
usez);
+               }
        }
                
        delete_laplacian_system(sys);

Modified: branches/soc-2012-sushi/source/blender/editors/mesh/editmesh_tools.c
===================================================================
--- branches/soc-2012-sushi/source/blender/editors/mesh/editmesh_tools.c        
2012-07-05 15:23:39 UTC (rev 48653)
+++ branches/soc-2012-sushi/source/blender/editors/mesh/editmesh_tools.c        
2012-07-05 16:22:01 UTC (rev 48654)
@@ -1600,7 +1600,7 @@
        Object *obedit = CTX_data_edit_object(C);
        BMEditMesh *em = BMEdit_FromObject(obedit);
        ModifierData *md;
-       int usex = TRUE, usey = TRUE, usez = TRUE;
+       int usex = TRUE, usey = TRUE, usez = TRUE, volume_preservation = TRUE;
        int i, repeat;
        float lambda = 0.1f;
        float lambda_border = 0.1f;
@@ -1630,13 +1630,14 @@
        usex = RNA_boolean_get(op->ptr, "use_x");
        usey = RNA_boolean_get(op->ptr, "use_y");
        usez = RNA_boolean_get(op->ptr, "use_z");
+       volume_preservation = RNA_boolean_get(op->ptr, "volume_preservation");
        if (!repeat)
                repeat = 1;
        
        for (i = 0; i < repeat; i++) {
                if (!EDBM_op_callf(em, op,
-                                  "smooth_laplacian_vert verts=%hv lambda=%f 
lambda_border=%f min_area=%f use_x=%b use_y=%b use_z=%b",
-                                  BM_ELEM_SELECT, lambda, lambda_border, 
min_area, usex, usey, usez))
+                                  "smooth_laplacian_vert verts=%hv lambda=%f 
lambda_border=%f min_area=%f use_x=%b use_y=%b use_z=%b volume_preservation=%b",
+                                  BM_ELEM_SELECT, lambda, lambda_border, 
min_area, usex, usey, usez, volume_preservation))
                {
                        return OPERATOR_CANCELLED;
                }
@@ -1678,6 +1679,7 @@
        RNA_def_boolean(ot->srna, "use_x", 1, "Smooth X Axis", "Smooth object 
along     X axis");
        RNA_def_boolean(ot->srna, "use_y", 1, "Smooth Y Axis", "Smooth object 
along     Y axis");
        RNA_def_boolean(ot->srna, "use_z", 1, "Smooth Z Axis", "Smooth object 
along     Z axis");
+       RNA_def_boolean(ot->srna, "volume_preservation", 1, "Volume 
Preservation", "Apply volume preservation after smooth");
 
 }
 

Modified: branches/soc-2012-sushi/source/blender/makesdna/DNA_modifier_types.h
===================================================================
--- branches/soc-2012-sushi/source/blender/makesdna/DNA_modifier_types.h        
2012-07-05 15:23:39 UTC (rev 48653)
+++ branches/soc-2012-sushi/source/blender/makesdna/DNA_modifier_types.h        
2012-07-05 16:22:01 UTC (rev 48654)
@@ -1098,6 +1098,7 @@
 #define MOD_LAPLACIANSMOOTH_X (1<<1)
 #define MOD_LAPLACIANSMOOTH_Y (1<<2)
 #define MOD_LAPLACIANSMOOTH_Z (1<<3)
+#define MOD_LAPLACIANSMOOTH_VOLUME_PRESERVATION (1<<4)
 
 typedef struct LaplacianSmoothModifierData {
        ModifierData modifier;

Modified: branches/soc-2012-sushi/source/blender/makesrna/intern/rna_modifier.c
===================================================================
--- branches/soc-2012-sushi/source/blender/makesrna/intern/rna_modifier.c       
2012-07-05 15:23:39 UTC (rev 48653)
+++ branches/soc-2012-sushi/source/blender/makesrna/intern/rna_modifier.c       
2012-07-05 16:22:01 UTC (rev 48654)
@@ -1776,6 +1776,11 @@
        RNA_def_property_ui_text(prop, "Z", "Smooth object along Z axis");
        RNA_def_property_update(prop, 0, "rna_Modifier_update");
 
+       prop = RNA_def_property(srna, "volume_preservation", PROP_BOOLEAN, 
PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "flag", 
MOD_LAPLACIANSMOOTH_VOLUME_PRESERVATION);
+       RNA_def_property_ui_text(prop, "Volume Preservation", "Apply volume 
preservation after smooth");
+       RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
        prop = RNA_def_property(srna, "lamb", PROP_FLOAT, PROP_NONE);
        RNA_def_property_float_sdna(prop, NULL, "lambda");
        RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);

Modified: 
branches/soc-2012-sushi/source/blender/modifiers/intern/MOD_laplaciansmooth.c
===================================================================
--- 
branches/soc-2012-sushi/source/blender/modifiers/intern/MOD_laplaciansmooth.c   
    2012-07-05 15:23:39 UTC (rev 48653)
+++ 
branches/soc-2012-sushi/source/blender/modifiers/intern/MOD_laplaciansmooth.c   
    2012-07-05 16:22:01 UTC (rev 48654)
@@ -200,7 +200,7 @@
        smd->lambda_border = 0.00005f;
        smd->min_area = 0.00001f;
        smd->repeat = 1;
-       smd->flag = MOD_LAPLACIANSMOOTH_X | MOD_LAPLACIANSMOOTH_Y | 
MOD_LAPLACIANSMOOTH_Z;
+       smd->flag = MOD_LAPLACIANSMOOTH_X | MOD_LAPLACIANSMOOTH_Y | 
MOD_LAPLACIANSMOOTH_Z | MOD_LAPLACIANSMOOTH_VOLUME_PRESERVATION;
        smd->defgrp_name[0] = '\0';
 }
 
@@ -579,7 +579,9 @@
 
                if (nlSolveAdvanced(NULL, NL_TRUE)) {
                        float vini, vend;
-                       vini = compute_volume(vertexCos, sys->mfaces, 
sys->numFaces);
+                       if (smd->flag & 
MOD_LAPLACIANSMOOTH_VOLUME_PRESERVATION) {
+                               vini = compute_volume(vertexCos, sys->mfaces, 
sys->numFaces);
+                       }
                        for (i = 0; i < numVerts; i++) {
                                if (smd->flag & MOD_LAPLACIANSMOOTH_X) {
                                        vertexCos[i][0] = nlGetVariable(0, i);
@@ -591,8 +593,10 @@
                                        vertexCos[i][2] = nlGetVariable(2, i);
                                }
                        }
-                       vend = compute_volume(vertexCos, sys->mfaces, 
sys->numFaces);
-                       volume_preservation(vertexCos, numVerts, vini, vend, 
smd->flag);
+                       if (smd->flag & 
MOD_LAPLACIANSMOOTH_VOLUME_PRESERVATION) {
+                               vend = compute_volume(vertexCos, sys->mfaces, 
sys->numFaces);
+                               volume_preservation(vertexCos, numVerts, vini, 
vend, smd->flag);
+                       }
                }
                nlDeleteContext(sys->context);
                sys->context = NULL;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to