Commit: e6966f3a652e9d49cdfcad7bfb61b18d9aa86fcf Author: Dalai Felinto Date: Fri Oct 31 00:17:43 2014 -0200 Branches: epic-navigation https://developer.blender.org/rBe6966f3a652e9d49cdfcad7bfb61b18d9aa86fcf
View3D: Walk Navigation - initial support for Unreal Engine modes and keymap Implemented: * Mouse is reset back to its original location after the operation exits * New Mouse Modes (see below) * Trackpad support * (keymap to enter and exit the walk navigation for the different mouse modes) Mouse Modes (wip): * RMB + Drag : fully working * LMB + Drag : rotation working, needs to move forward * MMB + Drag : needs to move everywhere (note, WASD work when using the mouse modes as well, just like in Unreal Engine) Not implemented yet: * Direct (non-modal) keys: (arrow keys + PLUSPAD + MINUSPAD) * G: game mode (equivalent of the 'show as render' option), GKEY may be hardcoded in some places, so we may have to map it to something else, but at least it will be nice to create an operator to toggle the 'show as render' option + the GLSL mode or something similar. * Non-OSX support to UNTOUCH mouse/trackpad event * Bugfix for mouse event still being called after UNTOUCH is detected (this makes the operator to be called again if we swipe the mousepad too fast and untouch quickly). * F: Focus funcionality: Teleport to selected object * All the other keys: I'm still not sure if we should try to map all the Unreal Engine keyboard or only the basic navigation shortcuts The main keys/functionality that need to be decided to be implemented/included are: * Z/C Change camera zoom (field of view) * F11 to set fullscreen (the new editor fullscreen) * Ctrl (or Cmd) + 1, 2, 3, ..., 0 to store the current view * 1, 2, 3, ..., 0 to restore a saved view All viewport controls in Unreal Engine: https://docs.unrealengine.com/latest/INT/Engine/UI/LevelEditor/Viewports/ViewportControls/index.html =================================================================== A release/scripts/presets/keyconfig/unreal_engine.py M source/blender/editors/space_view3d/view3d_walk.c =================================================================== diff --git a/release/scripts/presets/keyconfig/unreal_engine.py b/release/scripts/presets/keyconfig/unreal_engine.py new file mode 100644 index 0000000..1664046 --- /dev/null +++ b/release/scripts/presets/keyconfig/unreal_engine.py @@ -0,0 +1,381 @@ +# Configuration Unreal Engine +import bpy +import os + +def kmi_props_setattr(kmi_props, attr, value): + try: + setattr(kmi_props, attr, value) + except AttributeError: + print("Warning: property '%s' not found in keymap item '%s'" % + (attr, kmi_props.__class__.__name__)) + except Exception as e: + print("Warning: %r" % e) + +wm = bpy.context.window_manager +kc = wm.keyconfigs.new(os.path.splitext(os.path.basename(__file__))[0]) + +# Map View3D Walk Modal +km = kc.keymaps.new('View3D Walk Modal', space_type='EMPTY', region_type='WINDOW', modal=True) + +kmi = km.keymap_items.new_modal('CANCEL', 'ESC', 'PRESS', any=True) +kmi = km.keymap_items.new_modal('CANCEL', 'RIGHTMOUSE', 'PRESS', any=True) +kmi = km.keymap_items.new_modal('CONFIRM', 'LEFTMOUSE', 'ANY', any=True) +kmi = km.keymap_items.new_modal('CONFIRM', 'RET', 'PRESS', any=True) +kmi = km.keymap_items.new_modal('CONFIRM', 'NUMPAD_ENTER', 'PRESS', any=True) +kmi = km.keymap_items.new_modal('FAST_ENABLE', 'LEFT_SHIFT', 'PRESS', any=True) +kmi = km.keymap_items.new_modal('FAST_DISABLE', 'LEFT_SHIFT', 'RELEASE', any=True) +kmi = km.keymap_items.new_modal('SLOW_ENABLE', 'LEFT_ALT', 'PRESS', any=True) +kmi = km.keymap_items.new_modal('SLOW_DISABLE', 'LEFT_ALT', 'RELEASE', any=True) +kmi = km.keymap_items.new_modal('FORWARD', 'W', 'PRESS', any=True) +kmi = km.keymap_items.new_modal('BACKWARD', 'S', 'PRESS', any=True) +kmi = km.keymap_items.new_modal('LEFT', 'A', 'PRESS', any=True) +kmi = km.keymap_items.new_modal('RIGHT', 'D', 'PRESS', any=True) +kmi = km.keymap_items.new_modal('UP', 'E', 'PRESS', any=True) +kmi = km.keymap_items.new_modal('DOWN', 'Q', 'PRESS', any=True) +kmi = km.keymap_items.new_modal('FORWARD_STOP', 'W', 'RELEASE', any=True) +kmi = km.keymap_items.new_modal('BACKWARD_STOP', 'S', 'RELEASE', any=True) +kmi = km.keymap_items.new_modal('LEFT_STOP', 'A', 'RELEASE', any=True) +kmi = km.keymap_items.new_modal('RIGHT_STOP', 'D', 'RELEASE', any=True) +kmi = km.keymap_items.new_modal('UP_STOP', 'E', 'RELEASE', any=True) +kmi = km.keymap_items.new_modal('DOWN_STOP', 'Q', 'RELEASE', any=True) +kmi = km.keymap_items.new_modal('FORWARD', 'UP_ARROW', 'PRESS') +kmi = km.keymap_items.new_modal('BACKWARD', 'DOWN_ARROW', 'PRESS') +kmi = km.keymap_items.new_modal('LEFT', 'LEFT_ARROW', 'PRESS') +kmi = km.keymap_items.new_modal('RIGHT', 'RIGHT_ARROW', 'PRESS') +kmi = km.keymap_items.new_modal('FORWARD_STOP', 'UP_ARROW', 'RELEASE', any=True) +kmi = km.keymap_items.new_modal('BACKWARD_STOP', 'DOWN_ARROW', 'RELEASE', any=True) +kmi = km.keymap_items.new_modal('LEFT_STOP', 'LEFT_ARROW', 'RELEASE', any=True) +kmi = km.keymap_items.new_modal('RIGHT_STOP', 'RIGHT_ARROW', 'RELEASE', any=True) +kmi = km.keymap_items.new_modal('GRAVITY_TOGGLE', 'TAB', 'PRESS') +kmi = km.keymap_items.new_modal('GRAVITY_TOGGLE', 'G', 'PRESS') +kmi = km.keymap_items.new_modal('JUMP', 'V', 'PRESS', any=True) +kmi = km.keymap_items.new_modal('JUMP_STOP', 'V', 'RELEASE', any=True) +kmi = km.keymap_items.new_modal('TELEPORT', 'SPACE', 'PRESS', any=True) +kmi = km.keymap_items.new_modal('TELEPORT', 'MIDDLEMOUSE', 'PRESS', any=True) +kmi = km.keymap_items.new_modal('ACCELERATE', 'NUMPAD_PLUS', 'PRESS', any=True) +kmi = km.keymap_items.new_modal('DECELERATE', 'NUMPAD_MINUS', 'PRESS', any=True) +kmi = km.keymap_items.new_modal('ACCELERATE', 'WHEELUPMOUSE', 'PRESS', any=True) +kmi = km.keymap_items.new_modal('DECELERATE', 'WHEELDOWNMOUSE', 'PRESS', any=True) +kmi = km.keymap_items.new_modal('CONFIRM', 'TRACKPADUNTOUCH', 'ANY', any=True) +kmi = km.keymap_items.new_modal('CONFIRM', 'LEFTMOUSE', 'RELEASE', any=True) +kmi = km.keymap_items.new_modal('CONFIRM', 'RIGHTMOUSE', 'RELEASE', any=True) +kmi = km.keymap_items.new_modal('CONFIRM', 'MIDDLEMOUSE', 'RELEASE', any=True) + +# Map 3D View +km = kc.keymaps.new('3D View', space_type='VIEW_3D', region_type='WINDOW', modal=False) + +kmi = km.keymap_items.new('view3d.manipulator', 'LEFTMOUSE', 'PRESS', any=True) +kmi_props_setattr(kmi.properties, 'release_confirm', True) +kmi = km.keymap_items.new('view3d.cursor3d', 'ACTIONMOUSE', 'PRESS') +#kmi = km.keymap_items.new('view3d.rotate', 'MIDDLEMOUSE', 'PRESS') +kmi = km.keymap_items.new('view3d.move', 'MIDDLEMOUSE', 'PRESS', shift=True) +kmi = km.keymap_items.new('view3d.zoom', 'MIDDLEMOUSE', 'PRESS', ctrl=True) +kmi = km.keymap_items.new('view3d.dolly', 'MIDDLEMOUSE', 'PRESS', shift=True, ctrl=True) +kmi = km.keymap_items.new('view3d.view_selected', 'NUMPAD_PERIOD', 'PRESS', ctrl=True) +kmi_props_setattr(kmi.properties, 'use_all_regions', True) +kmi = km.keymap_items.new('view3d.view_selected', 'NUMPAD_PERIOD', 'PRESS') +kmi_props_setattr(kmi.properties, 'use_all_regions', False) +kmi = km.keymap_items.new('view3d.view_lock_to_active', 'NUMPAD_PERIOD', 'PRESS', shift=True) +kmi = km.keymap_items.new('view3d.view_lock_clear', 'NUMPAD_PERIOD', 'PRESS', alt=True) +kmi = km.keymap_items.new('view3d.navigate', 'F', 'PRESS', shift=True) +kmi = km.keymap_items.new('view3d.smoothview', 'TIMER1', 'ANY', any=True) +kmi = km.keymap_items.new('view3d.walk', 'TRACKPADPAN', 'ANY') +kmi = km.keymap_items.new('view3d.walk', 'EVT_TWEAK_R', 'ANY') +kmi_props_setattr(kmi.properties, 'mouse_mode', 'LOOK_AROUND') +kmi = km.keymap_items.new('view3d.walk', 'EVT_TWEAK_L', 'ANY') +kmi_props_setattr(kmi.properties, 'mouse_mode', 'MOVE_HORIZONTAL') +kmi = km.keymap_items.new('view3d.walk', 'EVT_TWEAK_M', 'ANY') +kmi_props_setattr(kmi.properties, 'mouse_mode', 'MOVE_VERTICAL') + +kmi = km.keymap_items.new('view3d.rotate', 'MOUSEROTATE', 'ANY') +kmi = km.keymap_items.new('view3d.move', 'TRACKPADPAN', 'ANY', shift=True) +kmi = km.keymap_items.new('view3d.zoom', 'TRACKPADZOOM', 'ANY') +kmi = km.keymap_items.new('view3d.zoom', 'TRACKPADPAN', 'ANY', ctrl=True) +kmi = km.keymap_items.new('view3d.zoom', 'NUMPAD_PLUS', 'PRESS') +kmi_props_setattr(kmi.properties, 'delta', 1) +kmi = km.keymap_items.new('view3d.zoom', 'NUMPAD_MINUS', 'PRESS') +kmi_props_setattr(kmi.properties, 'delta', -1) +kmi = km.keymap_items.new('view3d.zoom', 'EQUAL', 'PRESS', ctrl=True) +kmi_props_setattr(kmi.properties, 'delta', 1) +kmi = km.keymap_items.new('view3d.zoom', 'MINUS', 'PRESS', ctrl=True) +kmi_props_setattr(kmi.properties, 'delta', -1) +kmi = km.keymap_items.new('view3d.zoom', 'WHEELINMOUSE', 'PRESS') +kmi_props_setattr(kmi.properties, 'delta', 1) +kmi = km.keymap_items.new('view3d.zoom', 'WHEELOUTMOUSE', 'PRESS') +kmi_props_setattr(kmi.properties, 'delta', -1) +kmi = km.keymap_items.new('view3d.dolly', 'NUMPAD_PLUS', 'PRESS', shift=True) +kmi_props_setattr(kmi.properties, 'delta', 1) +kmi = km.keymap_items.new('view3d.dolly', 'NUMPAD_MINUS', 'PRESS', shift=True) +kmi_props_setattr(kmi.properties, 'delta', -1) +kmi = km.keymap_items.new('view3d.dolly', 'EQUAL', 'PRESS', shift=True, ctrl=True) +kmi_props_setattr(kmi.properties, 'delta', 1) +kmi = km.keymap_items.new('view3d.dolly', 'MINUS', 'PRESS', shift=True, ctrl=True) +kmi_props_setattr(kmi.properties, 'delta', -1) +kmi = km.keymap_items.new('view3d.zoom_camera_1_to_1', 'NUMPAD_ENTER', 'PRESS', shift=True) +kmi = km.keymap_items.new('view3d.view_center_camera', 'HOME', 'PRESS') +kmi = km.keymap_items.new('view3d.view_center_lock', 'HOME', 'PRESS') +kmi = km.keymap_items.new('view3d.view_center_cursor', 'HOME', 'PRESS', alt=True) +kmi = km.keymap_items.new('view3d.view_center_pick', 'F', 'PRESS', alt=True) +kmi = km.keymap_items.new('view3d.view_all', 'HOME', 'PRESS') +kmi_props_setattr(kmi.properties, 'center', False) +kmi = km.keymap_items.new('view3d.view_all', 'HOME', 'PRESS', ctrl=True) +kmi_props_setattr(kmi.properties, 'use_all_regions', True) +kmi_props_setattr(kmi.properties, 'center', False) +kmi = km.keymap_items.new('view3d.view_all', 'C', 'PRESS', shift=True) +kmi_props_setattr(kmi.properties, 'center', True) +kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_0', 'PRESS') +kmi_props_setattr(kmi.properties, 'type', 'CAMERA') +kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_1', 'PRESS') +kmi_props_setattr(kmi.properties, 'type', 'FRONT') +kmi = km.keymap_items.new('view3d.view_orbit', 'NUMPAD_2', 'PRESS') +kmi_props_setattr(kmi.properties, 'type', 'ORBITDOWN') +kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_3', 'PRESS') +kmi_props_setattr(kmi.properties, 'type', 'RIGHT') +kmi = km.keymap_items.new('view3d.view_orbit', 'NUMPAD_4', 'PRESS') +kmi_props_setattr(kmi.properties, 'type', 'ORBITLEFT') +kmi = km.keymap_items.new('view3d.view_persportho', 'NUMPAD_5', 'PRESS') +kmi = km.keymap_items.new('view3d.view_orbit', 'NUMPAD_6', 'PRESS') +kmi_props_setattr(kmi.properties, 'type', 'ORBITRIGHT') +kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_7', 'PRESS') +kmi_props_setattr(kmi.properties, 'type', 'TOP') +kmi = km.keymap_items.new('view3d.view_orbit', 'NUMPAD_8', 'PRESS') +kmi_props_setattr(kmi.properties, 'type', 'ORBITUP') +kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_1', 'PRESS', ctrl=True) +kmi_props_setattr(kmi.properties, 'type', 'BACK') +kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_3', 'PRESS', ctrl=True) +kmi_props_setattr(kmi.properties, 'type', 'LEFT') +kmi = km.keymap_items.new('view3d.viewnumpad', 'NUMPAD_7', 'PRESS', ctrl=True) +kmi_props_setattr(kmi.properties, 'type', 'BOTTOM') +kmi = km.keymap_items.new('view3d.view_pan', 'NUMPAD_2', 'PRESS', ctrl=True) +kmi_props_setattr(kmi.properties, 'type', 'PANDOWN') +kmi = km.keymap_items.new('view3d.view_pan', 'NUMPAD_4', 'PRESS', ctrl=True) +kmi_props_setattr(kmi.properties, 'type', 'PANLEFT') +kmi = km.keymap_items.new('view3d.view_pan', 'NUMPAD_6', 'PRESS', ctrl=True) +kmi_props_setattr(kmi.properties, 'type', 'PANRIGHT') +kmi = km.keymap_items.new('view3d.view_pan', 'NUMPAD_8', 'PRESS', ctrl=True) +kmi_props_setattr(kmi.properties, 'type', 'PANUP') +kmi = km.keymap_items.new('view3d.view_roll', 'NUMPAD_4', 'PRESS', shift=True) +kmi_props_setattr(kmi.properties, 'angle', -0.2617993950843811) +kmi = km.keymap_items.new('view3d.view_roll', 'NUMPA @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-blender-cvs
