Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Viewport and level editing enchancements

Discussion in 'Works In Progress - Archive' started by ZoltanErdokovy, Jan 27, 2014.

  1. ZoltanErdokovy

    ZoltanErdokovy

    Joined:
    Aug 23, 2012
    Posts:
    102
    I like many aspect of Unity but the level editing workflow is not its strong suits. I set out
    to explore ways to make it better so the "Viewport And Level Editing Enhancements"
    project (VALEE) was born.

    I want to end up with a solid, fast and capable set of mechanics to serve hardcore level
    designer needs. On the other hand it should also be intuitive, easy to learn and flexible
    enough to adapt to different personal workflows. This is why I started this thread: I'd
    like to get feedback from the community right from the start.

    My long term goal is to present Unity Technologies with the polished prototype as a
    possible alternative to their current design. Not as a replacement for the all-rounder
    default workflow but as an optional tool addressing the specific challenges of level
    design.

    The main guidelines for this interaction design are speed and visibility:

    Speed: The most common functions should be quick to execute with a physical
    action which allows the development of muscle memory.

    The left hand shouldn't leave the base position for the vast majority of the operations.
    The right hand shouldn't leave the mouse at all.
    No hunting for transform gizmos, drag anywhere.
    No finding a button to switch coordinate systems, breaks flow and slow.
    Changing navigation modes should be quick.
    Navigation mode for detailing the map (lot of minor, precise tweaks of the view).
    Navigation mode for broad strokes (convenient, ratcheting free way to cover greater
    distances).​

    Visibility: See only what you want to see at any given moment.

    Quickly toggle visibility of particular items.
    Quickly toggle visibility of categories.
    See otherwise invisible properties like light radius or collision geometry on everything.
    See everything in wireframe mode, without clipping or backface cull.
    Ability to lock items when they stay visible but can't be manipulated.
    Numerical data and visual guides about transformations.​

    Anyway, here is the current release focusing on navigation and world relative transforms:

    [HR][/HR]===== VALEE (2014.01.27.) =====
    [HR][/HR]
    The workplane adapts to the camera: if you look down then it will lie on the ground for
    example.
    In pie menus if you release the invoking keys/buttons with a pie slice highlighted then
    that slice will be executed, otherwise the pie is cancelled.
    When multiple items are selected, the transform pivot is the last selected item's pivot.

    Click in the window to capture the mouse. (Some users reported that clicks are also
    registered outside the webplayer frame on Chrome even when the OS cursor is not
    visible. Right now I have no idea what causes this or how to fix it.)
    Escape: Releases the mouse.
    Mouse wheel: Changes grid density.
    LMB click: On item: selects item. On background: drops selection.
    Ctrl + LMB click: On item: toggles item selection.
    Space + LMB held: Reserved.
    Space + RMB held: Reserved.

    Space + MMB held: Navigation pie menu. (See navigation modes bellow.)
    Q held: Quick transform mode. Without selection it shows grid and axis of item under the mouse.
    LMB: Moves selection on workplane.​
    RMB: Rotates selection on the two workplane relative axes.​
    MMB: Scales selection uniformly.​
    W held: Move mode.
    LMB: Moves selection on workplane.​
    RMB: Moves selection and camera on workplane.​
    MMB: Moves selection on axis perpendicular to workplane.​
    E held: Rotate mode.
    LMB: Rotates selection workplane relative "forward" and "sideways".​
    RMB: Rotates selection around workplane relative "up" axis.​
    R held: Scale mode.
    LMB: Scales selection on local X axis.​
    RMB: Scales selection on local Y axis.​
    MMB: Scales selection on local Z axis.​
    A held: Reserved for local quick transform mode.
    S held: Reserved for local move mode.
    D held: Reserved for local rotate mode.
    F held: Reserved for local scale mode.


    Navigation modes:

    Skate: The mouse represents the camera, you push it forward and the view moves forward.
    LMB: Moves forward/backward and turns sideways.​
    RMB: Looks around.​
    LMB+RMB: Moves vertically and sideways.​
    MMB: Moves vertically and sideways.​

    Drive: The mouse behaves as a virtual joystick, you push it forward and the camera speeds up.
    LMB: Increases/decreases speed and turns sideways.​
    RMB: Looks around.​
    LMB+RMB: Looks around while moving. Flying.​
    MMB: Increases/decreases speed vertically and sideways.​

    Pull: The mouse represents the world, you pull it closer and the world comes closer.
    LMB: Moves horizontally.​
    RMB: Looks around.​
    MMB: Moves vertically.​

    That's it for now, please post your thoughts, suggestions and ideas.
     
    Last edited: Jan 28, 2014
  2. create3dgames

    create3dgames

    Joined:
    Aug 20, 2012
    Posts:
    275
    I think this adds quite a bit of unnecessary complexity to Unity. I definitely do not like your suggestion to make the mouse wheel to change grid density. Mouse wheel always = zoom. I think Unity's methods of moving, rotating, and scaling are already very good, I don't see why they need made "better".
     
  3. ZoltanErdokovy

    ZoltanErdokovy

    Joined:
    Aug 23, 2012
    Posts:
    102
    If you're happy with the current ways then you're not the target audience of this experiment.
    It's about the discovery of a logical, legacy free workflow focusing on level design challenges.
    (I'm going to clarify this in the starting post.)

    As for the mouse wheel, it does have a zoom-like function: zooms the grid, so to speak.
    Actual, field of view changing is of very limited use during level design while the "get closer"
    functionality is already covered by the analog movement. The mouse wheel can be accessed
    quickly and comfortably, that's why I put a frequently used action there.
     
  4. ZoltanErdokovy

    ZoltanErdokovy

    Joined:
    Aug 23, 2012
    Posts:
    102
    I've just posted an update with the following changes:
    • Local quick transform, local move and local rotate transform modes are available on the A, S and D keys.
    • Usability issue: During local movement mouse motion is translated to workplane without factoring in the camera so a horizontal mouse stroke might move the object diagonally.
    • If nothing is selected then holding a transform mode key will temporally select and manipulate the object under the mouse. This selection is then dropped when leaving the transform mode.
    • Orthographic wireframe view is toggled with the BackQuote/Tilde (` ~) key. In that mode LMB/MMB pans, RMB zooms. The orientation of the orthogonal view depends on the perspective camera’s rotation.
    • Ideally only clicking on a wireframe edge would select objects but it doesn’t work that way yet so one mesh can block another when it comes to receiving clicks.
    • Not useful operations are disabled in orthogonal view.
    • Bug: In certain orthogonal views with certain object rotations local transforms don’t work.
    • Forward move in Move mode (MMB) shows a more helpful, adapted workplane.
    • Transformations are now also applied after button release.
    • Scene assets now have “old wooden blocks” visuals.
     
  5. ZoltanErdokovy

    ZoltanErdokovy

    Joined:
    Aug 23, 2012
    Posts:
    102
    Another update:
    • “Space” drops selection from now on.
    • “Delete” deletes selection.
    • Alt + MMB brings up the navigation pie menu.
    • Alt + RMB shows the view pie menu for selecting view presets (top, bottom, etc).
    • Pie menus have name labels and color coded slices.
    • “C” or “1″ performs a copy. The type of the copy is indicated at the bottom center of the screen. When nothing is selected then any object under the cursor will temporally selected and processed.
    • Holding “C” or “1″ shows the pie menu where one can select copy type.
    • “V” or “2″ now pastes the chosen type of data, shown at the bottom center of the screen. When nothing is selected then any object under the cursor will temporally selected and processed.
    • Holding “V” or “2″ allows to change paste type.
    • “Z” opens the mesh selector pie menu. The chosen mesh will be copied to the clipboard.
    • “X” opens material selector pie menu. The chosen material is copied to the clipboard.
    • Labels at the top of the screen indicate mouse button functions for the current transform tool. The copy and paste modes are shown at the bottom.
     
  6. lbender

    lbender

    Joined:
    Dec 16, 2013
    Posts:
    7
    Consider allowing the user to customize the hot keys and mouse clicks and save their own profile.
     
  7. ZoltanErdokovy

    ZoltanErdokovy

    Joined:
    Aug 23, 2012
    Posts:
    102
    Well, this is just a proof of concept, aimed at engine/editor developers so I won't bother replicating
    all the functionality expected from an editor application. However you have a good point, if I was
    actually implementing this then I'd definitely make it fully configurable. (The current layout is very
    uncomfortable for left handed people for example.)
     
  8. ZoltanErdokovy

    ZoltanErdokovy

    Joined:
    Aug 23, 2012
    Posts:
    102