[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [3980] contrib/py/scripts/addons/ presets/keyconfig/blender_2012_experimental.py: Work on transform keys, edit mode, and viewport drawing.

Bassam Kurdali bassam at urchn.org
Mon Nov 19 13:48:15 CET 2012


Hi Nathan. 
I really like tweak-drag to transform, and will not be using an
interaction mode that does not include it (or even an enhanced version
(curve drag to rotate for instance))
Even though you have mapped click-drag to box select, I feel you might
possibly be able to enable both, depending if there's something
selectable or not... 
But:
this *will* confuse new users, as they will not know quickly that they
will select or translate.

One thing that occurs to me is that maya interaction is backwords from
our conceptually, in that you enter into a 'mode' (translate for
instance), then select around do it to different things. so it makes
sense for them- doing things is clunky, but selecting is easy.

In our case, you don't do that, instead you always can select, then
execute a tool. In blender context, I feel that hotkeying box select is
a really, really, good interaction that does not block how blender
works, switching it just muddies blender into a not-as-good version of
other applications with different interaction models.

anyway, just my 2c
On Sun, 2012-11-18 at 20:29 +0000, Nathan Vegdahl wrote:
> Revision: 3980
>           http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=3980
> Author:   cessen
> Date:     2012-11-18 20:29:42 +0000 (Sun, 18 Nov 2012)
> Log Message:
> -----------
> Work on transform keys, edit mode, and viewport drawing.
> 
> - Changed the transform keys to the home row:
>     f = translate
>     d = rotate
>     s = scale
> - Viewport draw mode switching now works slightly differently.  Pressing
>   z will toggle between solid and wireframe as usual, but alt-z now brings
>   up a menu with all the draw modes.
> - Spruced up edit mode.  Should be mostly usable for modeling work now.
>   I encourage modelers to start giving it a try.  Below is an overview.
> 
> Sub-mode switching:
>   1: vertex mode
>   2: edge mode
>   3: face mode
> 
> Selection:
>   LMB-click: basic select
>   LMB-drag: box select
>   alt-LMB-drag: lasso select
>   LMB-double-click: edge loop select
>   alt-LMB-double-click: edge ring select
>   alt-LMB: shortest path select
>   (For all of the above, adding shift is "add to selection" and
>   adding ctrl is "remove from selection".)
> 
> Major tool menus:
>   shift-a: add primitive menu
>   q: specials menu
>   alt-1: vertex menu
>   alt-2: edge menu
>   alt-3: face menu
> 
> Tool shortcuts:
>   x: delete (context sensitive, no menu)
>   shift-x: dissolve
>   alt-x: delete/dissolve menu
> 
>   shift-d: duplicate
> 
>   c: create edge/face
>   shift-c: connect verts
> 
>   b: bevel
> 
>   m: collapse
>   alt-m: merge menu
> 
>   k: knife
> 
>   w: subdivide
>   shift-w: smooth
>   
>   e: extrude
>   alt-e: extrude menu
>   ctrl-RMB: click to extrude
>   ctrl-shift-RMB: click to extrude (no auto-rotate)
>   
>   r: rip
>   
>   t: loop cut
> 
>   y: split
>   shift-y: separate
>   
>   i: inset
>   shift-i: outset
> 
>   
> Misc:    
>   -/=: decrease/increase the subdiv level of the mesh
> 
> Modified Paths:
> --------------
>     contrib/py/scripts/addons/presets/keyconfig/blender_2012_experimental.py
> 
> Modified: contrib/py/scripts/addons/presets/keyconfig/blender_2012_experimental.py
> ===================================================================
> --- contrib/py/scripts/addons/presets/keyconfig/blender_2012_experimental.py	2012-11-18 17:16:29 UTC (rev 3979)
> +++ contrib/py/scripts/addons/presets/keyconfig/blender_2012_experimental.py	2012-11-18 20:29:42 UTC (rev 3980)
> @@ -14,12 +14,12 @@
>  bpy.context.user_preferences.inputs.select_mouse = 'LEFT'
>  
>  # Basic transform keys
> -TRANSLATE_KEY = 'R'
> -ROTATE_KEY = 'E'
> -SCALE_KEY = 'W'
> +TRANSLATE_KEY = 'F'
> +ROTATE_KEY = 'D'
> +SCALE_KEY = 'S'
>  
>  # Specials Menu Key
> -SPECIALS_MENU_KEY = 'ACCENT_GRAVE'
> +SPECIALS_MENU_KEY = 'Q'
>  
> 
>  ################################
> @@ -69,6 +69,7 @@
>          layout.operator_enum("object.mode_set", "mode")
>  bpy.utils.register_class(ModeSwitchMenu)
>  
> +
>  # Temporary work around: Blender does not properly limit the mode switch menu
>  # items until the first mode switch (e.g. mesh objects will show pose mode as
>  # an option).
> @@ -168,6 +169,34 @@
>  bpy.utils.register_class(SetEditMeshSelectMode)
>  
> 
> +class MeshDeleteContextual(bpy.types.Operator):
> +    """ Deletes mesh elements based on context instead
> +        of forcing the user to select from a menu what
> +        it should delete.
> +    """
> +    bl_idname = "mesh.delete_contextual"
> +    bl_label = "Mesh Delete Contextual"
> +    bl_options = {'UNDO'}
> +    
> +    @classmethod
> +    def poll(cls, context):
> +        return (context.active_object is not None) and (context.mode == "EDIT_MESH")
> +    
> +    def execute(self, context):
> +        select_mode = context.tool_settings.mesh_select_mode
> +        
> +        if select_mode[0]:
> +            bpy.ops.mesh.delete(type='VERT')
> +        elif select_mode[1] and not select_mode[2]:
> +            bpy.ops.mesh.delete(type='EDGE')
> +        elif select_mode[2] and not select_mode[1]:
> +            bpy.ops.mesh.delete(type='FACE')
> +        else:
> +            bpy.ops.mesh.delete(type='VERT')
> +            
> +        return {'FINISHED'}
> +bpy.utils.register_class(MeshDeleteContextual)
> +
>  ###########
>  # Keymaps
>  ###########
> @@ -674,7 +703,7 @@
>      kmi.properties.align_active = True
>  
>      # Fly mode
> -    kmi = km.keymap_items.new('view3d.fly', 'F', 'CLICK', shift=True)
> +    #kmi = km.keymap_items.new('view3d.fly', 'F', 'CLICK', shift=True)
>  
>      # Misc
>      kmi = km.keymap_items.new('view3d.view_selected', 'NUMPAD_PERIOD', 'CLICK')
> @@ -777,16 +806,16 @@
>      #-----------------------
>      
>      # Grab, rotate scale
> -    kmi = km.keymap_items.new('transform.translate', TRANSLATE_KEY, 'CLICK')
> +    kmi = km.keymap_items.new('transform.translate', TRANSLATE_KEY, 'PRESS')
>      #kmi = km.keymap_items.new('transform.translate', 'EVT_TWEAK_S', 'ANY')
> -    kmi = km.keymap_items.new('transform.rotate', ROTATE_KEY, 'CLICK')
> -    kmi = km.keymap_items.new('transform.resize', SCALE_KEY, 'CLICK')
> +    kmi = km.keymap_items.new('transform.rotate', ROTATE_KEY, 'PRESS')
> +    kmi = km.keymap_items.new('transform.resize', SCALE_KEY, 'PRESS')
>  
>      # Mirror, shear, warp, to-sphere
> -    kmi = km.keymap_items.new('transform.mirror', 'M', 'CLICK', ctrl=True)
> -    kmi = km.keymap_items.new('transform.shear', 'S', 'CLICK', shift=True, ctrl=True, alt=True)
> -    kmi = km.keymap_items.new('transform.warp', 'W', 'CLICK', shift=True)
> -    kmi = km.keymap_items.new('transform.tosphere', 'S', 'CLICK', shift=True, alt=True)
> +    #kmi = km.keymap_items.new('transform.mirror', 'M', 'CLICK', ctrl=True)
> +    #kmi = km.keymap_items.new('transform.shear', 'S', 'CLICK', shift=True, ctrl=True, alt=True)
> +    #kmi = km.keymap_items.new('transform.warp', 'W', 'CLICK', shift=True)
> +    #kmi = km.keymap_items.new('transform.tosphere', 'S', 'CLICK', shift=True, alt=True)
>  
>      #-------------------------
>      # Transform texture space
> @@ -829,6 +858,7 @@
>      #--------
>      # Layers
>      #--------
> +    """
>      kmi = km.keymap_items.new('view3d.layers', 'ACCENT_GRAVE', 'CLICK')
>      kmi.properties.nr = 0
>      kmi = km.keymap_items.new('view3d.layers', 'ONE', 'CLICK', any=True)
> @@ -851,19 +881,19 @@
>      kmi.properties.nr = 9
>      kmi = km.keymap_items.new('view3d.layers', 'ZERO', 'CLICK', any=True)
>      kmi.properties.nr = 10
> +    """
>  
>      #------------------
>      # Viewport drawing
>      #------------------
> -    kmi = km.keymap_items.new('wm.context_toggle_enum', 'Z', 'CLICK')
> +    kmi = km.keymap_items.new('wm.context_toggle_enum', 'Z', 'PRESS')
>      kmi.properties.data_path = 'space_data.viewport_shade'
>      kmi.properties.value_1 = 'SOLID'
>      kmi.properties.value_2 = 'WIREFRAME'
> -    kmi = km.keymap_items.new('wm.context_toggle_enum', 'Z', 'CLICK', alt=True)
> +    
> +    kmi = km.keymap_items.new('wm.context_menu_enum', 'Z', 'PRESS', alt=True)
>      kmi.properties.data_path = 'space_data.viewport_shade'
> -    kmi.properties.value_1 = 'TEXTURED'
> -    kmi.properties.value_2 = 'SOLID'
> -
> +    
>      #-------------
>      # Pivot point
>      #-------------
> @@ -1014,18 +1044,18 @@
>      kmi.properties.name = 'VIEW3D_MT_object_specials'
>      
>      # Subdivision surface shortcuts
> -    kmi = km.keymap_items.new('object.subdivision_set', 'ZERO', 'PRESS', ctrl=True)
> -    kmi.properties.level = 0
> -    kmi = km.keymap_items.new('object.subdivision_set', 'ONE', 'PRESS', ctrl=True)
> -    kmi.properties.level = 1
> -    kmi = km.keymap_items.new('object.subdivision_set', 'TWO', 'PRESS', ctrl=True)
> -    kmi.properties.level = 2
> -    kmi = km.keymap_items.new('object.subdivision_set', 'THREE', 'PRESS', ctrl=True)
> -    kmi.properties.level = 3
> -    kmi = km.keymap_items.new('object.subdivision_set', 'FOUR', 'PRESS', ctrl=True)
> -    kmi.properties.level = 4
> -    kmi = km.keymap_items.new('object.subdivision_set', 'FIVE', 'PRESS', ctrl=True)
> -    kmi.properties.level = 5
> +    #kmi = km.keymap_items.new('object.subdivision_set', 'ZERO', 'PRESS', ctrl=True)
> +    #kmi.properties.level = 0
> +    #kmi = km.keymap_items.new('object.subdivision_set', 'ONE', 'PRESS', ctrl=True)
> +    #kmi.properties.level = 1
> +    #kmi = km.keymap_items.new('object.subdivision_set', 'TWO', 'PRESS', ctrl=True)
> +    #kmi.properties.level = 2
> +    #kmi = km.keymap_items.new('object.subdivision_set', 'THREE', 'PRESS', ctrl=True)
> +    #kmi.properties.level = 3
> +    #kmi = km.keymap_items.new('object.subdivision_set', 'FOUR', 'PRESS', ctrl=True)
> +    #kmi.properties.level = 4
> +    #kmi = km.keymap_items.new('object.subdivision_set', 'FIVE', 'PRESS', ctrl=True)
> +    #kmi.properties.level = 5
>  
> 
>  def MapAdd_View3D_MeshEditMode(kc):
> @@ -1061,7 +1091,7 @@
>      #-----------
>      
>      # Shortest path
> -    #kmi = km.keymap_items.new('mesh.select_shortest_path', 'RIGHTMOUSE', 'CLICK')
> +    kmi = km.keymap_items.new('mesh.select_shortest_path', 'LEFTMOUSE', 'CLICK', alt=True)
>      
>      # Edge loop
>      kmi = km.keymap_items.new('mesh.loop_select', 'LEFTMOUSE', 'DOUBLE_CLICK') # Replace
> @@ -1076,10 +1106,8 @@
>      kmi = km.keymap_items.new('mesh.edgering_select', 'LEFTMOUSE', 'DOUBLE_CLICK', alt=True, shift=True) # Extend (TODO: Add)
>      kmi.properties.extend = True
>      # TODO: Remove
> -        
>      
> -    
> -    kmi = km.keymap_items.new('mesh.select_all', 'A', 'CLICK')
> +    kmi = km.keymap_items.new('mesh.select_all', 'A', 'PRESS')
>      kmi.properties.action = 'TOGGLE'
>      kmi = km.keymap_items.new('mesh.select_all', 'I', 'CLICK', ctrl=True)
>      kmi.properties.action = 'INVERT'
> @@ -1113,56 +1141,114 @@
>      kmi.properties.unselected = True
>      kmi = km.keymap_items.new('mesh.reveal', 'H', 'CLICK', alt=True)
>  
> -    # Create
> -    kmi = km.keymap_items.new('mesh.loopcut_slide', 'R', 'CLICK', ctrl=True)
> -    kmi = km.keymap_items.new('mesh.knifetool', 'K', 'CLICK')
> -    #kmi = km.keymap_items.new('view3d.edit_mesh_extrude_move_normal', 'E', 'CLICK')
> -    #kmi = km.keymap_items.new('wm.call_menu', 'E', 'CLICK', alt=True)
> -    #kmi.properties.name = 'VIEW3D_MT_edit_mesh_extrude'
> -    kmi = km.keymap_items.new('mesh.edge_face_add', 'F', 'CLICK')
> -    kmi = km.keymap_items.new('mesh.vert_connect', 'J', 'CLICK')
> -    kmi = km.keymap_items.new('mesh.spin', 'R', 'CLICK', alt=True)
> -    kmi = km.keymap_items.new('mesh.fill', 'F', 'CLICK', alt=True)
> -    kmi = km.keymap_items.new('mesh.beautify_fill', 'F', 'CLICK', shift=True, alt=True)
> -    kmi = km.keymap_items.new('mesh.duplicate_move', 'D', 'CLICK', shift=True)
> -    kmi = km.keymap_items.new('wm.call_menu', 'A', 'CLICK', shift=True)
> +    #-----------------
> +    # Create Geometry
> +    #-----------------
> +    
> +    # Add Primitive
> +    kmi = km.keymap_items.new('wm.call_menu', 'A', 'PRESS', shift=True)
>      kmi.properties.name = 'INFO_MT_mesh_add'
> +    
> +    # Add edge and face / vertex connect
> +    kmi = km.keymap_items.new('mesh.edge_face_add', 'C', 'CLICK')
> +    kmi = kmi = km.keymap_items.new('mesh.vert_connect', 'C', 'CLICK', shift=True)
> +    
> +    kmi = km.keymap_items.new('mesh.fill', 'C', 'CLICK', alt=True)
> +    kmi = km.keymap_items.new('mesh.beautify_fill', 'C', 'CLICK', alt=True, shift=True)
> +    
> +    # Subdivide
> +    kmi = km.keymap_items.new('mesh.subdivide', 'W', 'CLICK')
> +    
> +    # Loop cut
> +    kmi = km.keymap_items.new('mesh.loopcut_slide', 'T', 'CLICK')
> +    
> +    # Knife
> +    kmi = km.keymap_items.new('mesh.knife_tool', 'K', 'CLICK')
> +    
> +    # Extrude
> +    kmi = km.keymap_items.new('view3d.edit_mesh_extrude_move_normal', 'E', 'CLICK')
> +    kmi = km.keymap_items.new('wm.call_menu', 'E', 'CLICK', alt=True)
> +    kmi.properties.name = 'VIEW3D_MT_edit_mesh_extrude'
> +    
>      kmi = km.keymap_items.new('mesh.dupli_extrude_cursor', 'ACTIONMOUSE', 'CLICK', ctrl=True)
>      kmi.properties.rotate_source = True
>      kmi = km.keymap_items.new('mesh.dupli_extrude_cursor', 'ACTIONMOUSE', 'CLICK', shift=True, ctrl=True)
>      kmi.properties.rotate_source = False
> +    
> +    # Inset/Outset
> +    kmi = km.keymap_items.new('mesh.inset', 'I', 'CLICK')
> +    kmi.properties.use_outset = False
> +    kmi = km.keymap_items.new('mesh.inset', 'I', 'CLICK', shift=True)
> +    kmi.properties.use_outset = True
> +    
> +    # Bevel
> +    kmi = km.keymap_items.new('mesh.bevel', 'B', 'CLICK')
>  
> -    # Delete
> -    kmi = km.keymap_items.new('wm.call_menu', 'X', 'CLICK')
> +    # Duplicate
> +    kmi = km.keymap_items.new('mesh.duplicate_move', 'D', 'CLICK', shift=True)
> +    
> +    # Rip
> +    kmi = km.keymap_items.new('mesh.rip_move', 'R', 'CLICK')
> +    
> +    # Split / Separate
> +    kmi = km.keymap_items.new('mesh.split', 'Y', 'CLICK')
> +    kmi = km.keymap_items.new('mesh.separate', 'Y', 'CLICK', shift=True)
> +    
> +
> +    #-----------------
> 
> @@ Diff output truncated at 10240 characters. @@
> _______________________________________________
> Bf-extensions-cvs mailing list
> Bf-extensions-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-extensions-cvs




More information about the Bf-extensions-cvs mailing list