Title: ???? ?? ?? (??-????, gluLookAT? ??)
1?? ??(???)
- ?? ?? (5?21 ?) 5?
- ?? (??? ??? ??? ??)
- ???? ?? ?? (??-????, gluLookAT? ??)
- ??? ??? (??, ?? ??)
- ?? ?? ??? ??? ????
- ?? (5? 28?) Reading Assignment
- 5.7??? 5.10??? (p239-p255)
- ??
- ??
- ??
- 5? 14? ?? (?????)
2? 5 ? ??
- ??? ? ??(??-????, ?? ? ??)
- OpenGL API? ??? ??? ???? ?? ?? ?? ??? ?? ????
- ????? ????? ????? ???.
3??? ? ??(2?? ??)
- ??-?? ??
- ???? ??? ???? ??? ??? ?? ???? ???
- ?? ?? ??? ??? ??
- ?? ??
- ?? ??? ??? ??? ??
- ???? ?? ?? ??
- ??? ?? ??? ???? ?? ? ??
- ??, ?? ??
45.1 ??? ??? ??? ??
??
???
?????
???
?? 5.1 ??
5?? ??? ??
- ??? ??? ??? ???? ??? ??
- ??(Object)
- ???(Viewer, Camera)
- ??? (Projector) ??
- ??? ?? (COP, Center of Projection)
- ??? ?? ?? ??
- ??? ???? ?? (???? ???)
- ??? (Projection plane) ??
6??? ??
- COP (??? ??)
- COP? ???. ?? ?? ? ??? ??.
- ?? ??(Perspective view)
- DOP (??? ??), Direction of Projection
- COP? ??? ??? ????, ?? ?? ?? ??????.
- ?? ??(Parallel view)
- ?? API??? ?? ??? ?? ?? ??? ????.
7?? ??
?? 5.2 ????? ???? ??
8?? ?? ??(Planar geometric projection)
- ???? ???? ?? ?? ??? ??
- ?? ??? ?? ??? ??? ????? ??? ????? ???? ???.
9??? ???? ???
- ??? ???? ???
- ?? ?? (Orthographic Parallel Viewing)
- ?? ?? (Perspective Viewing)
- ??? ?? (??? ?? ??? ??)
- ?? ?? ?? ??
- 1?, 2?, 3? ??
105.1.1 ??? ??
????
????
????
????
??
?? 5.3 ??? ???
11?? ?? ??? ??
125.1.2 ?? ??(Orthographic Projection)
?? 5.4 ?? ??
13?? ??(Orthographic Projection)
- ?? ?? ???? ????.
- ?? ?? ?? ???? ???? ??? ?? (principal face) ? ???
????. - ?? 5.5 3 ?? ?? ?? ?? ???
- ?? ?????? ???? ??? ??? ??? ? ?? ???? ? ? ??? ???
???? - ??? ?? ????.
14?? 5.5 ?? ?? ?? ???
?? 5.5 ??? ? ?? ?? ?? ?? ???
155.1.3 ?? ??(Axonometric projection)
- ???? ???? ?????, ???? ??? ?? ?? ???? ??? ? ??.
?, ?? ????? ???? ???? ??. (?? 5.6) - ?? ???? ????? ??? 3?? ??? ???? ????.(?? 5.7)
- ?? ??(isometric view) ? ?? ??? ??? ???? ????
- ?? ??(dimetric view) ? ?? ??? ???? ?? ??
- ?? ??(trimetric view) ???? ??
165.1.3 ?? ??(Axonometric projection)
- ??? ???? ???. ??? ?? ??? ??
- ?? ??? 1?? ???,
- ?? ??? 3?? ???
- ????? ??? ??? ????, ?? ??? ??.
- ?? ???? ????.
- ??? ??? ???? ????? ??? ??? ??? ???? ?? ?? ??? ??
?? ???? ????.
175.1.3 ?? ??(Axonometric projection)
?? 5.6 (a) ?? ??? ??(b) ??? (c) ???
18?? 5.7 ?? ???
??
??
??
195.1.4 ?? ??(Oblique projection)
- ?? ???? ?? ??(Parallel Projection)
- ???? ???? ??? ?? ???.(?? 5.8)
- ???? ??? ? ?? ?? ????.
- ???? ??? ?? ?? ?? ??? ????, ??? ??? ? ??? ??? ?
? ??. - ?? ??? ??? ?????? ?? ???. ?, ?? ?????? ???.
205.1.4 ?? ??(oblique projection)
?? 5.8 (a) ????? ?? (b) ??? (c) ???
215.1.5 ??(??) ?? (Perspective Projection)
?? 5.9 ????
22?? ??(Perspective viewing)
- ??? ?????? ????? ? ??? ????.(????? ??)
- ????, ????? ? ???? ??? ??? ??? ???.
- ?? ??? ?????.
- ??? ??? ??? ?????? ? ??? ?????? ??? ??? ???? ???
?????
23??, ??, ?? ??
- ??? ? ?? ??? ??? ??? ?? ??? ???? ?? ??? ??? ??,
??, ?? ?? (one, two, three point perspective)?
????. - ???? ? ?? ???? ??
- ???? ? ?? ???? ??
- ???? 3?? ? ??? ??? ?? ???? 3 ?? ????? ???.
24?? 5.10 ??, ??, ?? ??
(a) ?? ?? (b) ???? (c) ?? ??
255.2 ???? ????
- OpenGL? ???? API
- - GKS-3D, PHIGS? ?? API?? ???.
- ???? ?? ?? (5.2?)
- ??? ??? ???? ?? (5.4?)
- ??-?? ??? ??
- ??? ??? ??? ???? ? ??
- ?? ??????? ??? ????? ??? ?.
26???, ???? ??-????
- ??? ??? (??? ???, ????)
- ???? ??? ??? ???? ??? ???.
- ?? ???, ??? ???(?? ???)
- ???? ??? ??? ???? ??? z ????.
- ??? ??? (??? ???)
- ??-?? ??
- ??? ???? ??? ?? ????? ??? ?????.
- Identity matrix? ??? ?? ???? ??? ???? ??? ????.
27Modeling Transformation
Modeling Coordinates
World Coordinates
Viewing Transformation
Viewing Coordinates
Workstation Transformation
Projection Transformation
Device Coordinates
Projection Coordinates
285.2.1 ??? ???? ????
?? 5.11 ?? ??? ??
29?? 5.12 ???? ?????? ??
(a) ???? (b) ??-?? ??? ?? ?
30??-????(C)
?? ???(? q)
??? ???(? q)
31????? ???
- Camera? ??? ??? ??? ??????
- Default ??? ???? ?? ???? ??? ???? ??? ????. (????
??? ??? ???) - ??? ??? ??? ???? ????. ???, ??-?? ??? ?? ????.
- ? ?? x? ??? ?? ???? ???? ???? ??.
- ?? 5.13??? ?? ???? ????? ?? ???? ??, y?? ????
?????.
32?? 5.13 ???? ?? ??
glMatrixMode(GL_MODELVIEW) glLoadIdentity() glTr
anslatef(0.0, 0.0, -d) glRotatef(-90.0, 0.0,
1.0, 0.0)
? ???? ???? ?? (1)?? ???? ??? ???? ??? ??? ??
(2)? ???? ?? ?????.
33???? ?? ??
- ???? ???? ? ??? ??? ???? ????? ??? ? ?? ??? ??
??. - ? ??? ??? ???? ????, ??? ???? ?? ?????.
- ???? Y ?? ???? 45? ??
- ???? X ?? ???? 35.26? ??
- ???? ?? ??
34glMatrixMode(GL_MODELVIEW) glLoadIdentity() glTr
anslatef(0.0, 0.0, -d) glRotatef(35.26,1.0,0.0,0.
0) glRotatef(45,0.0,1.0,0.0)
355.2.2 ?? API
PHIGS GKS-3D
View Reference point(VRP) View Plane Normal
(VPN) View-Up Vector (VUP)
?? 5.14 ???? ???
36? ?? ?? API
- set_view_plane_normal(nx, ny, nz)
- VPN? ??? ?, ???? ??? ??
- set_view_up(ux, uy, uz)
- VPN? ???? ? ?? ?? ???? ??? ?? ???? ???? ? ??.
- VUP? ??? ???? ?????.
37?? 5.15
?? 5.15 ?? ?? ??? ??
38Viewing-coordinate system(??? ???, u-v-n)
- VRP (Viewing Reference Point) ??
- VPN (Viewing Plane Normal) n
- VUV (View Up Vector) Vup , ???? ???? v? ??
- uv?n ?? ??.
39???? ?? ???? ????? ????? ???, ??? p? ????
5.2.1?? ??? ??? ??-?? ??? ???.
405.2.3 Look-At ??
OpenGL ?? ??
41gluLookAt ??
- gluLookAt(eyex, eyey, eyez, atx, aty, atz, upx,
upy, upz) - - ???? ??? ?? ??-?? ??? ????.
- ???? ??(? e)? ??(eyepoint)??? ??. (VRP)
- ???(at point) (? e)
- VPN e a
- Up vector? ???? ? ??? ???.
425.2.4 ?? ?? API
?? 5.17 ??, ??, ??
43?? ?? API
- ?? (Roll) z?? ???? ??
- ??(pitch) x?? ???? ??
- ??(yaw) y ?? ???? ??
- ?? (elevation)
- ???(azimuth)
- ??? (twist angle)
44????
??
???
?? 5.18 ??? ???
455.3 ??? ???
?? ??? ????
???? ?? ??? ??? ?? ???? ?? ??? ??
???? ???? ????(??) ????
465.3.1 (???) ?? ??
- ???? ?? ??
- ???? ?? -z ? ??
47?? 5.19 ? ?? ???
- ???? ???? ??
- ?? ???? ??
- ???? ??? ??? ??? ??? ??? ?? ? ??.
- ??? (a) ??? ????.
48?? 5.20 ????? ? ???
(a) ??? ?? (b) ??? (c) ???
49??? ??(Nonuniform foreshortening)
z? ?????? ??? ??
50?? ??
- ?? ?? (perspective transformation)
- ? ??(??? ????? ??? ???) ? ? ??. ?? ?? ?? ? ???
???? ???. - ??? ????? affine ??? ???.
- ?? ??? (?? w1? ??? ????).
51?? ????
? ????
M? ? ?
?
52????(Perspective division)
- ?? ???? q? w ???? ??? ??? ???? ? q? ?? ? ??.
53?? 5.21 ?? ?????
??
????
??-??
545.3.2 ?? (??) ??(Orthographic)
- ?? ?? ?? ??? ??? ?? ??? ??? ????.
- ?? ?? ??? ?? ?? ??? ??? ?? ?? pipeline? ??? ?
???, ???? ?????.
55?? 5.22 ????
?? ????
Z0(???)
565.4 OpenGL??? ??
- ? ??? ??? ??? ????? ??? ??? ?? ??? ?? ??? ?? ????
??? ???? ???. - ?, ????? ?? ??? ????, ??? ?? ?? ?? ?? ?????? ???
???. ?, ??? ???? ?? ??? ????? ???? ???. - ???? ???? API(OpenGL ?)? ??? ?? ??? ?? ?? ?????
????.
57?? 5.23 ?? ??? ??
??
58?? 5.24 ?? ????
???(Frustum)
- ??? ??? ?? ???? ???? ??? ????? ????.
595.4.1 OpenGL??? ??
- glFrustum(xmin, xmax, ymin, ymax, zmin, zmax)
- glMatrixMode(GL_PROJECTION)
- glLoadIdentity()
- glFrustum(xmin, xmax, ymin, ymax, zmin, zmax)
- -gt ?? 5.25 ??
60?? 5.25 ???? ??
glFrustum(xmin, xmax, ymin, ymax, zmin, zmax)
- Z ?? ?? ??? ??? ??
- ??? ??? ??? ??? ??
61?? 5.26 ??? ??? ??
????? ??? ?? ??? ?
gluPerspective(fovy, aspect, near, far)
???(aspect ratio)w/h
625.4.2 OpenGL??? ????
- gluortho(xmin, xmax, ymin, ymax, zmin, zmax)
- OpenGL?? ???? ???? ?? ?? ????. (?? ?? ??)
63?? 5.27 ?? ??
gluortho(xmin, xmax, ymin, ymax, zmin, zmax)
64??
- ????
- ?? ?? ??? ??? ?? COP? ???? ??? ??? ????? ??? ??
?? - COP ??? ??? COP ??? ?? ??? ???? ? ??? ??
- ?? z0 ?? ??? ??? ? ??. 0 ?? ???? ??? ? ??.
- ????
- zmax gt zmin ??? ??? ?? ??? ??? ??? ?? ???.
655.5 ?? ??
- ?? ?? ????
- (hidden-surface-removal algorithm)
- ??? ????
- (visible-surface algorithm)
- ?? ?? ????
- (object-space algorithm)
- ???? ???? z-buffer algorithm
- (image-space algorithm)
66?? ??
- ?? ?? (z-buffer)
- gluInitDisplayMode(GLUT_DOUBLE GLUT_DEPTH
GLUT_RGB) - gluEnable(GL_DEPTH_TEST)
- glClear(GL_DEPTH_BUFFER_BIT)
67?? 5.28 z-?? ????
685.6 ?? ???? ???
- 4?? color ???? (cube.c)
- - ?? ??? ????? ??? ???? ???? ?????.
- -?? ??? ???.
- colorview ???? (cubeview.c)
- ?? ??? ???.
- ???? ???? x,X,y,Y,z,Z? ???? ???? ????
- gluLookAT ??? ?? ???? ??? ???? ??? ? ???.
69- Void display(void)
-
- glClear(GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BI
T) - / Update viewer position in modelview
matrix/ - glLoadIdentity()
- gluLookAt(viewer0,viewer1,viewer2, 0.0,
0.0, - 0.0, 0.0, 1.0, 0.0)
- / rotate cube /
- glRotatef(theta0, 1.0, 0.0, 0.0)
- glRotatef(theta1, 0.0, 1.0, 0.0)
- glRotatef(theta2, 0.0, 0.0, 1.0)
- colorcube()
- glFlush()
- glutSwapBuffers()
-
70- void keys(unsigned char key, int x, int y)
-
- / Use x, X, y, Y, z, and Z keys to move
viewer / - if(key 'x') viewer0- 1.0
- if(key 'X') viewer0 1.0
- if(key 'y') viewer1- 1.0
- if(key 'Y') viewer1 1.0
- if(key 'z') viewer2- 1.0
- if(key 'Z') viewer2 1.0
- display()
71- void myReshape(int w, int h)
-
- glViewport(0, 0, w, h)
- / Use a perspective view / glMatrixMode(GL_PROJ
ECTION) glLoadIdentity() - if(wlth)
- glFrustum(-2.0, 2.0, -2.0 (GLfloat)
h/(GLfloat) w, 2.0 (GLfloat) h
/(GLfloat) w, 2.0, 20.0) - else
- glFrustum(-2.0, 2.0, -2.0 (GLfloat) w/
(GLfloat) h, 2.0 (GLfloat) w /
(GLfloat) h, 2.0, 20.0) - / Or we can use gluPerspective /
- / gluPerspective(45.0, w/h, -10.0, 10.0) /
glMatrixMode(GL_MODELVIEW)