Computer/그래픽스

모델 변환과 시점 변환

에린_1 2023. 1. 17. 00:11
728x90

좌표계

  • 3차원 물체의 표현
    • 메쉬 표현
  • 벡터 공간
    • 주어진 벡터로부터 파생되는 모든 벡터의 집합
  • 어파인 공간
    • 점을 마치 벡터의 동족처럼 취급함으로써 벡터공간을 확장한 것
  • 좌표축 / 좌표계
    • 기저 벡터끼리는 선형 독립이여야 한다
    • 차원 - 점의 위치를 표현하기 위한 기저 벡터의 수
    • 좌표 - 각각의 기저 벡터에 곱해지는 계수
    • 좌표계 - 원점과 기저 벡터로 구성되는 프레임
  • 동차 좌표

기하변환

  • 기하변환
    • 물체의 이동, 회전, 크기조절 작업
  • Translation

  • Rotaion

  • 하나의 객체를 x, y, z축 주위로 각각 ∮라디안만큼 회전시킨다.
  • Scaling

  • 균등, 차등이 존재
  • 쉬어 변환

 

  • 복합변환
    • 효율을 높이기 위함
  • Reflection
    • 특정 좌표 부호를 반대로 한다
  • 구조 왜곡(Structure Deforming)
    • 테이퍼링(Tapering)

 

 

 

GL 모델변환(Modeling Transformation)

  • 모델좌표계와 전역좌표계
    • 물체의 정점은 물체 하나를 설계할 떄의 좌표계 ~ 한 장면에 여러 물체를 모아 놓았을 때의 좌표계 ~ 그 장면을 바라보는 시점에 따른 좌표계 등을 거쳐가며 새로운 좌표값으로 바뀌어 최종적으로 화면에 그려진다.
    • GL 프로그램 처음 실행 시 전역 좌표계와 모델 좌표계가 일치되어 있다.
    • 물체에 변환을 가하면 GL은 전역좌표계를 모델좌표계로 일체 시키기 위한 변환을 가하고이를 기준으로 모델좌표계에서 정의된 물체를 그려낸다.
  • GL 파이프라인
    • 설계된 물체 또는 그래픽 라이브러리에서 가져온물체를 장면에 맞도록 기하변환시키는 것을 모델변환(Modeling Transformation)이라고 한다.
    • 변환된 물체를 관찰하기 위해 카메라 위치와 방향을 설정하는 것을 시점변환, 뷰변환(Viewpoint Transformation, View Transformation)이라고 한다.
    • 카메라의 렌즈를 선택하고 촬영하여 물체의 2차원영상을 필름에 맺히게 하는 것이 투상변환(Projection Transformation)
    • 그렇게 해서 찍혀진 사진의 크기를 줄이거나 늘리는 작업 뷰포트변환(Viewport Transformation)
    • 행렬의 내용은 프로그램에 의해 결정되지만 저장된 값에 의거하여 최정적인 기하변환을 가하는 것은 GL 파이프라인 프로세서의 몫이다.
  • 모델변환
    1. 행렬 모드(Matrix Mode) 설정 - 변환의 종류를 명시
    2. void glMatrixMode(GLenum mode);
      1. 행렬 내용 채우기 - 원하는 변환 가하기(전역좌표계를 기준으로 모델좌표계를 어떻게 변환하는지에 관한 정보를 현 변환 행렬에 저장한다.)
      • void glLoadIdentity(); - 현 변환행렬이 I로 초기화됨
      • void glLoadMatrixf(const GLfloat *M); - 행렬 M을 현 변환행렬로 올린다.
      • void glMultMatrixf(const GLfloat *M); - 현 변환행렬(후위곱셈)에 M행렬을 곱한다.
      • void glTranslatef(GLfloat dx, GLfloat dy, GLfloat dz); -> 모델좌표계를 전역좌표계로부터 이동
      • void glScalef(GLfloat sx, GLfloat sy, GLfloat sz); -> 모델좌표계 눈금 크기조절
      • void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); -> 모델좌표계를 전역좌표계로부터 반시계방향으로 회전
  • 물체변환 (Object Transformation)
    • 고정된 전역좌표계를 중심으로 물체를 움직이는 것.
    • 일단 이미 물체가 전역좌표계 원점에 그려져 있다고 가정하고 물체를 원하는 곳으로 가져다 놓는 방법
  • 좌표계 변환 (Coordinate Transformation)

 

  • 후위곱셈
  • 행렬스택
    • 행렬 스택은 모델좌표계가 변해온 과정을 저장하기 위한 것이다.
    • void glPushMatrix(); - 현 변환행렬의 복사본을 스택 탑에 삽입하고 그것이 새로운 현 변환행렬이 되게 함.
    • void glPopMatrix(); - 스택 탑의 행렬을 삭제함으로써 그 바로 아래있던 이전의 현 변환행렬을 현 변환행렬로 복원함.
  • 계층구조 모델링( Hierarchy Modeling)
    • 순방향 키네마틱스(Forward Kinematics)
      • 계층구조의 상위에서 점차 하위로 내려오면서 사용자가 직접 필요한 만큼 각도를 지정하여 회전시킴으로써 최종적으로 원하는 자세를 만들어 내는 것
      • 장점 - 사용자 마음대로 필요한 자세를 만들어 낼 수 있다.
      • 각 관절마다 회전각을 사용자가 직접 입력해야 한다.
    • 역방향 키네마틱스(Inverse Kinematics)
      • 계층구조의 가장 아래에 있는 물체위치를 명시하면 상위 물체의 움직임을 컴퓨터 내부에서 자동으로 계산되게 하는 방법
      • 예) 손이 그 위치에 존재하기 위해 나머지 모든 객체들이 해당 관절을 중심으로 몇 도를 회전해야 하는지에 대한 계산

GL 시점변환(View Transformation)

  • GL파이프라인
  • 시점좌표계 설정
    • 단순 시스템
    • 렌더맨
    • 비행 시뮬레이션
    • PHIGS, GKS
      • 다양하고 자유로운 카메라 설정이 가능한 카메라 좌표계
  • GL의 시점좌표계
    • GL의 시점좌표계는 다음 세 가지 요소에 의해 정의
      • 카메라 위치
      • 카메라가 바라보는 점, 즉 초점(Focus, Target)의 위치
      • 카메라 기울임(Orientation)
    • 시점 설정(gluLookAt())에 의한 애니메이션
      • 극좌표계(Polar Coordinate System)
728x90

'Computer > 그래픽스' 카테고리의 다른 글

가시성 판단(Visibility Detection)  (2) 2023.01.18
투상변환과 뷰포트변환  (0) 2023.01.17
OpenGL API  (0) 2023.01.13
그래픽 프로세서  (0) 2023.01.13
그래픽스 구성요소  (0) 2023.01.13