Computer Graphics (fall 2009)

Preview:

DESCRIPTION

Computer Graphics (fall 2009). School of Computer Science University of Seoul. Chap 3: Input and Interaction. Interaction Input Devices Clients and Servers Display Lists Programming Event-Driven Input Menus Picking A Simple Paint Program Building Interactive Models - PowerPoint PPT Presentation

Citation preview

Computer Graphics(fall 2009)

School of Computer ScienceUniversity of Seoul

Chap 3: Input and Interaction

1. Interaction2. Input Devices3. Clients and Servers4. Display Lists5. Programming Event-Driven Input6. Menus7. Picking8. A Simple Paint Program9. Building Interactive Models10. Animating Interactive Programs11. Design of Interactive Programs12. Logic Operations

3.1 Interaction

Sketchpad

Developed by Ivan Sutherland as part of his Ph.D thesis at MIT (1963).

Received the Turing Award in 1988. Ancestor of…

CAD GUI OOP HCI

Adopted lightpen as input device Demo on YouTube

3.2 Input Devices

Logical Devices

String Keyboard

Locator Mouse

Pick OpenGL “selection”

Choice Discrete Widgets (menu)

Valuators Analog Widgets (slidebar)

Stroke Mouse motion

Input Modes

Measure & trigger Input modes

Request mode Sample mode Event mode

Event queueCallback

GLUT (OpenGL Utility Toolkit) Again, no user interface features in OpenGL. UI should be implemented using other libraries, such as GLUT. GLUT supports (http://www.opengl.org/resources/libraries/glut)

Multiple windows for OpenGL rendering Callback driven event processing Sophisticated input devices An ‘idle’ routine and timers A simple, cascading pop-up menu facility Utility routines to generate various solid and wire frame objects Support for bitmap and stroke fonts Miscellaneous window management functions

3.3 Clients and Servers

3.4 Display Lists

Display List

Groups multiple instructions into one to reduce the traffic between client & server.

Memory required on server side. Useful for text rendering. Care needed not to mess up the states. (transforma-

tion, projection, attributes, etc.) Can be saved/restored by push/pop.

Deprecated in OpenGL 3.0 Complex geometry can be stored in VBO (vertex buffer object).

3.5 ProgrammingEvent-Driven Input

Events Notable GLUT events (

http://www.opengl.org/resources/libraries/glut/spec3/node45.html) glutDisplayFunc glutReshapeFunc glutKeyboardFunc glutMouseFunc glutMotionFunc glutSpecialFunc glutIdleFunc

glutPostRedisplay glutTimeFunc

3.6 Menus

Menus

Supported by GLUT Hierarchical menu supported

3.7 Picking

OpenGL Picking

Can be implemented using selection mode (GL_SELECT) Deprecated in OpenGL 3.0

Can be implemented using occlusion query (http://www.opengl.org/registry/specs/ARB/occlusion_query.txt)

Picking

Selection By adjusting the clipping region and viewport

Using bounding boxes AABB (Axis-aligned bounding box)

Back buffer + glReadPixels()

3.8 A Simple Paint Program

3.9 Building Interactive Mod-els

Building Interactive Models

Instancing To keep the objects in the scene Using structures or classes

Display list For efficient rendering No edition allowed

3.10 Animating Interactive Programs

Double Buffering

To avoid flickering during animation Created using GLUT_DOUBLE in glu-tInitDisplayMode()

Front/back buffers keep being switched us-ing glutSwapBuffers()

When to change the parameters? Idle event callback Timer event callback

3.11 Design of Interactive Programs

3.12 Logic Operations

Logic Operations

Logic operations can be applied to each pixel (source and destination)

XOR for erasable objects

Recommended