viewing korea univ. computer graphics lab. hong, jin kyung
Post on 19-Jan-2016
234 Views
Preview:
TRANSCRIPT
ViewingViewing
Korea Univ.Korea Univ.
Computer Graphics Lab.Computer Graphics Lab.
Hong, Jin KyungHong, Jin Kyung
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.22
Chapter ObjectivesChapter Objectives
• View a geometric model• Control the location• Clip Undesired portions of the model• Manipulate the appropriate matrix
stacks
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.33
TransformationTransformation
• Viewing transformation• Modeling transformation• Projection transformation• Viewport transformation
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.44
TransformationTransformation
• Stages of Vertex Transformation
• v’ = Mv
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.55
Viewing Transformation(1/6)Viewing Transformation(1/6)
• Eye position 의 위치와 방향을 결정
• Default 위치 : 원점 , negative z-axis, y-axis up
void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, Gldouble centerz, GLdouble upx, GLdouble upy, GLdouble upz);
glMatrixMode(GL_MODELVIEW);glLoadIdentity(); // 현재 행렬을 단위 행렬로 초기화
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.66
Viewing Transformation(2/6)Viewing Transformation(2/6)
Default camera position Using gluLookAt()
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.77
Viewing Transformation(3/6)Viewing Transformation(3/6)
• Example 3-1.
void display(){
glClear(GL_COLOR_BUFFER_BIT);glColor3f(1.0, 1.0, 1.0);glLoadIdentity();
/* Viewing Transformation */gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);glScalef(1.0, 2.0, 1.0); /* Modeling Transformation */glutWireCube(1.0);glFlush();
}
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.88
Viewing Transformation(4/6)Viewing Transformation(4/6)
void glTranslate{fd}(TYPE x, TYPE y, TYPE z);
glLoadIdentity();glColor3f(1.0, 1.0, 1.0);draw_triangle();
glEnable(GL_LINE_STIPPLE);glLineStipple(1, 0xF0F0);glTranslated(-1.0, 0.0, 0.0);
glColor3f(1.0, 0.0, 0.0);draw_triangle();glDisable(GL_LINE_STIPPLE);
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.99
Viewing Transformation(5/6)Viewing Transformation(5/6)
void glRotate{fd}(TYPE angle, TYPE x, TYPE y, TYPE z);
glLoadIdentity();glColor3f(1.0, 1.0, 1.0);draw_triangle();
glEnable(GL_LINE_STIPPLE);glLineStipple(1, 0x8888);glRotatef(90.0, 0.0, 0.0, 1.0);
glColor3f(1.0, 1.0, 0.0);draw_triangle();glDisable(GL_LINE_STIPPLE);
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.1010
Viewing Transformation(6/6)Viewing Transformation(6/6)
• Rotating First or Translating First
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.1111
Coordinate System (1/2)Coordinate System (1/2)
• Grand, fixed coordinate system
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glMultMatrixf(N); // N matrix transformation
glMultMatrixf(M);
glMultMatrixf(L);
glBegin(GL_POINTS);
glVertex3f(v); // draw transformed vertex v
glEnd() // v’ = N(M(Lv))
- 변환되는 점의 좌표를 명령 순서와 반대로 계산해야 함
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.1212
Coordinate System (2/2)Coordinate System (2/2)
• Local coordinate system
glMatrixMode(GL_MODELVIEW);glLoadIdentity();glMultMatrixf(T); // TranslationglMultMatrixf(R); // Rotation
draw_the_object();
- 변환되는 점의 좌표가 명령 순서와 일치
예 ) 로봇의 운동
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.1313
Modeling Modeling Transformation(1/4)Transformation(1/4)
• 물체들의 위치와 방향을 결정• World 좌표에 대한 각 물체의 좌표 값이 결정
-> x, y, z 축에 따른 model 의 비율 결정
void glScale{fd}(TYPE x, TYPE y, TYPE z);
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.1414
Modeling Modeling Transformation(2/4)Transformation(2/4)
void glScalef{fd}(TYPE x, TYPE y, TYPE z);
glLoadIdentity();glColor3f(1.0, 1.0, 1.0);draw_triangle();
glEnable(GL_LINE_STIPPLE);glLineStipple(1, 0xF00F);glScalef(1.5, 0.5, 1.0);
glColor3f(0.0, 1.0, 0.0);draw_triangle();glDisable(GL_LINE_STIPPLE);
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.1515
Modeling Modeling Transformation(3/4)Transformation(3/4)
• Example 3-1.
void display(){
glClear(GL_COLOR_BUFFER_BIT);glColor3f(1.0, 1.0, 1.0);glLoadIdentity();
/* Viewing Transformation */gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);glScalef(1.0, 2.0, 1.0); /* Modeling Transformation */glutWireCube(1.0);glFlush();
}
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.1616
Modeling Modeling Transformation(4/4)Transformation(4/4)
• 프로그램 명령 순서
Viewing Transformation -> Modeling Transformation
• 실제 좌표 값 결정
Modeling Transformation -> Viewing Transformation
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.1717
Vertex TransformationVertex Transformation
Translate
Rotate Scale
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.1818
Duality of Modelview(1/2)Duality of Modelview(1/2)
• Viewing Transformation– 관측자를 이동
• Modeling Transformation– 좌표계를 이동
결과적으로 같은 효과
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.1919
Duality of Modelview(2/2)Duality of Modelview(2/2)
• Creating a Custom Utility Routinevoid pilotView(double planex, double planey, double planez, double roll, double pitch, double heading){
glRotated(roll, 0.0, 0.0, 1.0);glRotated(pitch, 0.0, 1.0, 0.0);glRotated(heading, 1.0, 0.0, 0.0);glTranslated(-planex, -planey, -planez);
}
void polarView(double distance, double twist, double elevation, double azimuth){
glTranslated(0.0, 0.0, -distance);glRotated(-twist, 0.0, 0.0, 1.0);glRotated(-elevation, 1.0, 0.0, 0.0);glRotated(azimuth, 0.0, 0.0, 1.0);
}
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.2020
Projection Projection Transformation(1/6)Transformation(1/6)
• Projection• Define a viewing volume
glMatrixMode(GL_PROJECTION);glLoadIdentity();
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.2121
Projection Projection Transformation(2/6)Transformation(2/6)
• 1) Perspective Projection– foreshortening
void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far);
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.2222
Projection Projection Transformation(3/6)Transformation(3/6)
void glPerspective(GLdouble fovy, GLdouble aspect, GLdouble near, GLdouble far);
aspect = width / height
• Symmetric perspective-view frustum
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.2323
Projection Projection Transformation(4/6)Transformation(4/6)
• Calculating field of view– Example 3-3.
#define PI 3.1415926535
double calculatingAngle(double size, double distance){
double radtheta, degtheta;
redtheta = 2.0 * atan2(size/2.0, distance); // radiandegtheta = (180.0 * redtheta) /PI; // degreereturn degtheta;
}
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.2424
Projection Projection Transformation(5/6)Transformation(5/6)
• Example 3-1.
void reshape(int w, int h){
glViewport(0, 0, (GLsizei) w, (GLsizei) h);glMatrixMode(GL_PROJECTION);glLoadIdentity();//glFrustum(-1.0, 1.0, -1.0, 1.0, 1.5, 20.0);gluPerspective(80.0, 1.0, 1.5, 20.0);glMatrixMode(GL_MODELVIEW);
}
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.2525
Projection Projection Transformation(6/6)Transformation(6/6)
• 2) Orthographic Projection– 물체의 실제 사이즈와 각도를 유지
void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far);
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.2626
Manipulating the Matrix Manipulating the Matrix Stacks(1/3)Stacks(1/3)
• A stack of matrices– Useful for constructing hierarchical models
• glLoadIdentity()• glMatrixMode()• glMultMatrix()• glLoadMatrix()
void glPushMatrix(void);
void glPopMatrix(void);
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.2727
Manipulating the Matrix Manipulating the Matrix Stacks(2/3)Stacks(2/3)
void draw_wheel_and_bolts(){
long i;draw_wheel();for(i=0; i<5; i++){
glPushMatrix();glRotatef(70.0*i, 0.0, 0.0, 1.0);glTranslatef(3.0, 0.0, 0.0);draw_bolt();
glPopMatrix();}
}
• Example 3-4. Pushing and Pop Matrix
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.2828
Manipulating the Matrix Manipulating the Matrix Stacks(3/3)Stacks(3/3)
• The Modelview Matrix Stack• The Projection Matrix Stack
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.2929
Viewport Viewport Transformation(1/3)Transformation(1/3)
• Viewport • 3D 모델 좌표 -> 스크린 좌표로 변환
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.3030
Viewport Viewport Transformation(2/3)Transformation(2/3)
– Viewport 의 aspect ratio– Viewing volume 의 aspect ratio
void glViewport(GLint x, GLint y, GLsizei width, GLsizei height);
=> 일치해야 함
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.3131
Viewport Viewport Transformation(3/3)Transformation(3/3)
• The Transformed Depth Coordinate
– Range : [0.0, 1.0]– near clipping plane 에서 멀어질수록 정밀도 떨어짐
void glDepthRange(GLclampd near, GLclampd far);
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.3232
Homogeneous Coordinates Homogeneous Coordinates SystemSystem
• Homogeneous Vertex (x, y, z, w)– 위치나 벡터를 나타냄– W≠0 일 경우– W = 0 일 경우
• point at infinity
– Use only non-negative w-values
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.3333
Additional Clipping PlanesAdditional Clipping Planes• Example 3-5. Wireframe Sphere with two Clipping Planes
GLdouble eqn[4] = {0.0, 1.0, 0.0, 0.0}; // y=0 GLdouble eqn2[4] = {1.0, 0.0, 0.0, 0.0}; // x=0glClipPlane(GL_CLIP_PLANE0, eqn);glEnable(GL_CLIP_PLANE0);
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.3434
Examples of Composing Examples of Composing Several TransformationSeveral Transformation
• Example 3-6. Planetary System
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.3535
Examples of Composing Examples of Composing Several TransformationSeveral Transformation
• Example 3-7. Robot Arm
Korea Univ. Computer Graphics Lab.Korea Univ. Computer Graphics Lab.3636
Reverse and Mimicking Reverse and Mimicking TransformationTransformation
• Example 3-8. Take and reverse
top related