Computer Sciences(21)
-
[게임 수학] #21 | 깊이 버퍼(Depth Buffer)
*인프런 강의를 듣고 공부한 글입니다. 1. 깊이 버퍼(Depth Buffer)`깊이 버퍼(Depth Buffer)`는 카메라로부터 얼마나 깊은 곳에 있는지는 파악할 수 있는 데이터라고 할 수 있습니다. 3차원 공간에서 다수의 물체들을 그릴 때, 그리는 순서를 고려하지 않으면 어떤 물체가 앞에 있고 뒤에 있는지 구분할 수가 없습니다. 앞에 있어야 할 물체(1)가 먼저 그려지고, 뒤에 있어야 할 물체(2)가 나중에 그려지면, 사실상 우리 눈으로 봤을 때는 (1) 물체가 (2) 뒤에 있는 것처럼 보이기 때문이죠. 이러한 문제가 발생하는 이유는 각 물체마다 카메라로부터 얼만큼 뒤에 있는지에 대한 기준치가 없기 때문입니다. 이러한 기준치를 정하기 위해 깊이 버퍼라는 것을 도입했으며, 이 깊이 버퍼 값에 ..
2023.12.07 -
[게임 수학] #20 | 원근 투영(Perspective Projection)
*인프런 강의를 듣고 공부한 글입니다. 1. 원근 투영 변환(Perspective Projection Transformation) 맛있는 음식이 나왔을 때, 카페에 가서 디저트와 음료를 시켰을 때 등등 일상 생활 속에서 우리는 많은 순간 카메라로 사진을 찍곤 합니다. 하지만, 현실 세계는 3차원이고 카메라로 찍게 되는 사진은 2차원인데 어떻게 우리가 이질감을 느끼지 않고 있는 사실 그대로 받아들일 수 있는 걸까요? 바로 원근감이 형성되었기 때문입니다. 이에 따라, 가상 세계를 만들고 있는 우리 또한 이 원근감을 형성해주는 작업을 해줘야 한다는 의미가 되며, 오늘은 이러한 작업에 대한 원근투영 변환을 알아보는 시간을 가지도록 하겠습니다. 원근 투영 변환의 원리3차원 공간은 3개의 축이 서로 직교하는..
2023.12.06 -
[게임 수학] #19 | 벡터의 외적(Cross Product)
*인프런 강의를 듣고 공부한 글입니다. 1. 벡터의 외적(Cross Product)벡터의 외적 연산은 3차원 공간에서만 사용 가능한 연산으로, 스칼라 값을 결과로 내뱉었던 내적과 달리, 외적은 3차원 벡터를 결과로 배출합니다. 이러한 벡터의 외적 연산은 다른 축 요소들로만 연산이 이루어진다는 특징이 있습니다. 다음과 같이 3차원 벡터 \(u, \ v\) 가 있다고 하면, $$ u = (u_x, \ u_y, \ u_z), \ \ v = (v_x, \ v_y, \ v_z) $$ 이 두 벡터에 대한 외적 연산 결과는 다음과 같습니다. $$ u \times v = (u_y v_z - v_y u_z, \ u_z v_x - v_z u_x, \ u_x v_y - v_x u_y)$$ 위 식을 보면, \( (x, ..
2023.12.05 -
[게임 수학] #18 | 오일러 각(Euler angle)
*인프런 강의를 듣고 공부한 글입니다. 1. 회전 행렬 구현에서의 문제점3차원 공간에는 세 개의 표준 기저 벡터 \(e_1\), \(e_2\), \(e_3\) 가 존재합니다. 이 세 개의 기저 벡터를 통해 회전을 구현하려면, 서로 직교하고 있던 원래 상태를 그대로 유지한 채로 돌아가야 하고, 변화된 기저 벡터들이 가지고 있는 값(\(x_{local}, \ y_{local}, \ z_{local}\)) 을 통해 회전 행렬을 만들 수 있습니다. 그런데 이 방법은 불편한 점이 있습니다. 예를 들어, 우리가 어떤 물체를 Y축으로 30도 회전하고 싶다고 할 때, Y축으로 30도 회전했을 때의 각 로컬축의 값이 얼마인지 구해야 회전이 가능하다는 이야기가 됩니다. 나는 30도 회전한 결과를 얻고 싶은데, 그러..
2023.12.04 -
[게임 수학] # 17 | 3차원 공간
*인프런 강의를 듣고 공부한 글입니다. *여기에 나오는 예시들은 오른손 좌표계에 Y-up 체계를 기준으로 합니다. 1. 3차원 공간왼손 좌표계와 오른손 좌표계2차원 공간은 \(x, \ y\) 축 2개만 사용하면 간단하게 구현할 수 있었는데, 3차원 공간같은 경우에는 축(\(z\))이 하나 더 늘어나게 됩니다. 3개의 축으로 구성된 3차원 공간을 어떻게 설계하는지에 따라, 앞으로 전개할 수학식이나 응용 프로그램의 사용 방식이 달라지게 되므로, 이 체계를 확실하게 잡는 것부터 먼저 시작해야 합니다. 이러한 체계에는 왼손 좌표계와 오른손 좌표계가 있습니다. 일반적으로 모니터를 바라봤을 때, 오른쪽을 \(x\) 축, 위쪽을 \(y\) 축으로 고정해두는 편인데, 이 나머지 \(z\) 축이 모니터 안 쪽 너머로..
2023.11.30 -
[게임 수학] #16 | 뷰 공간(View Space)
*인프런 강의를 듣고 공부한 글입니다. 1. 카메라(Camera)게임이란 콘텐츠는 사용자가 스테이지를 만드는 것이 아니라, 게임을 플레이하는 사람을 대변하는 아바타가 게임 공간(월드 공간)을 탐험하는 형태로 구성되는 것이 일반적입니다. 아바타를 중심으로 시야 영역 내의 모습들이 모니터 화면에 표시하는 형태로 구현되며, 이는 월드 공간의 일부분을 화면에 표현하는 방식으로 구현됩니다. 이러한 내용을 구현하기 위해 아바타가 보는 시야를 우리가 볼 수 있게 어떤 가상의 카메라가 필요하고, 카메라에 보이는 모든 물체들이 카메라 시야를 기준으로 재해석되어 렌더링 되어야 합니다. 즉, 카메라에 보이는 물체들은 카메라를 기준으로 월드 공간에 재배치되어야 하고, 이러한 공간을 뷰 공간(View Space)라고 합니..
2023.11.29