View
80
Download
2
Category
Tags:
Preview:
DESCRIPTION
OpenGL & GLUT Mouse Interaction & Camera Control. Mouse events, Advanced camera control. George Georgiev. Telerik Corporation. www.telerik.com. Table of Contents. GLUT Mouse Interaction Mouse up/down events Passive motion Active motion OpenGL Camera Default transformation - PowerPoint PPT Presentation
Citation preview
OpenGL & GLUTMouse Interaction &
Camera ControlMouse events, Advanced camera control
George GeorgievTelerik Corporationwww.telerik.
com
Table of Contents GLUT Mouse Interaction
Mouse up/down events Passive motion Active motion
OpenGL Camera Default transformation “Manual” control Custom camera class
2
GLUT Mouse Interaction
Mouse event callbacks
GLUT Mouse Interaction
4
GLUT provides mouse detection capabilities Advantages
Multi-platform Similar to other GLUT routines Easy to code
Disadvantages Doesn’t receive device information No scroll information Unstable ‘leave’ and ‘enter’ events
GLUT Mouse Interaction
5
Detecting mouse buttons Registering callback function
glutMouseFunc(void(*func)(int button, int state, int x, int y))
func – mouse button callback function
button – mouse button raising the event
state – type of event x, y – cursor coordinates (from upper
left corner)
GLUT Mouse Interaction
6
Detecting mouse buttons (2) Callback parameter values
button GLUT_LEFT_BUTTON GLUT_MIDDLE_BUTTON GLUT_RIGHT_BUTTON
state GLUT_DOWN GLUT_UP
GLUT Mouse Interaction
7
Detecting mouse buttons (2) Callback parameter values
button GLUT_LEFT_BUTTON GLUT_MIDDLE_BUTTON GLUT_RIGHT_BUTTON
state GLUT_DOWN GLUT_UP
GLUT Mouse Interaction
8
Detecting movement Types
Passive Mouse moves No buttons pressed
Active Mouse moves One or more buttons pressed
GLUT Mouse Interaction
9
Passive motion Registering callback function
glutPassiveMotionFunc(void(*func)(int x, int y))
func – mouse passive motion callback x, y – cursor coordinates (from upper
left corner)
GLUT Mouse Interaction
10
Active motion Registering callback function
glutMotionFunc(void(*func)(int x, int y))
func – mouse active motion callback x, y – cursor coordinates (from upper
left corner)
GLUT Mouse Interaction GLUT Mouse leave and entry routines Detect when cursor leaves and
enters window Registering callback
glutEntryFunc(void(*func)(int state)) Func – callback handling cursor
leaving and entering window State – enter or leave event
GLUT_ENTERED GLUT_LEFT
11
GLUT Mouse Interaction Cursor-related routines
glutWarpPointer (int x, int y) Sends cursor to specified coordinates
glutSetCursor (int cursor) Sets the cursor image (style) for the
window Values:
GLUT_CURSOR_NONE, GLUT_CURSOR_INFO, GLUT_CURSOR_DESTROY, etc…
Google for more (much, much more)12
Mouse Interaction Object-oriented mouse handling
Custom mouse class Current cursor position Last cursor position and/or drag-
begin position Current mouse button states Last mouse button states Cursor style Anything else you can think of
13
Custom mouse classLive Demo
Mouse Interaction
Questions? ?
?? ? ??
?? ?
?
OpenGL Camera ControlBasic and Advanced camera positioning
OpenGL Camera Control Default camera position
Set up with glLoadIdentity() Centered at coordinate system
center (0, 0, 0) Rotation around all axes – zero (0,
0, 0) Looks down the
negative Z axis
17
OpenGL Camera Control “Manual” control
Applying transformations to the world Opposite those of the camera Applied before rendering anything
else Why not use gluLookAt ?
Does the same things without asking you
Gives you less freedom Future – transformations won’t be
deprecated gluLookAt most probably will
18
OpenGL Camera Control “Manual” control (2)
Imagining it – three options Positioning the ‘world’
Opposite to the location and orientation of the ‘camera’
Positioning the ‘camera’ away from the ‘world’
Positioning the coordinate system of the ‘paintbrush’
Either way, the result is the same 19
OpenGL Camera Control “Manual” control (3)
The steps Load default view
glLoadIdentity – not really camera-related
Move away glTranslate*
Look away glRotate*
Move on to lighting, drawing objects, etc…
20
OpenGL Camera control Moving away
glTranslate* Specifies a translation Applies to any subsequently drawn
geometry You could imagine it moves the
‘paintbrush’ Used for all object positioning (not
just camera) Say we want the camera at C(0, 0,
20) glTranslatef(0, 0, -20)
21
OpenGL Camera control Looking away
glRotate* Specifies a rotation Applies to any subsequently drawn
geometry You could imagine it turns the
‘paintbrush’ Used for all object positioning (not
just camera) If we want the camera to look right
90 degrees glRotatef (-90, 0, 1.0, 0)
22
OpenGL Camera control Looking away (2) – explanation
glRotatef parameters 1st parameter – degrees to rotate 2nd, 3rd, 4th parameter – multiplier for
resultant rotation on x, y, z axis respectively
Example: glRotatef (90, 0.5, 1.0, 0.0) = rotate by 45 degrees round X 90 degrees round Y 0 degrees round Z
23
OpenGL Camera control Looking away (3) – explanation
glRotatef positive rotations Positive rotation round Y
24
OpenGL Camera control Looking away (4) – explanation
glRotatef positive rotations Positive rotation round X
25
OpenGL Camera control Looking away (5) – explanation
glRotatef positive rotations Positive rotation round Z
26
OpenGL Camera Control Basic camera control
So far we can Set the location of the camera Set the orientation of the camera Limit the rotation of the camera
Hard to do that with gluLookAt
27
OpenGL Camera Control Advanced camera control
A good camera can Move forward and backward Strafe left and right Move up and down Look left and right Look up and down Tilt left and right “LookAt” 28
OpenGL Camera Control Custom camera class
Fields Location, last location Rotation (Euler angles), last rotation Forward vector Right vector Upward vector Speed? Maximum upward (x)
rotation? Etc…29
OpenGL Camera Control Custom camera class
Methods Set/Get location Set/Get rotation Move forward, backward, upward,
downward Strafe left, right Look up, down, left, right Tilt left, tilt right “Look at”, “sweep left/right”, “fly
to” ? Etc…
30
Custom camera classLive Demo
Mouse Interaction & Camera control
Questions? ?
?? ? ??
?? ?
?
Recommended