Dr. Stephania Loizidou Himona – Chapter 3 - ACSC330 Computer Graphics
ACSC330 - Computer Graphics
Chapter 3 – Input and Interaction
Interactive graphics programs – applications: interactive design of buildings, control of large systems through graphical interfaces, virtual systems, computer games.
Interaction – one of the most advances in computer technology – to interact with computer displays, e.g. interactive computer graphics.
i.e. the user sees an image on the display. He/she reacts to this image by means of an interactive device, such as a mouse. The image changes in response to her input. He/she reacts to this change, and so on.
Interactivity is an important component of many applications. OpenGL, however, does not support interaction directly. This is because system architects who designed OpenGL wanted to increase its portability by allowing the system to work in a variety of environments. Consequently, windowing and input functions were left out of the API. However, any program must have at lease minimal interaction with the rest of the computer system.
Interactive devices
Input Devices – logical devices (characterised by their high-level interface with the user program, rather than by their physical characteristics)
In computer graphics the use of logical devices is slightly more complex. E.g. use the mouse – a physical device – either to select a location on the screen of the CRT (an x,y pair in some coordinate system), or to indicate which item in a menu to select (an integer as the identifier of an entry in the menu).
Physical Input Devices
Each device has properties that make it more suitable for certain tasks then for others.
2 primary types of physical devices: pointing devices (allow the user to indicate a position on the screen) and keyboard devices (a physical keyboard, but can be generalised to include any device that returns character codes to a program – ASCII)
e.g. the mouse and the trackball (similar) – sent a pair of encoders measured motion in two orthogonal directions using either optical or mechanical detectors.
Many variants: some use optical detectors, rather than mechanical detectors.
i.e. optical mice measure distance travelled by counting lines on a special pad
small trackballs, popular with portable computers (can be incorporated directly into the keyboard)
or, various pressure – sensitive devices used in keyboards
Mouse or Trackball – relative positioning
Data tablets – absolute positioning
Lightpen – light sensing device – a direct positioning device
Joystick – variable – sensitivity device; for flight simulators and games
For 3D graphics use 3D input devices – a spaceball – a joystick with a ball on the end of the stick – 6 d.o.f. e.g. to position and orient a camera
Laser-based structure – lighting systems
and laser – ranging systems – measure 3D positions
e.g. laser gloves (for virtual reality and robotics) – providing many additional input signals
Logical Devices – input from inside the application program i.e. from the logical point of view
Six classes – variety of input forms
1. String – a logical device that provides ASCII strings to the user program – physical keyboard
2. Locator – provides a position in world coordinates to the user program – a pointing device such as a mouse or a trackball
OpenGL: conversion from screen coordinates to world coordinates
3. Pick – returns the identifier of an object to the user program. Implemented with the same physical device as a locator but has a separate software interface to the user program.
OpenGL: use a process called selection to accomplish picking
4. Choice – allow the user to select one of a discrete number of options
OpenGL – various widgets (graphical interactive device) – menus, scrollbars and graphical buttons
5. Dial – (or, valuators) provide analog input to the user program. Widgets within various toolkits usually provide this facility through graphical devices, such as slidebars
6. Stroke – returns an array of locations e.g. pushing down a mouse button starts transferring data into the specified array, and releasing the button ends this transfer.
Input Devices - Summary
Type / Pointing/Positioning / Direct/IndirectLight pen / pointing / direct
Tablet with stylus / positioning / indirect
Touch Screen / pointing / direct
Keyboard / (both) / indirect
Paddle / positioning / indirect
Trackball / (both) / indirect
Mouse / (positioning)/pointing / indirect
Joystick / positioning (both) / indirect
Colour / Selection/
Erasing / Dynamics / Raster/Vector Mode / Advant. / Disadvant.
CRT / yes / yes / yes / vector^raster / Light resolution / Size, refreshing à flicker (complex)
Direct-view storage tube / no! (green) / no / no / vector/raster / Flicker free Cheap / Redraw
Flash rotation
Poor contrast
Plasma panel / yes? / yes / yes / raster / Size^flat
No flicker / Poor resolution
LCD / yes/no grey levels / yes / bad / vector / Flat / Restricted viewing angle
Quick movements
Measure and Trigger
The measure of a device is what the device returns to the user program. The trigger of a device is a physical input on the device with which the user can signal the computer.
e.g. the measure of a keyboard contains a string, and the trigger can be the ‘return’ or ‘enter’ key. For a locator, the measure includes the position, and the associated trigger can be a button on the pointing device.
Additionally, the measure can include other information such as status (for a mouse, the mouse button is the trigger).
Input modes
3 distinct modes (defined by the relationship between the measure process and the trigger):
Request modes – the measure of the device is not returned to the program until the device is triggered (e.g. ‘scanf’ – until the ‘enter’ key (the trigger) is pressed).
Sample mode – input is immediate (no trigger is needed). e.g. position the pointing device or entered data using the keyboard before the function call – the measure is extracted immediately from the buffer.
request_locator(device_id, &measure);
sample_locator(device_id, &measure);
Sample- and request-mode input are not sufficient for handling the variety of possible human-computer interactions that arise in a modern computing environment (e.g. pilots flight simulators might have multiple input devices – joystick, dials, buttons, and switches).
Event mode – can handle those other interactions. In an environment with multiple input devices, each time that a device is triggered, an event is generated – placed in an event queue. Or, associate a function called a callback with a specific type of event.
Clients and servers
If computer graphics is to be useful for a variety of real applications, it must function well in a world of distributed computing and networks. In this world, the building blocks are entities called servers that can perform tasks for clients (that can be distributed over a network). E.g. print servers (high-speed printers), compute servers (remotely located supercomputers), file servers (sharing files and programs), or terminal servers (handle dial-in access).
For example, a workstation with a raster display, a keyboard, and a pointing device, such as a mouse, is a graphics server (can provide output services on its display, and input services through the keyboard and pointing device).
Display lists – illustrate how clients and servers can be used on a network to improve interactive graphics performance.
immediate mode
retained-mode
glNewList …..glEndList within statements to define e.g. a box, and call this list each time the box needs to be displayed – a unique identifier.
Programming Event-Driven Input
move event (e.g. a mouse is moved with one of the buttons depressed)
passive move event (e.g. a mouse is moved without a button being held down)
mouse event (e.g. when one of the mouse buttons is either depressed or release)
reshape event (e.g. whenever the window is resized, i.e. by interaction)
window event (e.g. resize the window, dragging with the mouse a corner of it)
keyboard events (e.g. when the mouse is in the window and one of the keys is depressed)
Menus
Pop-up menus, slidebars
Picking – the logical input operation that allows the user to identify an object on the display.
A simple paint program
Animating interactive programs – objects are changing or moving à images change.
e.g. an animated character who walks across the display, or move the viewer over time.
Double buffering – front and back buffers – for complex objects (swap between the two buffers).
Designing of Interactive Programs – a powerful tool with unlimited applications.
4