IT/컴퓨터그래픽스

[Chapter 04] OpenGL로 배우는 3차원 컴퓨터 그래픽스

Nellie29 2024. 4. 2. 00:41


1️⃣ 좌표계

💜 3차원 물체의 표현

  • 경계면 표현
    • 평면 다각형의 집합으로 나타냄
    • 메쉬(Mesh), 표면 메쉬(Surface Mesh), 다각형 메쉬(Polygon Mesh), 표면 다각형(Surface Polygon), 다각형(Polygon)
    • 곡면 표현 위해 필요한 다각형 수 = 곡면의 곡률 정비례
      • 곡률 ↑. 평면 다각형 ↑
    • 사각형 메쉬
      • 평면 보장 못함
    • 삼각형 메쉬 (주로 사용)
      • 평면 보장, 2배의 드로잉 속도
  • 렌더링
    • 화면에 물체를 그려내는 작업
      • 와이어프레임 렌더링
        • 드로잉 속도 빠름
      • 솔리드 렌더링
        • 외형 확인

💜 벡터 공간

  • 스칼라
    • 크기 O, 방향 X
      • ex. 온도, 무게
    • 교환법칙
      • ab=ba
    • 결합법칙
      • abc=(ab)c=a(bc)
    • 역원법칙
      • a*b=1(항등원) 이 되는 b가 반드시 존재함 (곱셈 예)
      • 덧셈
        • a+0=a (항등원: 0)
      • 곱셈
        • a*1=a (항등원: 1)
  • 벡터
    • 크기 O, 방향 O
      • ex. 속도, 바람 세기
      • 모든 벡터는 역벡터가 존재
      • 스칼라를 벡터에 곱할 수 있음
      • 벡터의 합 = 벡터
    • 벡터 공간
      • 주어진 벡터로부터 파생되는 모든 벡터의 집합
      • 벡터로 표현할 수 있는 공간 

💜 어파인 공간

  • 어파인 공간
    • 점을 벡터의 동족으로 취급 → 벡터 공간 확장
  • 어파인 연산
    • 벡터와 벡터의 덧셈 (뺄셈)
    • 스칼라와 벡터의 곱셈 (나눗셈)
    • 점과 벡터의 덧셈(뺄셈) → 어파인에서 추가!
  • 선분 표현
    • V = P + (1/2)(Q - P)
    • V = P + t (Q - P) = (1 - t)P + (t)Q (0 ≤ t ≤ 1)
  • 어파인 공간에서 어파인 합
    • 점의 계수 합이 1이 되는 경우
    • 점의 덧셈은 각 점 앞의 계수 합이 1일때만 허용
      • (1-t)+t=1

💜 좌표축과 좌표계

  • 좌표계
    • 3차원 공간의 물체의 위치 → 주어진 좌표계를 기준으로 표시
    • 직교 좌표계
      • 점의 좌표 : 기준이 되는 좌표계에 따라 달라짐
      • 좌표계에 따라 같은 좌표라도 다른 값이 될 수 있음 → 좌표계 통일에 주의할 것
  • 기반 벡터
    • 자신의 합성에 의해 다른 모든 벡터를 표시할 수 있는 벡터
    • 선형 독립을 이루어야 함
      • 선형 독립 : 공간상에 서로 직각으로 교차하는 벡터
        • 벡터 p = 4V1 + 2V2
        • p = p’
  • 차원
    • 점의 위치를 표현하기 위한 기반 벡터의 수
      • 기반 벡터 2개 = 2차원
      • 기반 벡터 3개 = 3차원
    • 좌표계
      • 원점과 기반 벡터로 구성되는 프레임
        • Ex. 3차원 좌표계 = (r, V1, V2, V3)
      • 원점
        • 어파인 공간에서 기반 벡터 시작점을 일치시킨 곳
      • 점 p = r + 4V1 + 2V2 + V3: 원점이 필요
      • c 의 경우 반드시 원점일 필요는 없음을 나타냄

💜 동차 좌표

  • 3차원 좌표를 4개의 요소로 표현하는 것
  • 벡터와 점의 표현은 다름
    • 벡터 : v = 4 V1 + 2 V2 + V3
    • 점 : P = r + 4V1 + 2V2 + V3 (기준점 존재)
  • 차원을 하나 올린 채, 동일 방법으로 표현하는 법
    • 벡터 : v = 4V1 + 2V2 + V3 + 0r = (4, 2, 1, 0)
    • 점 : P = 4V1 + 2V2 + V3 + 1r = (4, 2, 1, 1)

2️⃣ 기하변환

💜 기하변환

  • 기하 변환
    • 물체 변환 or 좌표계 변환의 기본
    • 행렬로 표현
    • 이동, 회전, 크기조절 등  

💜 2차원 이동

  • x' = 1 * x + 0 * y + Tx * 1
  • y' = 0 * x + 1 * y + Ty * 1

 

💜 3차원 이동

💜 2차원 회전

💜 3차원 회전

  • 회전축 기준의 회전으로 정의
  • 반 시계 방향의 회전각

💜 크기 조절

  • 균등 크기 조절 vs 차등 크기 조절

💜 전단


3️⃣ 복합 변환

💜 복합 변환

  • 크기조절(S1) 후, 결과 물체를 회전(R1)한 후, 다시 크기조절(S2)
    • P' = S2ㆍR1ㆍS1ㆍP
    • 행렬 곱셈의 순서에 유의
      • 배치 순서 역순, 계산 순서 순차
    • P' = CㆍP 복합행렬 C는 한번만 계산. 모든 정점에 적용
      • C = S2ㆍR1ㆍS1 (복합행렬)
  • 원점 기준 회전 vs 중심점 기준 회전
    • 중심점 기준 회전
      1. 피벗이 좌표계 원점에 일치하도록 물체를 이동한다.
      2. 물체를 원점 기준으로 축 주위로 회전한다.
      3. 회전된 물체를 ➀번에서 이동한 방향의 반대 방향으로 이동한다.

💜 이동 후 회전과 회전 후 이동

  • 교환법칙이 성립 X
    • 이동 & 회전 =/ 회적 & 이동
    • RᆞT와 TᆞR은 일반적으로 서로 다른 결과
  • 물체 인스턴스
    • 변환된 물체 하나하나를 원래 물체의 인스턴스라고 함
      1. 크기조절 → 2. 회전 → 3. 이동 순으로 변환
      • 이렇게 해야 계산량이 제일 줆
    • 물체 중심인 pivot과 원점이 일치한 상태 → 이를 일치시키기 위한 변환 불필요
    • C = TᆞRᆞS

💜 반사

  • 축을 기준으로 물체를 대칭적으로 반사시키는 변환 

💜 y=x 기준의 반사

  • 복합 변환

💜 구조 왜곡 변환

  • 테이퍼링
    • z에 따라 x, y의 크기조절
  • 휨(Bending)
    • 축을 따라 물체가 휨
  • 비틀림(Twisting)
    • z에 따라 회전각 증가

💜 변환의 분류

  • 체 변환
    • 이동 변환, 회전 변환
    • 물체 자체의 모습은 불변
  • 유사 변환
    • 강체 변환 + 균등 크기조절 변환, 반사 변환
    • 물체면 사이의 각이 유지
      • 변의 크기는 변하지만 각은 유지
    • 물체 내부 정점 간의 거리가 일정 비율로 유지
  • 어파인 변환
    • 유사 변환 + 차등 크기 조절 변환, 전단 변환
    • 물체의 타입이 유지
      • 직선→직선, 다각형→다각형, 곡면→곡면
      • 평행선 보존
      • 변환 행렬의 마지막 행 항상 (0, 0, 0, 1)
  • 원근 변환 (안배움 걍 대충 알기)
    • 평행선이 만남
      • 소실점이 생김
    • 직선이 직선으로 유지
    • 변환 행렬의 마지막 행이 (0, 0, 0, 1) 아님
  • 선형 변환
    • 어파인 변환 + 원근 변환
    • 선형 조합으로 표시되는 변환
    • x' = ax + by + cz에서 x'는 x, y, z 라는 변수를 각각 상수 배 한 것을 더한 것

💻 Reference

 

IT CookBook, OpenGL로 배우는 컴퓨터 그래픽스

그래픽스의 이론적 요소, 수학적 요소, 프로그램적 요소를 조합시켜 내용을 전개하고 있으며, OpenGL의 그래픽 파이프라인 처리 순서에 입각하여 좌표계 변환, 조명과 음영, 텍스쳐 등 컴퓨터 그

m.hanbit.co.kr