27
Computer Graphics (fall 2009) School of Computer Science University of Seoul

School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input

Embed Size (px)

Citation preview

Page 1: School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input

Computer Graphics(fall 2009)

School of Computer ScienceUniversity of Seoul

Page 2: School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input

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

Page 3: School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input

3.1 Interaction

Page 4: School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input

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

Page 5: School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input

3.2 Input Devices

Page 7: School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input

Logical Devices

String Keyboard

Locator Mouse

Pick OpenGL “selection”

Choice Discrete Widgets (menu)

Valuators Analog Widgets (slidebar)

Stroke Mouse motion

Page 8: School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input

Input Modes

Measure & trigger Input modes

Request mode Sample mode Event mode

Event queueCallback

Page 9: School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input

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

Page 10: School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input

3.3 Clients and Servers

Page 11: School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input

3.4 Display Lists

Page 12: School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input

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. (transfor-

mation, 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).

Page 13: School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input

3.5 ProgrammingEvent-Driven Input

Page 14: School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-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

Page 15: School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input

3.6 Menus

Page 16: School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input

Menus

Supported by GLUT Hierarchical menu supported

Page 17: School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input

3.7 Picking

Page 18: School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input

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)

Page 19: School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input

Picking

Selection By adjusting the clipping region and viewport

Using bounding boxes AABB (Axis-aligned bounding box)

Back buffer + glReadPixels()

Page 20: School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input

3.8 A Simple Paint Program

Page 21: School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input

3.9 Building Interactive Mod-els

Page 22: School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input

Building Interactive Models

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

Display list For efficient rendering No edition allowed

Page 23: School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input

3.10 Animating Interactive Programs

Page 24: School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input

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

Page 25: School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input

3.11 Design of Interactive Programs

Page 26: School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input

3.12 Logic Operations

Page 27: School of Computer Science University of Seoul. 1. Interaction 2. Input Devices 3. Clients and Servers 4. Display Lists 5. Programming Event-Driven Input

Logic Operations

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

XOR for erasable objects