[게임수학의 이해 이득우 교수님 강의 정리] 4. 물체의 수학 Ⅲ : 내적과 외적

Park Sejin·2021년 6월 3일
2
post-thumbnail

게임 컨텐츠가 만들어지는 과정

  1. 게임에서 사용하는 각 물체를 기획
  2. 로컬 공간 : 개별 물체의 공간
    2-1. 그 개별 물체를 표현하기 위해서 로컬 공간을 설정
    2-2. 그 로컬 공간 안에서 물체의 모델링을 진행(맥스, 마야, 블렌더와 같은 소프트웨어를 사용)
    2-3. 로컬 공간에서 모델링한 결과물을 메시(Mesh) 데이터로 변환
  3. 월드 공간 : 물체들이 모인 게임의 공간
    3-1. 언리얼이나 유니티와 같은 게임 엔진으로 불러옴
    3-2. 게임 엔진에서 메시 데이터는 세 개의 정점으로 구성된 삼각형으로 분해됨
    3-3. 게임 제작자는 메시 데이터를 사용해서 게임 세상을 구축
  4. 카메라 공간 : 플레이어가 보는 공간
    4-1. 월드 공간 구성이 완료되면 플레이어를 월드에 배치하고 캐릭터에 카메라를 배치
    4-2. 이때 카메라에 보여지는 영역에 속한 물체만 걸러내는 작업을 함(프러스텀 컬링(Frustum Culling)).
    - 프러스텀 컬링 : 게임에서 60프레임을 달성하기 위해 반드시 구현해야 할 기본적인 최적화 기법

  1. 최종 렌더링 진행
    5-1. 물체의 메시 데이터를 분석해서 그래픽 카드에 넘겨줌.
    5-2. 순서대로 그려서 최종화면을 완성.

게임 로직과 렌더링 로직

  • 게임 로직 : 게임이 시작되면 프레임마다 월드 공간이 사용자 입력과 지정된 로직에 따라서 시뮬레이션 됨.
  • 렌더링 로직 : 해당 프레임에 수행할 시뮬레이션이 완성되면 카메라에 보여지는 물체만 걸러내서 렌더링을 진행.
  • 앞에서 설명한 공간의 수학과 점의 수학은 렌더링 로직에서 중요하게 사용. 하지만 게임 로직 단계에서는 점에 대한 수학을 사용할 일이 별로 없음.
  • 게임에서 물체가 이동하는 것은 물체를 구성하는 점이 이동하는 것이 아니고 물체를 담는 공간이 이동하는 것임. 따라서 이 때는 점을 다루지 않고 평행이동한 원점과 그 공간을 구성하는 중심축의 변환에 대해서만 생각한다.

트랜스폼(Transform)

  • 공간의 변환을 설정하는 것을 트랜스폼이라 함.
  • 트랜스폼의 최종 정보는 내부적으로 행렬로 구성
  • 하지만 게임 로직에서는 행렬의 정보를 사용하지 않고 크기, 위치, 회전의 3가지 데이터로 쪼개서 관리함.
  • 즉 게임 로직에서는 크기, 위치, 회전에 대한 정보만 관리하면 이 다음에 진행하는 렌더링 로직에서 이를 기반으로 행렬을 구성하여 고속으로 필요한 변환을 한번에 처리함

벡터에 대한 수학

  • 벡터에 대한 수학이란 개별 물체가 가지는 크기, 위치, 회전에 대한 정보를 계산하는 사용하는 수학.
  • 대부분의 게임 엔진을 사용해 게임을 제작하는 작업은 이 세 가지 종류의 데이터를 정하는 작업이 대부분이기 때문에 실질적인 게임 개발에 있어서는 벡터에 대한 수학을 주로 사용.

벡터의 네 가지 연산

  • 스칼라(Scalar)의 짧은 정의
    - 사칙 연산이 가능한 수 집합의 원소
    - 예) 실수

  • 벡터와 벡터의 덧셈은 위 그림과 같이 각 벡터의 크기만큼 평행이동함.

  • 벡터와 스칼라의 곱셈은 벡터의 기울기를 유지한 상태에서 원점으로부터 크기를 변화시킴.

  • 다음과 같이 두 개의 기본연산을 조합하면 새로운 벡터를 생성할 수 있음.
  • 이것을 선형 조합이라고 함.
  • 평행하지 않은 두 벡터를 조합하면 평면상의 모든 벡터를 생성할 수 있음.
  • 벡터의 두 기본 연산은 벡터의 생성 시스템에 사용하는 선형 조합을 구성하는 필수 연산임.

표준 기저 벡터(Standard Basis Vector)

벡터의 내적과 외적

  • 위의 두 가지 기본 연산으로 물체를 표현하기는 굉장히 부족함.
  • 그래서 벡터를 다양하게 응용할 수 있는 별도의 연산들을 사용함.
  • 그것이 바로 벡터의 내적과 외적임.
  • 벡터의 내적과 외적은 게임 로직에서부터 셰이더에 이르는 게임 제작의 전반적이 과정에 유용하게 사용되는 연산임.

  • 3차원 벡터의 내적 연산은 각 축의 요소를 곱한 다음에 이들을 더함.
  • 내적 공식은 컴퓨터가 굉장히 빠르게 처리할 수 있음.
  • 내적을 사용하면 두 벡터가 직교하고 있는지
  • 물체가 나의 위치에서 앞쪽에 있는지 뒤쪽에 있는지 판별이 가능함.
  • 해당 시야각 영역 안에 물체가 존재하는지 판별이 가능함.

  • 또 다른 중요한 용도로 어떤 벡터를 다른 벡터에 투영시킬 때 주로 사용함.

  • 투영공식에서부터 평면의 방정식이 유도되고 이 평면들이 모여서 절두체 영역을 만듬.

  • 벡터의 내적 연산은 어떤 차원에서든지 계산이 가능하지만 벡터의 외적 연산은 3차원 벡터에서만 가능.
  • 벡터의 외적 연산은 두 벡터의 서로 다른 요소만 조합에서 사용하는 특징을 가짐.

  • 내적이 직교성을 판별하는데 사용했다면 외적은 평행성을 판별하는데 사용함.

  • 내적은 앞뒤를 판별하는데 사용하는 반면 외적은 좌우를 판별하는데 사용함.

  • 평행하지 않는 두 개의 벡터의 평면에 수직인 벡터를 만들어 내는데 벡터의 외적이 주로 사용됨.
  • 즉 외적을 사용하여 평면의 방향을 파악할 수 있음.

  • 이러한 외적 연산 과정을 계속 거치면 3차원 공간을 구성하는 세 가지 축을 계산할 수 있음.

정리

  • 내적과 외적은 상호보완적인 성질을 가짐.

출처

게임 수학의 이해 강의 - 이득우 교수님

유튜브 링크

0개의 댓글