User:PatrickHorn/interaction notes
Jump to navigation
Jump to search
Brainstorm on interfacing with the virtual world, and how to provide as much flexibility as possible.
Some throughts
- Drag object
- Input to UI (if selected texture is a browser window)
- Overlay UI: Attach to camera screen, become 2D
- All UI elements must be allowed to become overlays;
- untrusted Overlays must be allowed to be closed
- Select object
- List of all selectable objects (Red border around all such objects)
- Minimum r-size (if an object has no mesh or is invisible)
- Mouse cursor events
- Keep in mind tablet/ multi-input/ multi-touch support, since several consumer devices already support this!
Input devices
MOUSE/Joystick
- Want as few states as possible:
[Interaction Mode]
- CTRL "Object select mode". Upon selecting an object, a properties window appears.
- ALT "Camera rotate mode". Click and drag to rotate scene.
- CTRL+ALT "Camera rotate around object mode". Click and drag to rotate around selected object
- DEFAULT "Interface mode". Clicking interfaces only with UI elements.
[Avatar Mode] =
- Mouse cursor disabled,
- Mouse fires relative events (moved up 10 pixels) rather than absolute events.
Allow UI to work without a keyboard:
- Default clicking
- Ctrl <=> hold down left button
- Alt <=> hold down right button
- Ctrl+Alt <=> hold down both OR middle click.
- Scroll wheel: zoom?
Keyboard
[ Interaction Mode]
- All keybaord keys talk to focused UI element
- Standard UI controls work:
- Tab=next form/ Space=activate/ Enter=accept (these are all built into web browsers)
- Escape = Close UI window (actually, maybe *hide*, not close so that you don't lose text input changes)
- Keyboard = type into text box.
- Keyboard input should be able to function without an attached mouse
[ Avatar Mode]
- arrow keys move and turn avatar.
Avatar versus Interaction mode
How do we switch between these? Interaction mainly involves editing/altering the world, while Avatar is mainly about observing.
Perhaps these "modes" should not be separate at all. Should double clicking on a browser window activate it or bring it up in an overlay? Should dragging always rotate the camera?
Input system
- Each input device is separate.
- You can bind any number to controlling the actions of a ProxyObject, for example based on keyboard bindings.
- You can also link input devices together for interaction mode.