[Bf-blender-cvs] [e6966f3] epic-navigation: View3D: Walk Navigation - initial support for Unreal Engine modes and keymap

Dalai Felinto noreply at git.blender.org
Fri Oct 31 03:36:57 CET 2014


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. @@




More information about the Bf-blender-cvs mailing list