surface rendering with opengl cs460 project by rui yu 11/30/03

Post on 24-Jan-2016

255 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Surface Rendering With OpenGLCS460 Project

by Rui Yu

11/30/03

Two aspects

• Windowing system or user interfaceUse 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 commandsUse gl,glu fuctions

Viewing pipeline

Surface rendering

Viewing pipeline

ChoosePixelFormat // Define pixel formatwglCreateContext //Create rendering context.

glMatrixMode(GL_MODELVIEW);glRotatef //rotateglScalef //scale

glMatrixMode(GL_PROJECTION)glOrtho(-1,1,-1,1,-1,1); //Parellel projection

glViewport(0, 0, cx, cy);

glBegin(GL_LINES); //or GL_POLYGON and etc. glVertex3d glVertex3d glEnd;

SwapBuffers;

3D modeling coordinates

3D world coordinates

Modeling transformation

Clipping & projection

2D device coordinates

Transform into viewport

Example:

•Pixel Format: DOUBLE BUFFER, RGBA, DRAW_TO_WINDOW

•View volume:

draw points

position of cursor is unprojectedto a 3d vertex. Here shows its

model coordinates

Screen Shots (1)-draw 3D points interactively

Screen Shots (2)-draw 3D bezier surface with zoom and rotation

draw thesurface

Rotate Zoomin

Zoomout

Drag of mouse definesrotation angle and

direction as shown here

This is a bezier surfacewith control points defined

on a cylinder

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 };

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

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

Screen Shots (3)-Change light intensity and material property (1)

Back of surface is dark asambient light of light0 is 0. Onlyglobal ambient(0.2) works here.

Opens a dialogue tochange default values.

Screen Shots (4)-Change light intensity and material property (2)

After increase the ambientlight, the back of the

surface becomes brighter

Screen Shots (5)-Drag control points of bezier surface and texture mapping (1)

Bezier surface with 16control points initially on a

plane

old and new postion of thecontrol point

enable movecontrol points

drag a control point withmouse

show controlpoints

Screen Shots (6)-Drag control points of bezier surface and texture mapping (2)

shade texturemapping

The surface drawn bymoving control points

bibliography

• Msdnhttp://www.msdn.com

• OpenGL Programming Guide or 'The Red Book’ from Silicon Graphics, Inc

• Guide to OpenGL on Windows from Silicon Graphicshttp://www.opengl.org/developers/documentation/overviews.html

• OpenGL Win32 Tutorialhttp://www.nullterminator.net/opengl32.htmlhttp://www.opengl.org/developers/code/tutorials.html

• Basic Curves And Surfaces Modeler by Sharjith http://www.codeproject.com/useritems/cadsurf.asp

top related