OpenGL - Day 3 #2

원종운·2020년 9월 22일
0

좌표계

  • 축의 방향은 편의에 따라 설정할 수 있습니다.

모델 좌표계(MCS)

  • MCS(Modeling Coordinate System)

전역 좌표계

  • WCS(Wolrd Coordinate System)

변환

모델 변환

  • 카메라를 고정 시킨 후, 모델을 회전 시키는 것
  • MCS는 바뀌지 않으며, WCS 또는 MCS의 축만 변환됨.

기본 3차원 변환(아핀변환)

  • 이동(Translation)
void glTranslatef();
  • 회전(Rotation) : z축 기준 회전
void glRotatef()
  • 크기변환(Scaling)
void glScalef();
  • 전단(Shearing) : 직사각형을 평행사변형으로 찌그러틀이는 것
  • 반사(Reflection)

복합변환

  • 두 개 이상의 기본변환이 연속적으로 구성되어지는 변환
  • 순서에 따라 다른 결과가 발생할 수 있으므로 주의가 필요
  • 물체 자체의 회전은 원점으로 이동한 후 수행

구조왜곡변환

  • 테이퍼링(Tapering): 한 축의 값에 따라 다른 축에서 scaling 크기를 조절 - (b)
  • 휨(Bending) : 축을 따라 물체가 휨. - (c)
  • 비틀림(Twisting): 축에 따라 회전각을 증가시킴. - (e)

시점 변환

  • 모델을 고정 시킨 후, 카메라를 회전 시키는 것

GL VIEWING 파이프라인

  • 실제 그려지는 3차원 공간 상의 좌표를 우리가 보는 윈도우 상 2차원 공간 상의 좌표로 만들어내는 과정
  1. 모델변환
    • 모델 좌표계의 모델 좌표를 모델 매트릭스(Model Matrix)를 곱하여 전역 좌표계의 전역 좌표로 변환하여주는 작업
    • 결과물 : 전역 좌표
  2. 시점변환
    • 전역 좌표계의 전역 좌표를 뷰어 매트릭스(View Matrix)를 곱하여 카메라의 시점에 맞게 변환하여주는 작업
    • 결과물 : 카메라 좌표
  3. 투영변환
    • 투영 매트릭스(Projection Matrix)를 곱하여 원근감, 렌더링 되어질 범위등을 표현하여 변환하여 주는 작업
    • 결과물 : 클립 좌표
  4. 뷰포트 변환
    • 최종 변환된 것을 뷰포트에 맞게 변환하여 주는 작업
    • 결과물 : 화면 좌표
profile
Java, Python, JavaScript Lover

0개의 댓글