37
투영과 Viewport 변환 01 좌표 변환 Pipeline 02 정사 투영 03 원근 투영 04 Z-Buffer Algorithm 05 Viewport 변환 04

04 투영과 Viewport 변환 - Sangji University3d.sangji.ac.kr/home/lectures/CG/04.pdf · 2019. 3. 7. · 투영과 Viewport 변환 01 좌표 변환 Pipeline 02 정사 투영 03

  • Upload
    others

  • View
    4

  • Download
    1

Embed Size (px)

Citation preview

  • 투영과 Viewport 변환

    01 좌표 변환 Pipeline

    02 정사 투영

    03 원근 투영

    04 Z-Buffer Algorithm

    05 Viewport 변환

    04

  • 좌표 변환 Pipeline 01

    OpenGL의 좌표 변환 Pipeline

    2

  • 좌표 변환 Pipeline 01

    MCS/LCS와 WCS의 관계

    3

  • 좌표 변환 Pipeline 01

    VCS(View Coordinate System

    4

  • 좌표 변환 Pipeline 01

    GL_MODELVIEW Matrix

    5

  • 좌표 변환 Pipeline 01

    NDCS(Normalized Device Coordinate Syste

    6

  • 정사 투영 02

    정사 투영의 3가지 종류

    7

  • 정사 투영 02

    glOrtho 함수에 대한 구조

    8

  • 정사 투영 02

    사람의 눈에 대한 두 개 시야의 각(Angle)

    9

  • 정사 투영 02

    glOrtho 함수에 대한 Prototype

    10

  • 정사 투영 02

    glOrtho Matrix로 표현하는 정사 투영

    11

  • 원근 투영 03

    소실점의 개수에 따른 원근 투영 방법

    12 (B) Two-Point Projection

    (A) One-Point Projection

    (C) Three-Point Projection

  • 원근 투영 03

    소실점의 개수에 따른 예시 – One Point

    13

  • 원근 투영 03

    소실점의 개수에 따른 예시 – Two Point

    14

  • 원근 투영 03

    소실점의 개수에 따른 예시 – Three Point

    15

  • 원근 투영 03

    glFrustum 함수의 구조

    16

  • 원근 투영 03

    glFrustum 함수에 대한 Prototype

    17

  • 원근 투영 03

    glFrustum Matrix로 표현하는 원근 투영

    18

  • 원근 투영 03

    gluPerspective 함수의 구조

    19

  • 원근 투영 03

    gluPerspective 함수에 대한 Prototype

    20

  • 원근 투영 03

    gluPerspective Matrix로 표현하는 원근 투영

    21

  • 원근 투영 03

    정사 투영과 원근 투영의 구현 결과

    22

    A) 정사 투영(glOrtho) (B) 원근 투영(glFrustum) (C) 원근 투영(gluPerspective)

    코드 4-4

  • Z-Buffer Algorithm 04

    Z-Buffer에 대한 이해

    23

  • Z-Buffer Algorithm 04

    Z-Buffer의 핵심 소스

    24

  • Z-Buffer Algorithm 04

    은면 제거 및 후면 제거의 효과 비교

    25

    (a) 후면 제거 및 은면 제거 모두 적용 안 한 상태

    (b) 후면 제거만 적용한 상태 glEnable(GL_CULL_FACE); glFrontFace(GL_CW); glCullFace(GL_BACK); //glEnable(GL_DEPTH_TEST);

    코드 4-6

  • Z-Buffer Algorithm 04

    은면 제거 및 후면 제거의 효과 비교

    26

    (c) 은면 제거만 적용한 상태 //glEnable(GL_CULL_FACE); glFrontFace(GL_CW); //glCullFace(GL_BACK); glEnable(GL_DEPTH_TEST);

    (d) 후면 제거 및 은면 제거 모두 적용한 상태 glEnable(GL_CULL_FACE); glFrontFace(GL_CW); glCullFace(GL_BACK); glEnable(GL_DEPTH_TEST);

  • Z-Buffer Algorithm 04

    glFrontFace 함수에 대한 Prototype

    27

    glCullFace 함수에 대한 Prototype

  • Viewport 변환 05

    Viewport와 View Window

    28

  • Viewport 변환 05

    GLUT 좌표계에서 Window의 위치 및 크기(Position & Size)

    29

  • Viewport 변환 05

    glutInitWindowPosition 함수의 Prototype

    30

    glutInitWindowSize 함수의 Prototype

  • Viewport 변환 05

    GL 좌표계에서의 Viewport

    31

  • Viewport 변환 05

    glViewport 함수에 대한 Prototype

    32

  • Viewport 변환 05

    glViewport Matrix로 표현하는 Viewport

    33

  • Viewport 변환 05

    하나의 Window에 4개의 Viewport를 생성

    34

    코드 4-8

  • Viewport 변환 05

    Window 변형에 따른 객체의 왜곡 현상

    35

  • Viewport 변환 05

    Window 변형에 따른 객체의 왜곡 현상 방지

    36

  • Viewport 변환 05

    Window 변형에 따른 객체의 왜곡 현상 방지

    37