Make Unreal REAL.
article thumbnail
리소스 저장소

이득우의 게임 수학 게임 오브젝트에 트랜스폼을 설정하는 작업은, 모델링 행렬을 사용해 각 게임 오브젝트에 부여된 로컬 공간 정보를 월드 공간 정보로 변환하는 것이다. 다수의 게임 오브젝트가 동일한 메시를 사용할 때, 오브젝트마다 용량이 큰 메시 정보를 가지면 메모리 낭비가 심할 것이다. 그래서 리소스는 여러 게임 오브젝트들이 함께 사용할 수 있는 공유 자원 형태로 관리하는 것이 바람직하다. 게임 엔진이 씬과 무관하게 리소스를 모아두는 저장소를 리소스 저장소(Resource repository)라고 한다. 리소스는 (키, 데이터)로 구성되며, 게임 오브젝트에는 메모리 낭비를 줄이기 위해 데이터를 가리키는 키 값만 저장하도록 한다. 상용 게임 엔진의 경우 별도의 리소스 저장소 시스템을 제공하지만, 책의 예제..

article thumbnail
로컬 공간과 로컬 축

이득우의 게임 수학 하나의 물체를 표현하기 위한 메시 데이터에는 자신만의 공간에서 물체를 구성하는 정점의 위치 정보가 저장된다. 물체의 정보를 담기 위해 부여한 자신만의 공간을 로컬 공간(Local space)이라고 한다. 여러 물체를 모아 게임 콘텐츠를 만드는 데 사용되는 새로운 공간을 월드 공간(World space)이라고 한다. 물체를 기준으로 로컬 공간에서 설정된 방향 정보를 로컬 축(Local axis)이라고 한다. 로컬 축 정보는 오직 회전에만 영향을 받는다. 회전 변환에서 로컬 공간의 표준 기저 벡터 e₁(1, 0), e₂(0, 1)는 r(cosθ, sinθ), u(-sinθ, cosθ)로 변한된다. 따라서, 모델링 행렬 M은 삼각함수 대신 로컬 축 정보를 사용해 계산할 수도 있다. 책의 예..

article thumbnail
모델링 행렬의 설계

이득우의 게임 수학 게임 공간인 씬은 액터(또는 게임 오브젝트)의 집합으로 구성된다. 각 액터는 (위치, 회전, 크기)의 트랜스폼 정보를 갖는다. 책의 예제인 CK소프트렌더러의 씬은 순차 탐색(Sequential search)에 유리한 vector를 활용해, GameObject의 목록으로 정의된다. 렌더링 과정에서 모든 게임 오브젝트의 순차 탐색이 빈번히 사용되기 때문이다. // 책의 예제인 CK소프트렌더러에 정의된 씬 class GameEngine { public: const vector& GetScene() const { return _Scene; } vector::const_iterator SceneBegin() const { return _Scene.begin(); } ve..

article thumbnail
텍스처 매핑과 UV

이득우의 게임 수학 메시에 이미지를 입히기 위해 변환된 데이터를 텍스처(Texture)라고 하며, 메시에 이미지를 입히는 작업을 텍스처 매핑(Texture mapping)이라고 한다. 가로 * 세로 픽셀 수를 갖는 이미지와 달리, 텍스처의 크기는 원본 해상도에 관계없이 1.0 * 1.0로 정규화된다. 따라서 렌더링 과정에서 텍스처는 [0.0, 1.0] 범위로 구성된 2차원 좌표계를 사용한다. 텍스처를 구성하는 이 2차원 좌표계를 UV 좌표계라고 한다. 2차원 벡터로 구성되며 가로 정보는 U, 세로 정보는 V로 지정된다. UV 매핑은 텍스처 매핑 과정의 일부이다. 1. 메시를 평면으로 펼친(해체한)다. 2. 펼친 도면(UV 맵)에 텍스처를 입힌다. 3. 텍스처가 입혀진 UV 맵을 메시에 다시 입혀준다. 메..

article thumbnail
무게 중심 좌표의 계산

이득우의 게임 수학 세 점의 아핀 결합 P' = sP₁ + tP₂ + (1 - s - t)P₃의 스칼라 s, t, 1 - s - t는 모두 실수이므로, 이들을 묶어 하나의 3차원 벡터를 생성할 수 있다. (s, t, 1 - s - t) 아핀 결합의 스칼라를 묶어 만든 좌표를 무게 중심 좌표(Barycentric coordinate)라고 한다. 무게 중심 좌표를 구성하는 스칼라 값이 하나라도 [0, 1] 범위를 벗어나면, 아핀 결합으로 생성된 점은 삼각형 외부에 있다고 할 수 있다. 아핀 결합으로 생성되는 점 P'(s, t, 1 - s - t)가 삼각형 내부에 있는지 확인하기 위해 수식을 유도해본다. w = su + tv w·u = (su + tv)·u = s(u·u) + t(u·v) w·v = (su +..

article thumbnail
메시(Mesh)

이득우의 게임 수학 삼각형을 중심으로 물체에 관련된 정보를 기록한 데이터를 메시라고 한다. 3차원 공간의 물체를 표현할 때 사용되는 다각형을 폴리곤(Polygon)이라고 하고, 삼각형이 많이 사용된다. 메시는 삼각형 폴리곤으로 구성되고, 폴리곤은 점으로 구성되므로, 결국 메시는 다수의 점으로 구성된다. 물체를 표현하는 데 활용할 수 있는 색상이나 방향 같은 부가 정보를 담은 특별한 점을 정점(Vertex)라고 한다. 컴퓨터가 메시를 읽어 물체를 표현할 때, 정점 정보를 빠르게 읽기 위해 메모리에 일렬로 나열된 정점 버퍼(Vertex buffer)로 정점을 관리한다. 이때 정점의 정보만으로는 어떤 세 정점이 삼각형 폴리곤을 이루는지 알 수 없으므로, 인덱스 버퍼(Index buffer)를 추가로 관리한다...

검색 태그