Computer Graphics - California State University Stanislaus

advertisement
Computer Graphics:
Programming, Problem Solving,
and Visual Communication
Steve Cunningham
California State University Stanislaus and Grinnell College
PowerPoint Instructor’s Resource
Events and Interactive
Programming
Giving the user the ability to
manipulate the scene and image
Interaction is Important in
Computer Graphics
• It can give the user control of parts of
the images you create
• It can give the user control of some of
the processes that go into the images
• It is the basis of the interfaces that you
can add to your programs
Interaction in OpenGL is
Based on Events
• An event is a change in the control state
of a computer system
• This definition is very general, but it
includes all the events needed for
graphics
• Events come from devices, from
programs, and from the system itself
Event Handling
• Events cause event
records to be posted
to the event queue
• The system removes
event records from
the queue and takes
actions
• Many event actions
are done via callback
functions
Events for Graphics
• Keypress events
– Keyboard
– Special
• Menu events
• Mouse events
– Mouse motion
– Mouse buttons
• Software events
• System events
• Window events
Meanings of Interaction
• Keyboards
– Discrete input
– Key choice can have semantic meaning
• Identify object or action
• Mouse
– Position identifies points spatially
– Motion is continuous
• Can identify continuous motion or selection
from continuous choices
Object Selection
• This is an important activity in graphics
• The user selects an object by selecting
a point on the screen
• You must then identify the object that
corresponds to that point
• The point gives you a line
in eye space, and you
could calculate all
intersections: could be difficult!
Object Selection (2)
• You could keep the question in screen
space by identifying the pixel chosen
• Then as the scene is drawn, you could
keep track of any object that uses that
pixel and the depth of that pixel
• Finally you could identify the correct
object from those by using the depth
value
• Not so difficult with system support
Events and the Scene Graph
• The scene graph, to now, has defined a
scene statically
• However, it is not difficult to let any part of
the scene graph vary
• Events could be used to identify the part of
the scene graph and how it is to change
– Change geometry, change transformations,
change appearance
Interaction and Visual
Communication
• The main reason we make images is to
communicate with our audience
• Interaction offers rich choices for
communication
– Changing the view
– Changing the scene
• Critical that the way we create the
interaction is consistent with the way the
audience thinks of the action
Events in OpenGL
•
•
•
•
•
Idle
Display
Reshape
Keyboard
Special
• Menu
• Mouse active motion
• Mouse passive
motion
• Timer
Selection in OpenGL
• Selections operate by
creating hit records in the
selection buffer
• One entry in the record for
each object that uses the
selected pixel
• Draw in selection mode
instead of render mode
• Process the record to
identify the selection
Selection in OpenGL (2)
• There are some clever tricks you can
use to make selection work better
• Modify the scene you will draw in
selection mode
– Only draw things that can be selected
– Draw simplified versions of these things
– Can even draw invisible controls!
Selection in OpenGL (3)
• There is a completely different approach
using the back buffer
–
–
–
–
–
Draw everything that can be selected
Use simplified versions
Draw each object in a unique color
Look at the selected pixel in the final back buffer
The color of the pixel will tell you what object is
nearest the viewer; this is usually the one you
want
User Interaction Toolkits
• There are many toolkits that have been
built on top of OpenGL
• They let you create widgets -- buttons,
text boxes, sliders, dials, … that the
user can manipulate
• They usually operate by letting you
create a separate window where you lay
out the controls
MUI
• MUI is a particular user
interaction toolkit
• It’s very simple, but very
easy to use
• This figure shows the look
of a MUI control panel
MUI (2)
• An example of a simple MUI application
Download