[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [48654] branches/soc-2012-sushi: Add volume preservation flag in UI
Alexander Pinzon
apinzonf at gmail.com
Thu Jul 5 18:22:02 CEST 2012
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;
More information about the Bf-blender-cvs
mailing list