Commit: 76a93336c6cf0c9a28a2a84fbff71261b02dd58b
Author: Bastien Montagne
Date:   Mon Feb 2 19:33:46 2015 +0100
Branches: temp_custom_loop_normals
https://developer.blender.org/rB76a93336c6cf0c9a28a2a84fbff71261b02dd58b

Review updates: Replace 'bbox center' option by an offset one.

===================================================================

M       release/scripts/startup/bl_ui/properties_data_modifier.py
M       source/blender/makesdna/DNA_modifier_types.h
M       source/blender/makesrna/intern/rna_modifier.c
M       source/blender/modifiers/intern/MOD_normal_edit.c

===================================================================

diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py 
b/release/scripts/startup/bl_ui/properties_data_modifier.py
index d53bd04..91c0abe 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -1342,8 +1342,8 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
 
     def NORMAL_EDIT(self, layout, ob, md):
         has_vgroup = bool(md.vertex_group)
-        needs_object_bbox_center = (((md.mode == 'RADIAL') and not md.target) 
or
-                                    ((md.mode == 'DIRECTIONAL') and 
md.use_directional_parallel))
+        needs_object_offset = (((md.mode == 'RADIAL') and not md.target) or
+                               ((md.mode == 'DIRECTIONAL') and 
md.use_directional_parallel))
 
         row = layout.row()
         row.prop(md, "mode", expand=True)
@@ -1352,26 +1352,22 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
 
         col = split.column()
         col.prop(md, "target", text="")
-        sub = col.row()
-        sub.active = needs_object_bbox_center
-        sub.prop(md, "use_center_bounds")
-
-        col = split.column()
+        sub = col.column(align=True)
+        sub.active = needs_object_offset
+        sub.prop(md, "offset")
         row = col.row(align=True)
         row.active = (md.mode == 'DIRECTIONAL')
         row.prop(md, "use_directional_parallel")
-        col.prop(md, "use_current_normals")
-
-        split = layout.split()
-        split.active = md.use_current_normals
 
-        col = split.column(align=True)
-        col.label("Mix Mode:")
-        col.prop(md, "mix_mode", text="")
+        col = split.column()
+        col.prop(md, "use_current_normals")
 
-        col = split.column(align=True)
-        col.prop(md, "mix_factor")
-        row = col.row(align=True)
+        subcol = col.column(align=True)
+        subcol.active = md.use_current_normals
+        subcol.label("Mix Mode:")
+        subcol.prop(md, "mix_mode", text="")
+        subcol.prop(md, "mix_factor")
+        row = subcol.row(align=True)
         row.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
         sub = row.row(align=True)
         sub.active = has_vgroup
diff --git a/source/blender/makesdna/DNA_modifier_types.h 
b/source/blender/makesdna/DNA_modifier_types.h
index 86b202e..32a02b5 100644
--- a/source/blender/makesdna/DNA_modifier_types.h
+++ b/source/blender/makesdna/DNA_modifier_types.h
@@ -1430,7 +1430,7 @@ typedef struct NormalEditModifierData {
        short mix_mode;
        short pad_s1;
        float mix_factor;
-       float pad_f1;
+       float offset[3];
 } NormalEditModifierData;
 
 /* NormalEditModifierData.mode */
@@ -1442,9 +1442,8 @@ enum {
 /* NormalEditModifierData.flags */
 enum {
        MOD_NORMALEDIT_INVERT_VGROUP            = (1 << 0),
-       MOD_NORMALEDIT_CENTER_BBOX              = (1 << 1),
-       MOD_NORMALEDIT_USE_CURCLNORS            = (1 << 2),
-       MOD_NORMALEDIT_USE_PARALLEL_DIRECTIONAL = (1 << 3),
+       MOD_NORMALEDIT_USE_CURCLNORS            = (1 << 1),
+       MOD_NORMALEDIT_USE_PARALLEL_DIRECTIONAL = (1 << 2),
 };
 
 /* NormalEditModifierData.mix_mode */
diff --git a/source/blender/makesrna/intern/rna_modifier.c 
b/source/blender/makesrna/intern/rna_modifier.c
index 544043d..55b88dd 100644
--- a/source/blender/makesrna/intern/rna_modifier.c
+++ b/source/blender/makesrna/intern/rna_modifier.c
@@ -4381,6 +4381,11 @@ static void rna_def_modifier_normaledit(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Use Current Normals", "Use current 
split normals to mix generated ones in");
        RNA_def_property_update(prop, 0, "rna_Modifier_update");
 
+       prop = RNA_def_float_array(srna, "offset", 3, NULL, -FLT_MAX, FLT_MAX, 
"Offset",
+                                  "Offset from object's center", -100.0f, 
100.0f);
+       RNA_def_property_subtype(prop, PROP_COORDS);
+       RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
        prop = RNA_def_property(srna, "mix_mode", PROP_ENUM, PROP_NONE);
        RNA_def_property_enum_items(prop, prop_mix_mode_items);
        RNA_def_property_ui_text(prop, "Mix Mode", "How to mix new generated 
normals with existing ones");
@@ -4407,12 +4412,6 @@ static void rna_def_modifier_normaledit(BlenderRNA *brna)
        RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
        RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update");
 
-       prop = RNA_def_property(srna, "use_bbox_center", PROP_BOOLEAN, 
PROP_NONE);
-       RNA_def_property_boolean_sdna(prop, NULL, "flags", 
MOD_NORMALEDIT_CENTER_BBOX);
-       RNA_def_property_ui_text(prop, "BoundingBox Center",
-                                "Use bounding box center instead of own object 
center as origin");
-       RNA_def_property_update(prop, 0, "rna_Modifier_update");
-
        prop = RNA_def_property(srna, "use_directional_parallel", PROP_BOOLEAN, 
PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flags", 
MOD_NORMALEDIT_USE_PARALLEL_DIRECTIONAL);
        RNA_def_property_boolean_default(prop, true);
diff --git a/source/blender/modifiers/intern/MOD_normal_edit.c 
b/source/blender/modifiers/intern/MOD_normal_edit.c
index 78638f0..1303a84 100644
--- a/source/blender/modifiers/intern/MOD_normal_edit.c
+++ b/source/blender/modifiers/intern/MOD_normal_edit.c
@@ -52,7 +52,7 @@
 #include "MOD_util.h"
 
 
-static void generate_vert_coordinates(DerivedMesh *dm, Object *ob, Object 
*ob_center, const bool use_bbox_center,
+static void generate_vert_coordinates(DerivedMesh *dm, Object *ob, Object 
*ob_center, const float offset[3],
                                       const int num_verts, float (*r_cos)[3], 
float r_size[3])
 {
        float min_co[3], max_co[3];
@@ -102,12 +102,8 @@ static void generate_vert_coordinates(DerivedMesh *dm, 
Object *ob, Object *ob_ce
 
                do_diff = true;
        }
-       else if (use_bbox_center) {
-               /* Translate our coordinates so that center of bounding box is 
at (0, 0, 0). */
-
-               /* Compute bbox center in local coordinates. */
-               add_v3_v3v3(diff, min_co, max_co);
-               mul_v3_fl(diff, -0.5f);
+       else if (!is_zero_v3(offset)) {
+               negate_v3_v3(diff, offset);
 
                do_diff = true;
        }
@@ -171,7 +167,6 @@ static void normalEditModifier_do_radial(
         MVert *mvert, const int num_verts, MEdge *medge, const int num_edges,
         MLoop *mloop, const int num_loops, MPoly *mpoly, const int num_polys)
 {
-       const bool use_bbox_center = ((smd->flags & MOD_NORMALEDIT_CENTER_BBOX) 
!= 0) && (smd->target == NULL);
        int i;
 
        float (*cos)[3] = MEM_mallocN(sizeof(*cos) * num_verts, __func__);
@@ -180,7 +175,7 @@ static void normalEditModifier_do_radial(
 
        BLI_bitmap *done_verts = BLI_BITMAP_NEW((size_t)num_verts, __func__);
 
-       generate_vert_coordinates(dm, ob, smd->target, use_bbox_center, 
num_verts, cos, size);
+       generate_vert_coordinates(dm, ob, smd->target, smd->offset, num_verts, 
cos, size);
 
        /* size gives us our spheroid coefficients (A, B, C).
         * Then, we want to find out for each vert its (a, b, c) triple 
(proportional to (A, B, C) one).
@@ -258,7 +253,6 @@ static void normalEditModifier_do_directional(
         MLoop *mloop, const int num_loops, MPoly *mpoly, const int num_polys)
 {
        const bool use_parallel_normals = (smd->flags & 
MOD_NORMALEDIT_USE_PARALLEL_DIRECTIONAL) != 0;
-       const bool use_bbox_center = (smd->flags & MOD_NORMALEDIT_CENTER_BBOX) 
!= 0;
 
        float (*cos)[3] = MEM_mallocN(sizeof(*cos) * num_verts, __func__);
        float (*nos)[3] = MEM_mallocN(sizeof(*nos) * num_loops, __func__);
@@ -280,18 +274,8 @@ static void normalEditModifier_do_directional(
        if (use_parallel_normals) {
                float no[3];
 
-               if (use_bbox_center) {
-                       float min_co[3], max_co[3];
-
-                       /* We use bbox center as ref, instead of object's 
center (i.e. (0, 0, 0) in local space). */
-                       minmax_v3v3_v3_array(min_co, max_co, cos, num_verts);
-                       madd_v3_v3v3fl(no, min_co, max_co, 0.5f);
-                       sub_v3_v3v3(no, target_co, no);
-                       normalize_v3(no);
-               }
-               else {
-                       normalize_v3_v3(no, target_co);
-               }
+               sub_v3_v3v3(no, target_co, smd->offset);
+               normalize_v3(no);
 
                for (i = num_loops; i--; ) {
                        copy_v3_v3(nos[i], no);

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

Reply via email to