Valee

Viewport And Level Editing Enhancements for Unity 3D.

This project, VALEE, is an exploration to find ways to enhance the level design workflow in the Unity editor. My goal is to end up with a solid, fast and capable set of mechanics to serve level designer needs. The resulting workflow should also be intuitive and easy to learn with some room for customization. I’m not aiming to replace the all-rounder default workflow but to provide 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 culling.
  • Ability to lock items when they stay visible but can’t be manipulated.
  • Numerical data and visual guides about transformations.
General mechanics

The workplane adapts to the camera: if you look down then it will lie on the ground for example. The same goes for the orthogonal view: if you look down then turn on orthogonal mode the view it will be top-down.

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

When nothing is selected then turning on a transformation mode will select any object under the mouse for the duration of the transform.
When multiple items are selected, the transform pivot is the last selected item’s pivot. (Explicitly setting pivot location is not implemented yet.)
The current functions of the mouse buttons are indicated at the top of the screen when in a transform mode.

Controls
Click in the window Captures the mouse in the game frame.
Escape Releases the mouse.
Back quote (` ~) Toggles orthographic wireframe view.
Mouse wheel Changes grid density.
Space Drops selection.
Delete Deletes selection.
LMB click On item: selects item. On background: drops selection.
Ctrl + LMB click On item: toggles item selection.
Alt + LMB held Reserved.
Alt + RMB held View pie menu.
Alt + MMB held Navigation pie menu. (See navigation modes bellow.)
Q held Quick transform mode.
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 Local quick transform mode. Same as “Quick transform” but works in the object’s local coordinate system.
S held Local move mode.
D held Local rotate mode.
F held Reserved.
1 or C Copy to clipboard. (See clipboard mechanics bellow.)
1 or C held Copy mode pie menu.
2 or V Paste from clipboard.
2 or V held Paste mode pie menu.
3 or B Paste to mouse cursor.
Z Mesh selection menu. Selected mesh is copied to the clipboard.
X Material selection menu. Selected material is copied to the clipboard.
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.
Navigation modes

Both copy and paste operations have different modes. The current modes are indicated at the bottom of the screen. When nothing is selected then copy and paste will operate on any object under the mouse. Changing copy or paste modes will also perform the related operation.

Copy
Object Copies selected objects. Paste mode is set to “Object” when selecting this mode.
Mesh Copies the mesh of the last of the selected objects. Paste mode is set to “Mesh” when selecting this mode.
Material Copies the material of the last of the selected objects. Paste mode is set to “Material” when selecting this mode.
Transform Copies the position, rotation and scale of the last of the selected objects. Paste mode is set to “Transform” unless it’s already in a transform related mode.
Camera transform Copies the position and rotation of the camera. Paste mode is set to “Transform” unless it’s already in a transform related mode.
Paste
Object Creates new copies of the objects on the clipboard. They are positioned so the pivot of the last object ends up under the cursor (snapped to grid). If no object is under the mouse then the new objects are put in front of the camera.
Mesh Replaces the mesh references in the selection with the one on the clipboard.
Material Replaces the material references in the selection with the one on the clipboard.
Transform Overwrites the position, rotation and scale values of all selected objects with the ones on the clipboard.
Position Overwrites the position of the selected objects with the one on the clipboard.
Rotation Overwrites the rotation of the selected objects with the one on the clipboard.
Scale Overwrites the scale of the selected objects with the one on the clipboard.