270 likes | 414 Views
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
E N D
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 • Animating Interactive Programs • Design of Interactive Programs • Logic Operations
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
Physical Input Devices • Keyboard • Mouse, trackball, touchpad, pointing stick • Data tablet • Lightpen • Joystick • Spaceball • Data glove • Haptic device • Wiimote
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 queue • Callback
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
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. (transformation, 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).
Events • Notable GLUT events (http://www.opengl.org/resources/libraries/glut/spec3/node45.html) • glutDisplayFunc • glutReshapeFunc • glutKeyboardFunc • glutMouseFunc • glutMotionFunc • glutSpecialFunc • glutIdleFunc • glutPostRedisplay • glutTimeFunc
Menus • Supported by GLUT • Hierarchical menu supported
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()
Building Interactive Models • Instancing • To keep the objects in the scene • Using structures or classes • Display list • For efficient rendering • No edition allowed
Double Buffering • To avoid flickering during animation • Created using GLUT_DOUBLE in glutInitDisplayMode() • Front/back buffers keep being switched using glutSwapBuffers() • When to change the parameters? • Idle event callback • Timer event callback
Logic Operations • Logic operations can be applied to each pixel (source and destination) • XOR for erasable objects