OpenGLProj.ppt

advertisement
Surface Rendering With OpenGL
CS460 Project
by Rui Yu
11/30/03
Two aspects
• Windowing system or user interface
Use MFC
Create a window
Viewport is the client area of the window
Capture mouse move events in the client area
Add buttons on a tools bar
• OpenGL commands
Use gl,glu fuctions
Viewing pipeline
Surface rendering
Viewing pipeline
3D modeling coordinates
Modeling transformation
3D world coordinates
Clipping & projection
ChoosePixelFormat
wglCreateContext
// Define pixel format
//Create rendering context.
glMatrixMode(GL_MODELVIEW);
glRotatef
//rotate
glScalef
//scale
glMatrixMode(GL_PROJECTION)
glOrtho(-1,1,-1,1,-1,1);
//Parellel projection
glViewport(0, 0, cx, cy);
Transform into viewport
2D device coordinates
glBegin(GL_LINES); //or GL_POLYGON and etc.
glVertex3d
glVertex3d
glEnd;
SwapBuffers;
Example:
•Pixel Format: DOUBLE BUFFER, RGBA, DRAW_TO_WINDOW
•View volume:
Screen Shots (1)
-draw 3D points interactively
draw points
position of cursor is unprojected
to a 3d vertex. Here shows its
model coordinates
Screen Shots (2)
-draw 3D bezier surface with zoom and rotation
draw the
surface
This is a bezier surface
with control points defined
on a cylinder
Rotate
Zoom
in
Zoom
out
Drag of mouse defines
rotation angle and
direction as shown here
Shading
The Mathematics of Lighting:
vertex color =
global ambient light * ambient material +
i attenuation factor *Ii *
[ ambient light *ambient material +
(max { 1 x n , 0 } ) * diffuse light * diffuse material +
(max {s x n ,0} )*shininess * specular light * specular material ]
l : the unit vector that points from the vertex to the light position
n: the unit normal vector at the vertex.
Default Lighting Value:
Global Ambient Light: {0.2, 0.2, 0.2, 1.0 };
Table1: Default Values for glLight0()
Parameter Name
Default Value
Meaning
GL_AMBIENT
(0.0, 0.0, 0.0, 1.0)
ambient RGBA intensity of light
GL_DIFFUSE
(1.0, 1.0, 1.0, 1.0)
diffuse RGBA intensity of light
GL_SPECULAR
(1.0, 1.0, 1.0, 1.0)
specular RGBA intensity of light
GL_POSITION
(0.0, 0.0, 1.0, 0.0)
(x, y, z, w) position of light
Table2: Default Values for glMaterial()
Parameter Name
Default Value
Meaning
GL_AMBIENT
(0.2, 0.2, 0.2, 1.0)
ambient color of material
GL_DIFFUSE
(0.8, 0.8, 0.8, 1.0)
diffuse color of material
GL_SPECULAR
(0.0, 0.0, 0.0, 1.0)
specular color of material
GL_SHININESS
0.0
specular exponent
Screen Shots (3)
-Change light intensity and material property (1)
Opens a dialogue to
change default values.
Back of surface is dark as
ambient light of light0 is 0. Only
global ambient(0.2) works here.
Screen Shots (4)
-Change light intensity and material property (2)
After increase the ambient
light, the back of the
surface becomes brighter
Screen Shots (5)
-Drag control points of bezier surface and texture mapping (1)
enable move
control points
show control
points
drag a control point with
mouse
Bezier surface with 16
control points initially on a
plane
old and new postion of the
control point
Screen Shots (6)
-Drag control points of bezier surface and texture mapping (2)
shade
texture
mapping
The surface drawn by
moving control points
bibliography
• Msdn
http://www.msdn.com
• OpenGL Programming Guide or 'The Red Book’
from Silicon Graphics, Inc
• Guide to OpenGL on Windows from Silicon Graphics
http://www.opengl.org/developers/documentation/overviews.html
• OpenGL Win32 Tutorial
http://www.nullterminator.net/opengl32.html
http://www.opengl.org/developers/code/tutorials.html
• Basic Curves And Surfaces Modeler by Sharjith
http://www.codeproject.com/useritems/cadsurf.asp
Download