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 windowCaptures the mouse in the game frame.
EscapeReleases the mouse.
Back quote (` ~)Toggles orthographic wireframe view.
Mouse wheelChanges grid density.
SpaceDrops selection.
DeleteDeletes selection.
LMB clickOn item: selects item. On background: drops selection.
Ctrl + LMB clickOn item: toggles item selection.
Alt + LMB heldReserved.
Alt + RMB heldView pie menu.
Alt + MMB heldNavigation pie menu. (See navigation modes bellow.)
Q heldQuick transform mode.
LMBMoves selection on workplane.
RMBRotates selection on the two workplane relative axes.
MMBScales selection uniformly.
W heldMove mode.
LMBMoves selection on workplane.
RMBMoves selection and camera on workplane.
MMBMoves selection on axis perpendicular to workplane.
E heldRotate mode.
LMBRotates selection workplane relative “forward” and “sideways”.
RMBRotates selection around workplane relative “up” axis.
R heldScale mode.
LMBScales selection on local X axis.
RMBScales selection on local Y axis.
MMBScales selection on local Z axis.
A heldLocal quick transform mode. Same as “Quick transform” but works in the object’s local coordinate system.
S heldLocal move mode.
D heldLocal rotate mode.
F heldReserved.
1 or CCopy to clipboard. (See clipboard mechanics bellow.)
1 or C heldCopy mode pie menu.
2 or VPaste from clipboard.
2 or V heldPaste mode pie menu.
3 or BPaste to mouse cursor.
ZMesh selection menu. Selected mesh is copied to the clipboard.
XMaterial selection menu. Selected material is copied to the clipboard.
Navigation modes
SkateThe mouse represents the camera, you push it forward and the view moves forward.
LMBMoves forward/backward and turns sideways.
RMBLooks around.
LMB+RMBMoves vertically and sideways.
MMBMoves vertically and sideways.
DriveThe mouse behaves as a virtual joystick, you push it forward and the camera speeds up.
LMBIncreases/decreases speed and turns sideways.
RMBLooks around.
LMB+RMBLooks around while moving. Flying.
MMBIncreases/decreases speed vertically and sideways.
PullThe mouse represents the world, you pull it closer and the world comes closer.
LMBMoves horizontally.
RMBLooks around.
MMBMoves 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
ObjectCopies selected objects. Paste mode is set to “Object” when selecting this mode.
MeshCopies the mesh of the last of the selected objects. Paste mode is set to “Mesh” when selecting this mode.
MaterialCopies the material of the last of the selected objects. Paste mode is set to “Material” when selecting this mode.
TransformCopies 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 transformCopies the position and rotation of the camera. Paste mode is set to “Transform” unless it’s already in a transform related mode.
Paste
ObjectCreates 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.
MeshReplaces the mesh references in the selection with the one on the clipboard.
MaterialReplaces the material references in the selection with the one on the clipboard.
TransformOverwrites the position, rotation and scale values of all selected objects with the ones on the clipboard.
PositionOverwrites the position of the selected objects with the one on the clipboard.
RotationOverwrites the rotation of the selected objects with the one on the clipboard.
ScaleOverwrites the scale of the selected objects with the one on the clipboard.