Page MenuHome

View3D: Walk Navigation - Unreal Engine modes and keymap
Needs ReviewPublic

Authored by Dalai Felinto (dfelinto) on Nov 14 2014, 2:09 AM.
This revision needs review, but there are no reviewers specified.

Details

Summary

Also:

  • New "Mouse/Trackpad" Untouch event for trackpads (OSX only for now)
  • New math function: negate_v2_int()

How to Test it:

Go to 'User Preferences', go to the 'Input' tab and select the 'Unreal Engine' 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)
  • Direct keys: (arrow keys + PLUSPAD + MINUSPAD) : enter the navigation and leave as soon as the keys are released

Unreal mouse modes:

  • RMB + Drag : left/right | rotates horizontally up/down | rotates vertically
  • LMB + Drag : left/right | rotates horizontally up/down | move forward/backward
  • MMB + Drag : left/right | straft (mode sideways) up/down | move up/down

(note, WASD work when using the mouse modes as well, just like in Unreal
Engine)

Not implemented:

  • 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 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

Diff Detail

Repository
rB Blender
Branch
epic-navigation

Event Timeline

Dalai Felinto (dfelinto) retitled this revision from to View3D: Walk Navigation - Unreal Engine modes and keymap.
Dalai Felinto (dfelinto) updated this object.
  • Fixup for MMB and LMB moves not working, introduced in last commit
This revision was automatically updated to reflect the committed changes.

I've no idea why Phabricator closed this automatically

This revision was automatically updated to reflect the committed changes.

Test Builds:

Linux x86_64 (glibc211): http://goo.gl/oNnQIn
Mac OS x86_64: http://goo.gl/GHzNei
Win 64: http://goo.gl/mKOIsH

The builds on dropbox are inaccessible. Error (509): This account's public links are generating too much traffic and have been temporarily disabled!
By chance I found the windows build reposted by liquidape on polycount here.

Regarding the viewport mouse controls:

  • First thing I noticed, having used UE for a number of years, is that dragging right mouse and left mouse at the same time should be the same as dragging middle mouse, but currently it does not. LMB + RMB + Drag == MMB + Drag
  • The navigation distance seems to be constant. It should be based on how fast the user moves the mouse. For example the default view3d.move operator (Shift + MMB + Drag) works exactly the way I expected the previously mentioned LMB + RMB + Drag and MMB + Drag to work.
  • RMB + Drag seems to roll the view a little and should only pan and tilt.

If at all possible I would recommend getting your hands on UE to experience the controls. Viewing documentation and descriptions can only go so far. =D

Note: This can be committed only partly, leaving the usermap out, for further tests.

Feedback from Epic:

Pan (middle mouse button):

  • Mouse movement should be unclamped and direct-mapped to mouse movement. Right now there is some sort of nonlinearity that makes this feel very different.

Right Mouse Buttom + mouse move:

  • When rotating the view with this mode, rotation should always be about the world vertical axis and the camera horizontal axis, and the viewport's vertical axis should always remain oriented exactly up in the world. Right now, using this mode and moving the mouse wildly for a few seconds, it's possible to get the camera's vertical axis rotated sideways relative to the world up axis, and it's not clear how to get back to normal.

Left Mouse Buttom + Right Mouse Button + move mouse:

  • This combination should be the same as the middle mouse button, causing panning along the camera's horizontal axis and vertical plane.

Control transitions:

  • As the user moves the mouse continuously while pressing and unpressing buttons, the movement mode should transition seamlessly in response to button presses. This becomes especially important when Left+Right is implemented for panning, alongside the other Left and Right controls. A designer will switch very rapidly between modes without releasing all of the buttons in between.

Default movement / rotation rates:

  • Can you tweak the movement and rotation rates so that they approximately match the rates in an unmodified installation of UE4? Generally, designers expect fast movement as they tend to navigate very rapidly.
  • Basic interaction file for unreal (LMB selection only at the moment)
  • F (focus) shortcut to view_selected
  • Set default walk speed 10x faster
  • Fix lookaround twist the view after awhile
  • Take redraw and base speed into consideration for mouse move
  • Increase stability of WALK_MOUSE_MOVEVERTICAL mode (MMB) by doing only one movement at a time
  • Map Alt + Tweaks to expected behaviours (rotate, zoom, move - LMB, RMB, MMB)