fix [#33677] Lambda is un-settable for mesh.vertices_smooth_laplacian
lambda is python keyword.
This commit is contained in:
@@ -128,7 +128,7 @@ static BMOpDefine bmo_smooth_laplacian_vert_def = {
|
||||
"smooth_laplacian_vert",
|
||||
/* slots_in */
|
||||
{{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertices */
|
||||
{"lambda", BMO_OP_SLOT_FLT}, /* lambda param */
|
||||
{"lambda_factor", BMO_OP_SLOT_FLT}, /* lambda param */
|
||||
{"lambda_border", BMO_OP_SLOT_FLT}, /* lambda param in border */
|
||||
{"use_x", BMO_OP_SLOT_BOOL}, /* Smooth object along X axis */
|
||||
{"use_y", BMO_OP_SLOT_BOOL}, /* Smooth object along Y axis */
|
||||
|
||||
@@ -538,7 +538,7 @@ void bmo_smooth_laplacian_vert_exec(BMesh *bm, BMOperator *op)
|
||||
int i;
|
||||
int m_vertex_id;
|
||||
int usex, usey, usez, preserve_volume;
|
||||
float lambda, lambda_border;
|
||||
float lambda_factor, lambda_border;
|
||||
float w;
|
||||
BMOIter siter;
|
||||
BMVert *v;
|
||||
@@ -553,7 +553,7 @@ void bmo_smooth_laplacian_vert_exec(BMesh *bm, BMOperator *op)
|
||||
memset_laplacian_system(sys, 0);
|
||||
|
||||
BM_mesh_elem_index_ensure(bm, BM_VERT);
|
||||
lambda = BMO_slot_float_get(op->slots_in, "lambda");
|
||||
lambda_factor = BMO_slot_float_get(op->slots_in, "lambda_factor");
|
||||
lambda_border = BMO_slot_float_get(op->slots_in, "lambda_border");
|
||||
sys->min_area = 0.00001f;
|
||||
usex = BMO_slot_bool_get(op->slots_in, "use_x");
|
||||
@@ -592,12 +592,12 @@ void bmo_smooth_laplacian_vert_exec(BMesh *bm, BMOperator *op)
|
||||
i = m_vertex_id;
|
||||
if (sys->zerola[i] == 0) {
|
||||
w = sys->vweights[i] * sys->ring_areas[i];
|
||||
sys->vweights[i] = (w == 0.0f) ? 0.0f : -lambda / (4.0f * w);
|
||||
sys->vweights[i] = (w == 0.0f) ? 0.0f : -lambda_factor / (4.0f * w);
|
||||
w = sys->vlengths[i];
|
||||
sys->vlengths[i] = (w == 0.0f) ? 0.0f : -lambda_border * 2.0f / w;
|
||||
|
||||
if (!vert_is_boundary(v)) {
|
||||
nlMatrixAdd(i, i, 1.0f + lambda / (4.0f * sys->ring_areas[i]));
|
||||
nlMatrixAdd(i, i, 1.0f + lambda_factor / (4.0f * sys->ring_areas[i]));
|
||||
}
|
||||
else {
|
||||
nlMatrixAdd(i, i, 1.0f + lambda_border * 2.0f);
|
||||
|
||||
@@ -1674,7 +1674,7 @@ static int edbm_do_smooth_laplacian_vertex_exec(bContext *C, wmOperator *op)
|
||||
BMEditMesh *em = BMEdit_FromObject(obedit);
|
||||
int usex = TRUE, usey = TRUE, usez = TRUE, preserve_volume = TRUE;
|
||||
int i, repeat;
|
||||
float lambda;
|
||||
float lambda_factor;
|
||||
float lambda_border;
|
||||
BMIter fiter;
|
||||
BMFace *f;
|
||||
@@ -1695,7 +1695,7 @@ static int edbm_do_smooth_laplacian_vertex_exec(bContext *C, wmOperator *op)
|
||||
}
|
||||
|
||||
repeat = RNA_int_get(op->ptr, "repeat");
|
||||
lambda = RNA_float_get(op->ptr, "lambda");
|
||||
lambda_factor = RNA_float_get(op->ptr, "lambda_factor");
|
||||
lambda_border = RNA_float_get(op->ptr, "lambda_border");
|
||||
usex = RNA_boolean_get(op->ptr, "use_x");
|
||||
usey = RNA_boolean_get(op->ptr, "use_y");
|
||||
@@ -1706,8 +1706,8 @@ static int edbm_do_smooth_laplacian_vertex_exec(bContext *C, wmOperator *op)
|
||||
|
||||
for (i = 0; i < repeat; i++) {
|
||||
if (!EDBM_op_callf(em, op,
|
||||
"smooth_laplacian_vert verts=%hv lambda=%f lambda_border=%f use_x=%b use_y=%b use_z=%b preserve_volume=%b",
|
||||
BM_ELEM_SELECT, lambda, lambda_border, usex, usey, usez, preserve_volume))
|
||||
"smooth_laplacian_vert verts=%hv lambda_factor=%f lambda_border=%f use_x=%b use_y=%b use_z=%b preserve_volume=%b",
|
||||
BM_ELEM_SELECT, lambda_factor, lambda_border, usex, usey, usez, preserve_volume))
|
||||
{
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
@@ -1740,7 +1740,7 @@ void MESH_OT_vertices_smooth_laplacian(wmOperatorType *ot)
|
||||
|
||||
RNA_def_int(ot->srna, "repeat", 1, 1, 200,
|
||||
"Number of iterations to smooth the mesh", "", 1, 200);
|
||||
RNA_def_float(ot->srna, "lambda", 0.00005f, 0.0000001f, 1000.0f,
|
||||
RNA_def_float(ot->srna, "lambda_factor", 0.00005f, 0.0000001f, 1000.0f,
|
||||
"Lambda factor", "", 0.0000001f, 1000.0f);
|
||||
RNA_def_float(ot->srna, "lambda_border", 0.00005f, 0.0000001f, 1000.0f,
|
||||
"Lambda factor in border", "", 0.0000001f, 1000.0f);
|
||||
|
||||
@@ -4238,7 +4238,9 @@ char *RNA_path_full_property_py(PointerRNA *ptr, PropertyRNA *prop, int index)
|
||||
id_path, data_path, index);
|
||||
}
|
||||
MEM_freeN(id_path);
|
||||
MEM_freeN(data_path);
|
||||
if (data_path) {
|
||||
MEM_freeN(data_path);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -4268,7 +4270,9 @@ char *RNA_path_struct_property_py(PointerRNA *ptr, PropertyRNA *prop, int index)
|
||||
data_path, index);
|
||||
}
|
||||
|
||||
MEM_freeN(data_path);
|
||||
if (data_path) {
|
||||
MEM_freeN(data_path);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user