assignment 2 phase 1
DESCRIPTION
Assignment 2 Phase 1. Transformation Back-face culling View frustum culling. Outline. Implement the transformation. Modelview transformation Projection transformation Perspective division Viewport transformation Implement back-face culling. Bonus: Implement view frustum culling. - PowerPoint PPT PresentationTRANSCRIPT
Assignment 2 Phase 1
TransformationBack-face culling
View frustum culling
Outline
Implement the transformation. Modelview transformation Projection transformation Perspective division Viewport transformation
Implement back-face culling. Bonus: Implement view frustum culling.
Input and Output
Input: *.view *.obj *.mtl Same as assignment 1
Output: Wireframe of the obj with back-face culling
Transformation 1/3
ModelviewMatrix
ModelviewMatrix
ViewportTransformation
ViewportTransformation
ProjectionMatrix
ProjectionMatrix
PerspectiveDivision
VertexVertex
Vertex = Projection * Modelview * Vertex ;
Vertex.xyzw /= Vertex.w;
Vertex = Viewport * Vertex;
Model view
N = (eye - at)/|eye - at|; V = up – (N•up)N; |up| = 1.0
U = V x N ;
gluLookAt( GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble atx, GLdouble aty, GLdouble atz,
GLdouble upx, GLdouble upy, GLdoubpe upz );
Model view
Modelview = BT
Projection gluPerspective( GLdouble fovy, GLdouble aspect, GLdouble near, GLdo
uble far );
Projection
n=near; f=far; t=n*tan( fovy *PI / 180.0 /2); b= -t; r= t* aspect; l= -r;
Projection
Projection = NSH
=
Perspective Division
x /= w; y /= w; z /= w; w /= w;
View Port
Viewport = TS From [-1 , 1 ] to [0 , width (or height) ]
1000
0100
2/010
2/001
height
width
T
1000
0100
002/0
0002/
height
width
S
Back-face culling You can perform
back-face culling in World cord.
View cord.
ZN < 0
Window cord. Clock wise
0NV
Back face
1
3 2
View frustum culling
eliminate the polygon that complete outside the view frustum.
Bonus: view frustum clipping Remove the part of polygon that
outside the view frustum.
How to draw wireframe? Render the image using
glBegin(GL_LINE_LOOP);glVertex2i(x,y);…glEnd();
What to do in reshape function?void GL_reshape(GLsizei w, GLsizei h){
glViewport(viewport->x, viewport->y, viewport->width, viewport->height);
glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(viewport->x, viewport->width,
viewport->y, viewport->height);glMatrixMode(GL_MODELVIEW);glLoadIdentity();
}
UI requirement
Show an input command line. “Please input the file name.” If I type “box”, then read box.obj and b
ox.view etc.