Commit: e4f0cb5b55d60996258fb78507a0f9374a9f9d7b
Author: Bastien Montagne
Date:   Mon Nov 3 15:15:07 2014 +0100
Branches: temp_custom_loop_normals
https://developer.blender.org/rBe4f0cb5b55d60996258fb78507a0f9374a9f9d7b

Split clnor modifier in two (one for generate, one for copyfrom), and add 
'tracto' generate mode.

Note 'CopySplitNormalModifier' is doomed to be merged/replace by a generic 
'TransferData' one
once mesh transfer data work is finished.

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

M       release/scripts/startup/bl_ui/properties_data_modifier.py
M       source/blender/makesdna/DNA_modifier_types.h
M       source/blender/makesrna/RNA_access.h
M       source/blender/makesrna/intern/rna_modifier.c
M       source/blender/modifiers/CMakeLists.txt
M       source/blender/modifiers/MOD_modifiertypes.h
A       source/blender/modifiers/intern/MOD_copysplitnormal.c
M       source/blender/modifiers/intern/MOD_setsplitnormal.c
M       source/blender/modifiers/intern/MOD_util.c

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

diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py 
b/release/scripts/startup/bl_ui/properties_data_modifier.py
index ba6bb17..b6b428a 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -1227,7 +1227,8 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
 
     def SET_SPLIT_NORMAL(self, layout, ob, md):
         has_vgroup = bool(md.vertex_group)
-        needs_object_bbox_center = (md.mode == 'ELLIPSOID') and not md.target
+        needs_object_bbox_center = (((md.mode == 'ELLIPSOID') and not 
md.target) or
+                                    ((md.mode == 'TRACKTO') and 
md.use_trackto_parallel))
 
         row = layout.row()
         row.prop(md, "mode", expand=True)
@@ -1239,6 +1240,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
         sub = col.row()
         sub.active = needs_object_bbox_center
         sub.prop(md, "use_bbox_center")
+        col.prop(md, "use_current_custom_split_normals")
 
         col = split.column()
         row = col.row(align=True)
@@ -1246,8 +1248,29 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
         sub = row.row(align=True)
         sub.active = has_vgroup
         sub.prop(md, "use_invert_vertex_group", text="", 
icon='ARROW_LEFTRIGHT')
+        row = col.row(align=True)
+        row.active = (md.mode == 'TRACKTO')
+        row.prop(md, "use_trackto_parallel")
+
+    def COPY_SPLIT_NORMAL(self, layout, ob, md):
+        has_vgroup = bool(md.vertex_group)
+
+        row = layout.row()
+        row.prop(md, "mode", expand=True)
+
+        split = layout.split()
+
+        col = split.column()
+        col.prop(md, "target", text="")
         col.prop(md, "use_current_custom_split_normals")
 
+        col = split.column()
+        row = col.row(align=True)
+        row.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
+        sub = row.row(align=True)
+        sub.active = has_vgroup
+        sub.prop(md, "use_invert_vertex_group", text="", 
icon='ARROW_LEFTRIGHT')
+
 
 if __name__ == "__main__":  # only for live edit.
     bpy.utils.register_module(__name__)
diff --git a/source/blender/makesdna/DNA_modifier_types.h 
b/source/blender/makesdna/DNA_modifier_types.h
index cc9600f..6f06336 100644
--- a/source/blender/makesdna/DNA_modifier_types.h
+++ b/source/blender/makesdna/DNA_modifier_types.h
@@ -83,6 +83,7 @@ typedef enum ModifierType {
        eModifierType_LaplacianDeform   = 47,
        eModifierType_Wireframe         = 48,
        eModifierType_SetSplitNormal    = 49,
+       eModifierType_CopySplitNormal    = 50,
        NUM_MODIFIER_TYPES
 } ModifierType;
 
@@ -1380,15 +1381,37 @@ typedef struct SetSplitNormalModifierData {
 /* SetSplitNormalModifierData.mode */
 enum {
        MOD_SETSPLITNORMAL_MODE_ELLIPSOID    = 0,
-       MOD_SETSPLITNORMAL_MODE_GEOM_FACENOR = 1,
-       MOD_SETSPLITNORMAL_MODE_GEOM_LOOPNOR = 2,
+       MOD_SETSPLITNORMAL_MODE_TRACKTO      = 1,
 };
 
 /* SetSplitNormalModifierData.flags */
 enum {
-       MOD_SETSPLITNORMAL_INVERT_VGROUP = (1 << 0),
-       MOD_SETSPLITNORMAL_CENTER_BBOX   = (1 << 1),
-       MOD_SETSPLITNORMAL_USE_CURCLNORS = (1 << 2),
+       MOD_SETSPLITNORMAL_INVERT_VGROUP        = (1 << 0),
+       MOD_SETSPLITNORMAL_CENTER_BBOX          = (1 << 1),
+       MOD_SETSPLITNORMAL_USE_CURCLNORS        = (1 << 2),
+       MOD_SETSPLITNORMAL_USE_PARALLEL_TRACKTO = (1 << 3),
+};
+
+/* Copy Split Normals modifier */
+typedef struct CopySplitNormalModifierData {
+       ModifierData modifier;
+       char defgrp_name[64];  /* MAX_VGROUP_NAME */
+       struct Object *target;  /* Source of normals, or center of ellipsoid. */
+       short flags;
+       short mode;
+       short pad[2];
+} CopySplitNormalModifierData;
+
+/* CopySplitNormalModifierData.mode */
+enum {
+       MOD_COPYSPLITNORMAL_MODE_GEOM_FACENOR = 1,
+       MOD_COPYSPLITNORMAL_MODE_GEOM_LOOPNOR = 2,
+};
+
+/* CopySplitNormalModifierData.flags */
+enum {
+       MOD_COPYSPLITNORMAL_INVERT_VGROUP = (1 << 0),
+       MOD_COPYSPLITNORMAL_USE_CURCLNORS = (1 << 1),
 };
 
 
diff --git a/source/blender/makesrna/RNA_access.h 
b/source/blender/makesrna/RNA_access.h
index b33db10..a3fbf2d 100644
--- a/source/blender/makesrna/RNA_access.h
+++ b/source/blender/makesrna/RNA_access.h
@@ -191,6 +191,7 @@ extern StructRNA RNA_Controller;
 extern StructRNA RNA_CopyLocationConstraint;
 extern StructRNA RNA_CopyRotationConstraint;
 extern StructRNA RNA_CopyScaleConstraint;
+extern StructRNA RNA_CopySplitNormalModifier;
 extern StructRNA RNA_CopyTransformsConstraint;
 extern StructRNA RNA_Curve;
 extern StructRNA RNA_CurveMap;
diff --git a/source/blender/makesrna/intern/rna_modifier.c 
b/source/blender/makesrna/intern/rna_modifier.c
index 81804ad..3eda9cb 100644
--- a/source/blender/makesrna/intern/rna_modifier.c
+++ b/source/blender/makesrna/intern/rna_modifier.c
@@ -65,6 +65,7 @@ EnumPropertyItem modifier_type_items[] = {
        {eModifierType_WeightVGProximity, "VERTEX_WEIGHT_PROXIMITY", 
ICON_MOD_VERTEX_WEIGHT,
                                          "Vertex Weight Proximity", ""},
        {eModifierType_SetSplitNormal, "SET_SPLIT_NORMAL", 
ICON_MOD_SETSPLITNORMAL, "Set Split Normals", ""},
+       {eModifierType_CopySplitNormal, "COPY_SPLIT_NORMAL", 
ICON_MOD_SETSPLITNORMAL, "Copy Split Normals", ""},
        {0, "", 0, N_("Generate"), ""},
        {eModifierType_Array, "ARRAY", ICON_MOD_ARRAY, "Array", ""},
        {eModifierType_Bevel, "BEVEL", ICON_MOD_BEVEL, "Bevel", ""},
@@ -247,6 +248,8 @@ static StructRNA *rna_Modifier_refine(struct PointerRNA 
*ptr)
                        return &RNA_WireframeModifier;
                case eModifierType_SetSplitNormal:
                        return &RNA_SetSplitNormalModifier;
+               case eModifierType_CopySplitNormal:
+                       return &RNA_CopySplitNormalModifier;
                /* Default */
                case eModifierType_None:
                case eModifierType_ShapeKey:
@@ -311,6 +314,7 @@ static void rna_##_type##Modifier_##_prop##_set(PointerRNA 
*ptr, const char *val
 RNA_MOD_VGROUP_NAME_SET(Armature, defgrp_name);
 RNA_MOD_VGROUP_NAME_SET(Bevel, defgrp_name);
 RNA_MOD_VGROUP_NAME_SET(Cast, defgrp_name);
+RNA_MOD_VGROUP_NAME_SET(CopySplitNormal, defgrp_name);
 RNA_MOD_VGROUP_NAME_SET(Curve, name);
 RNA_MOD_VGROUP_NAME_SET(Decimate, defgrp_name);
 RNA_MOD_VGROUP_NAME_SET(Displace, defgrp_name);
@@ -402,6 +406,7 @@ RNA_MOD_OBJECT_SET(Array, end_cap, OB_MESH);
 RNA_MOD_OBJECT_SET(Array, curve_ob, OB_CURVE);
 RNA_MOD_OBJECT_SET(Boolean, object, OB_MESH);
 RNA_MOD_OBJECT_SET(Cast, object, OB_EMPTY);
+RNA_MOD_OBJECT_SET(CopySplitNormal, target, OB_MESH);
 RNA_MOD_OBJECT_SET(Curve, object, OB_CURVE);
 RNA_MOD_OBJECT_SET(Lattice, object, OB_LATTICE);
 RNA_MOD_OBJECT_SET(Mask, ob_arm, OB_ARMATURE);
@@ -3677,8 +3682,8 @@ static void rna_def_modifier_setsplitnormal(BlenderRNA 
*brna)
        static EnumPropertyItem prop_mode_items[] = {
                {MOD_SETSPLITNORMAL_MODE_ELLIPSOID, "ELLIPSOID", 0, "Ellipsoid",
                        "From an ellipsoid (shape defined by the boundbox's 
dimensions, target is optional)"},
-               {MOD_SETSPLITNORMAL_MODE_GEOM_FACENOR, "FACE_NORMALS", 0, "Face 
Normals", "From a mesh's face normals"},
-               {MOD_SETSPLITNORMAL_MODE_GEOM_LOOPNOR, "SPLIT_NORMALS", 0, 
"Split Normals", "From a mesh's split normals"},
+               {MOD_SETSPLITNORMAL_MODE_TRACKTO, "TRACKTO", 0, "Track Object",
+                       "Normals 'track' (point to) the target object"},
                {0, NULL, 0, NULL, NULL}
        };
 
@@ -3704,7 +3709,7 @@ static void rna_def_modifier_setsplitnormal(BlenderRNA 
*brna)
        RNA_def_property_update(prop, 0, "rna_Modifier_update");
 
        prop = RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
-       RNA_def_property_ui_text(prop, "Target", "Target object used to affect 
normal");
+       RNA_def_property_ui_text(prop, "Target", "Target object used to affect 
normals");
        RNA_def_property_pointer_funcs(prop, NULL, 
"rna_SetSplitNormalModifier_target_set", NULL, NULL);
        RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
        RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update");
@@ -3712,16 +3717,68 @@ static void rna_def_modifier_setsplitnormal(BlenderRNA 
*brna)
        prop = RNA_def_property(srna, "use_bbox_center", PROP_BOOLEAN, 
PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flags", 
MOD_SETSPLITNORMAL_CENTER_BBOX);
        RNA_def_property_ui_text(prop, "BoundingBox Center",
-                                "Center ellipsoid on bounding box center 
instead of own object center "
-                                "(Ellipsoid mode only)");
+                                "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_trackto_parallel", PROP_BOOLEAN, 
PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "flags", 
MOD_SETSPLITNORMAL_USE_PARALLEL_TRACKTO);
+       RNA_def_property_boolean_default(prop, true);
+       RNA_def_property_ui_text(prop, "Parallel Normals",
+                                "Use same direction for all normals, from 
origin to target's center "
+                                "(Track Object mode only)");
        RNA_def_property_update(prop, 0, "rna_Modifier_update");
 
        prop = RNA_def_property(srna, "use_current_custom_split_normals", 
PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flags", 
MOD_SETSPLITNORMAL_USE_CURCLNORS);
        RNA_def_property_boolean_default(prop, true);
        RNA_def_property_ui_text(prop, "Use Custom Split Normals",
-                                "Use current custom split normals as basis, 
instead of auto-computed ones, if available "
-                                "(Split Normals mode only)");
+                                "Use current custom split normals as basis, 
instead of auto-computed ones, if available");
+       RNA_def_property_update(prop, 0, "rna_Modifier_update");
+}
+
+static void rna_def_modifier_copysplitnormal(BlenderRNA *brna)
+{
+       StructRNA *srna;
+       PropertyRNA *prop;
+
+       static EnumPropertyItem prop_mode_items[] = {
+               {MOD_COPYSPLITNORMAL_MODE_GEOM_FACENOR, "FACE_NORMALS", 0, 
"Face Normals", "From a mesh's face normals"},
+               {MOD_COPYSPLITNORMAL_MODE_GEOM_LOOPNOR, "SPLIT_NORMALS", 0, 
"Split Normals", "From a mesh's split normals"},
+               {0, NULL, 0, NULL, NULL}
+       };
+
+       srna = RNA_def_struct(brna, "CopySplitNormalModifier", "Modifier");
+       RNA_def_struct_ui_text(srna, "Set Split Normal Modifier", "Modifier 
copying split normals from a target geometry");
+       RNA_def_struct_sdna(srna, "CopySplitNormalModifierDa

@@ Diff output truncated at 10240 characters. @@

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

Reply via email to