게임수학
-
*인프런 강의를 듣고 공부한 글입니다. 1. 깊이 버퍼(Depth Buffer) 깊이 버퍼(Depth Buffer)는 카메라로부터 얼마나 깊은 곳에 있는지는 파악할 수 있는 데이터라고 할 수 있습니다. 3차원 공간에서 다수의 물체들을 그릴 때, 그리는 순서를 고려하지 않으면 어떤 물체가 앞에 있고 뒤에 있는지 구분할 수가 없습니다. 앞에 있어야 할 물체(1)가 먼저 그려지고, 뒤에 있어야 할 물체(2)가 나중에 그려지면, 사실상 우리 눈으로 봤을 때는 (1) 물체가 (2) 뒤에 있는 것처럼 보이기 때문이죠. 이러한 문제가 발생하는 이유는 각 물체마다 카메라로부터 얼만큼 뒤에 있는지에 대한 기준치가 없기 때문입니다. 이러한 기준치를 정하기 위해 깊이 버퍼라는 것을 도입했으며, 이 깊이 버퍼 값에 따라 뒤에..
[게임 수학] #21 | 깊이 버퍼(Depth Buffer)*인프런 강의를 듣고 공부한 글입니다. 1. 깊이 버퍼(Depth Buffer) 깊이 버퍼(Depth Buffer)는 카메라로부터 얼마나 깊은 곳에 있는지는 파악할 수 있는 데이터라고 할 수 있습니다. 3차원 공간에서 다수의 물체들을 그릴 때, 그리는 순서를 고려하지 않으면 어떤 물체가 앞에 있고 뒤에 있는지 구분할 수가 없습니다. 앞에 있어야 할 물체(1)가 먼저 그려지고, 뒤에 있어야 할 물체(2)가 나중에 그려지면, 사실상 우리 눈으로 봤을 때는 (1) 물체가 (2) 뒤에 있는 것처럼 보이기 때문이죠. 이러한 문제가 발생하는 이유는 각 물체마다 카메라로부터 얼만큼 뒤에 있는지에 대한 기준치가 없기 때문입니다. 이러한 기준치를 정하기 위해 깊이 버퍼라는 것을 도입했으며, 이 깊이 버퍼 값에 따라 뒤에..
2023.12.07 -
*인프런 강의를 듣고 공부한 글입니다. 1. 원근 투영 변환(Perspective Projection Transformation) 맛있는 음식이 나왔을 때, 카페에 가서 디저트와 음료를 시켰을 때 등등 일상 생활 속에서 우리는 많은 순간 카메라로 사진을 찍곤 합니다. 하지만, 현실 세계는 3차원이고 카메라로 찍게 되는 사진은 2차원인데 어떻게 우리가 이질감을 느끼지 않고 있는 사실 그대로 받아들일 수 있는 걸까요? 바로 원근감이 형성되었기 때문입니다. 이에 따라, 가상 세계를 만들고 있는 우리 또한 이 원근감을 형성해주는 작업을 해줘야 한다는 의미가 되며, 오늘은 이러한 작업에 대한 원근투영 변환을 알아보는 시간을 가지도록 하겠습니다. 원근 투영 변환의 원리 3차원 공간은 3개의 축이 서로 직교하는 형태..
[게임 수학] #20 | 원근 투영(Perspective Projection)*인프런 강의를 듣고 공부한 글입니다. 1. 원근 투영 변환(Perspective Projection Transformation) 맛있는 음식이 나왔을 때, 카페에 가서 디저트와 음료를 시켰을 때 등등 일상 생활 속에서 우리는 많은 순간 카메라로 사진을 찍곤 합니다. 하지만, 현실 세계는 3차원이고 카메라로 찍게 되는 사진은 2차원인데 어떻게 우리가 이질감을 느끼지 않고 있는 사실 그대로 받아들일 수 있는 걸까요? 바로 원근감이 형성되었기 때문입니다. 이에 따라, 가상 세계를 만들고 있는 우리 또한 이 원근감을 형성해주는 작업을 해줘야 한다는 의미가 되며, 오늘은 이러한 작업에 대한 원근투영 변환을 알아보는 시간을 가지도록 하겠습니다. 원근 투영 변환의 원리 3차원 공간은 3개의 축이 서로 직교하는 형태..
2023.12.06 -
*인프런 강의를 듣고 공부한 글입니다. *여기에 나오는 예시들은 오른손 좌표계에 Y-up 체계를 기준으로 합니다. 1. 3차원 공간 왼손 좌표계와 오른손 좌표계 2차원 공간은 \(x, \ y\) 축 2개만 사용하면 간단하게 구현할 수 있었는데, 3차원 공간같은 경우에는 축(\(z\))이 하나 더 늘어나게 됩니다. 3개의 축으로 구성된 3차원 공간을 어떻게 설계하는지에 따라, 앞으로 전개할 수학식이나 응용 프로그램의 사용 방식이 달라지게 되므로, 이 체계를 확실하게 잡는 것부터 먼저 시작해야 합니다. 이러한 체계에는 왼손 좌표계와 오른손 좌표계가 있습니다. 일반적으로 모니터를 바라봤을 때, 오른쪽을 \(x\) 축, 위쪽을 \(y\) 축으로 고정해두는 편인데, 이 나머지 \(z\) 축이 모니터 안 쪽 너머로..
[게임 수학] # 17 | 3차원 공간*인프런 강의를 듣고 공부한 글입니다. *여기에 나오는 예시들은 오른손 좌표계에 Y-up 체계를 기준으로 합니다. 1. 3차원 공간 왼손 좌표계와 오른손 좌표계 2차원 공간은 \(x, \ y\) 축 2개만 사용하면 간단하게 구현할 수 있었는데, 3차원 공간같은 경우에는 축(\(z\))이 하나 더 늘어나게 됩니다. 3개의 축으로 구성된 3차원 공간을 어떻게 설계하는지에 따라, 앞으로 전개할 수학식이나 응용 프로그램의 사용 방식이 달라지게 되므로, 이 체계를 확실하게 잡는 것부터 먼저 시작해야 합니다. 이러한 체계에는 왼손 좌표계와 오른손 좌표계가 있습니다. 일반적으로 모니터를 바라봤을 때, 오른쪽을 \(x\) 축, 위쪽을 \(y\) 축으로 고정해두는 편인데, 이 나머지 \(z\) 축이 모니터 안 쪽 너머로..
2023.11.30 -
*인프런 강의를 듣고 공부한 글입니다. 1. 카메라(Camera) 게임이란 콘텐츠는 사용자가 스테이지를 만드는 것이 아니라, 게임을 플레이하는 사람을 대변하는 아바타가 게임 공간(월드 공간)을 탐험하는 형태로 구성되는 것이 일반적입니다. 아바타를 중심으로 시야 영역 내의 모습들이 모니터 화면에 표시하는 형태로 구현되며, 이는 월드 공간의 일부분을 화면에 표현하는 방식으로 구현됩니다. 이러한 내용을 구현하기 위해 아바타가 보는 시야를 우리가 볼 수 있게 어떤 가상의 카메라가 필요하고, 카메라에 보이는 모든 물체들이 카메라 시야를 기준으로 재해석되어 렌더링 되어야 합니다. 즉, 카메라에 보이는 물체들은 카메라를 기준으로 월드 공간에 재배치되어야 하고, 이러한 공간을 뷰 공간(View Space)라고 합니다...
[게임 수학] #16 | 뷰 공간(View Space)*인프런 강의를 듣고 공부한 글입니다. 1. 카메라(Camera) 게임이란 콘텐츠는 사용자가 스테이지를 만드는 것이 아니라, 게임을 플레이하는 사람을 대변하는 아바타가 게임 공간(월드 공간)을 탐험하는 형태로 구성되는 것이 일반적입니다. 아바타를 중심으로 시야 영역 내의 모습들이 모니터 화면에 표시하는 형태로 구현되며, 이는 월드 공간의 일부분을 화면에 표현하는 방식으로 구현됩니다. 이러한 내용을 구현하기 위해 아바타가 보는 시야를 우리가 볼 수 있게 어떤 가상의 카메라가 필요하고, 카메라에 보이는 모든 물체들이 카메라 시야를 기준으로 재해석되어 렌더링 되어야 합니다. 즉, 카메라에 보이는 물체들은 카메라를 기준으로 월드 공간에 재배치되어야 하고, 이러한 공간을 뷰 공간(View Space)라고 합니다...
2023.11.29 -
*인프런 강의를 듣고 공부한 글입니다. 1. 로컬 공간과 월드 공간 로컬 공간(Local Space) "하나의 물체를 그리는 데 사용하는 공간" 입니다. 어떤 하나의 물체는 여러 개의 점들이 모여서 형성되는데, 이러한 물체를 그리기 위해서는 원점을 중심으로 각 점의 상대적인 위치를 지정해야 합니다. 2차원 평면을 기준으로 하게 된다면 원점은 \((0, \ 0, \ 1)\) 이 될 것이고, 물체를 형성하는 점들은 이 원점을 기준으로 상대적인 위치에 배치되겠지요. 즉, 물체가 곧 세상의 중심인 셈입니다. 월드 공간(World Space) "게임 스테이지를 구성하는 데 사용되는 별도의 공간"입니다. 게임은 하나의 공간에 여러 물체가 배치되어 있고, 주인공이 움직이면서 공간을 탐험해야 합니다. 그런데 로컬 공간..
[게임 수학] #15 | 게임 엔진(Game Engine)*인프런 강의를 듣고 공부한 글입니다. 1. 로컬 공간과 월드 공간 로컬 공간(Local Space) "하나의 물체를 그리는 데 사용하는 공간" 입니다. 어떤 하나의 물체는 여러 개의 점들이 모여서 형성되는데, 이러한 물체를 그리기 위해서는 원점을 중심으로 각 점의 상대적인 위치를 지정해야 합니다. 2차원 평면을 기준으로 하게 된다면 원점은 \((0, \ 0, \ 1)\) 이 될 것이고, 물체를 형성하는 점들은 이 원점을 기준으로 상대적인 위치에 배치되겠지요. 즉, 물체가 곧 세상의 중심인 셈입니다. 월드 공간(World Space) "게임 스테이지를 구성하는 데 사용되는 별도의 공간"입니다. 게임은 하나의 공간에 여러 물체가 배치되어 있고, 주인공이 움직이면서 공간을 탐험해야 합니다. 그런데 로컬 공간..
2023.11.28 -
*인프런 강의를 듣고 공부한 글입니다. 1. 무게중심 좌표의 활용 무게중심 좌표를 구하고, 각 좌표값의 범위를 모두 0 이상 1 이하로 설정한다면 삼각형 내부에 있는 점이라는 걸 보장할 수 있다는 걸 알아봤습니다. 이러한 용도 외에도 무게중심 좌표를 통해 생성한 점이 삼각형 내부에서 해당 픽셀이 3개의 점 중에 얼만큼의 영향을 받고 있는지에 대한 영향력을 나타내는 데에도 유용하게 사용됩니다. 즉, 세 점에 대해 영향을 얼만큼 받는지에 대한 가중치들을 통해 삼각형 내부 색상을 칠하는 데 응용할 수 있습니다. 삼각형 칠하기 무게중심 좌표를 생성하는 방정식, \( P' = s \cdot P_1 + t \cdot P_2 + (1-s-t) \cdot P_3 \) 에서 각 계수들은 가중치 값을 나타냅니다. 만약 \..
[게임 수학] #14 | 텍스처 매핑(Texture Mapping)*인프런 강의를 듣고 공부한 글입니다. 1. 무게중심 좌표의 활용 무게중심 좌표를 구하고, 각 좌표값의 범위를 모두 0 이상 1 이하로 설정한다면 삼각형 내부에 있는 점이라는 걸 보장할 수 있다는 걸 알아봤습니다. 이러한 용도 외에도 무게중심 좌표를 통해 생성한 점이 삼각형 내부에서 해당 픽셀이 3개의 점 중에 얼만큼의 영향을 받고 있는지에 대한 영향력을 나타내는 데에도 유용하게 사용됩니다. 즉, 세 점에 대해 영향을 얼만큼 받는지에 대한 가중치들을 통해 삼각형 내부 색상을 칠하는 데 응용할 수 있습니다. 삼각형 칠하기 무게중심 좌표를 생성하는 방정식, \( P' = s \cdot P_1 + t \cdot P_2 + (1-s-t) \cdot P_3 \) 에서 각 계수들은 가중치 값을 나타냅니다. 만약 \..
2023.11.28 -
인프런 강의를 듣고 공부한 글입니다. 1. 벡터의 내적(Dot Product)이란? 벡터에는 벡터와 벡터의 덧셈, 벡터와 스칼라의 곱셈과 같은 연산을 통해 새로운 벡터를 생성해낼 수 있는 시스템이 존재합니다. 하지만 이것만으로는 부족하여 좀 더 응용할 수 있는 연산들을 수학자들이 추가하게 되었는데, 그것이 바로 벡터의 내적과 외적입니다. 여기에서는 내적에 대해서만 알아보도록 하겠습니다. 내적 연산 벡터의 내적 연산은 벡터 내에서 같은 요소들끼리 서로 곱한 후, 더해주는 연산입니다. 예를 들어, \(v_1 = (a, b) \) 와 \(v_2 = (c, d) \) 와 같은 2차원 벡터를 서로 내적한다고 하면, 두 벡터의 대응되는 각 요소인 \(a\) 와 \(c\) , 그리고 \(b\) 와 \(d\) 를 다음..
[게임 수학] #11 | 내적(Dot Product)인프런 강의를 듣고 공부한 글입니다. 1. 벡터의 내적(Dot Product)이란? 벡터에는 벡터와 벡터의 덧셈, 벡터와 스칼라의 곱셈과 같은 연산을 통해 새로운 벡터를 생성해낼 수 있는 시스템이 존재합니다. 하지만 이것만으로는 부족하여 좀 더 응용할 수 있는 연산들을 수학자들이 추가하게 되었는데, 그것이 바로 벡터의 내적과 외적입니다. 여기에서는 내적에 대해서만 알아보도록 하겠습니다. 내적 연산 벡터의 내적 연산은 벡터 내에서 같은 요소들끼리 서로 곱한 후, 더해주는 연산입니다. 예를 들어, \(v_1 = (a, b) \) 와 \(v_2 = (c, d) \) 와 같은 2차원 벡터를 서로 내적한다고 하면, 두 벡터의 대응되는 각 요소인 \(a\) 와 \(c\) , 그리고 \(b\) 와 \(d\) 를 다음..
2023.11.25 -
인프런 강의를 듣고 공부한 글입니다. 1. 역행렬(Inverse Matrix)의 개념 역행렬이라고 하는 것은 역함수(Inverse Function)에 해당하는 개념이며, 행렬이란 것도 결국에는 선형 변환의 큰 관점에서 함수와 동일하기에, 역함수와 동일한 개념이라고 볼 수 있습니다. 잠깐 다시 이전 개념들을 복습해 보면, 역함수라는 것은 공역에서 정의역으로 대응되는 관계를 나타낸 함수이며, 오로지 전단사 함수일 때에만 역함수가 존재함을 보장받는다고 하였습니다. 이때, 어떤 전단사 함수와 그 역함수와의 합성 함수는 항등 함수가 된다는 걸 봤었죠. /* 공역으로 넘어간 대응 관계가 다시 정의역으로 넘어가면서, 원래 자기 자신에게로 대응되기 때문이었습니다. */ $$ f \circ f^{-1} = i $$ 항등..
[게임 수학] #9 | 역행렬(Inverse Matrix)인프런 강의를 듣고 공부한 글입니다. 1. 역행렬(Inverse Matrix)의 개념 역행렬이라고 하는 것은 역함수(Inverse Function)에 해당하는 개념이며, 행렬이란 것도 결국에는 선형 변환의 큰 관점에서 함수와 동일하기에, 역함수와 동일한 개념이라고 볼 수 있습니다. 잠깐 다시 이전 개념들을 복습해 보면, 역함수라는 것은 공역에서 정의역으로 대응되는 관계를 나타낸 함수이며, 오로지 전단사 함수일 때에만 역함수가 존재함을 보장받는다고 하였습니다. 이때, 어떤 전단사 함수와 그 역함수와의 합성 함수는 항등 함수가 된다는 걸 봤었죠. /* 공역으로 넘어간 대응 관계가 다시 정의역으로 넘어가면서, 원래 자기 자신에게로 대응되기 때문이었습니다. */ $$ f \circ f^{-1} = i $$ 항등..
2023.11.23