13.1 절두체 컬링 절두체 컬링(Frustum culling) : 절두체의 영역 밖에 있는 게임 오브젝트를 파악하고 걸러내는 기능 평면의 방정식 하나의 평면을 정의하려면 최소 3개의 점이 필요하다. 3차원 공간의 평면은 앞면과 뒷면이 존재하기 때문에 이를 구분할 수 있는 정보도 필요하다. 법선 벡터 n과 평면위의 점 P_0 에서 점 P로 향하는 벡터를 내적해보자. n·(P - P_0) = (a,b,c)·(x-x_0, y-y_0, z-z_0) = 0 = ax + by + cz - (ax_0 + by_0 + cz_0) = 0 여기서 법선 벡터 (a,b,c)와 평면의 점(x_0, y_0, z_0)는 사전에 주어진 값이므로 -(ax_0 + by_0 + cz_0)는 미리 계산할수 있는 상수값 d로 치환한다. 이..
12.1 원근 투영 변환의 원리 투시 원근법(Perspective projection) : 눈에 보이는 상을 그대로 화폭에 담기 위해 시선을 한 점에 고정시키고, 고정된 점으로부터 화폭까지 곧게 뻗은 실을 활용한 화법이며 르네상스 시대에 창안된 기법 원근 투영 변환(Perspective projection transformation) : 우리 눈이 바라보는 방식으로 가상 공간을 변환하는 것 화각(Field of view) : 카메라가 바라보는 범위 투영 평면(Projection plane) : 모든 물체의 상이 맺히는 가상의 평면 초점 거리(Focal length) : 투영 평면의 위치를 지정하기 위해 설정한 카메라로 부터 투영 평면까지의 거리 NDC(Normalized device coordinate)..
11.1 벡터의 외적 3차원 벡터의 외적은 x기호를 사용한다. 3차원 벡터 u와 v의 외적 u x v는 다음과 같다 u = (u_x, u_y, u_z), v = (v_x, v_y, v_z) u x 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) 외적은 교환법칙이 성립하지 않는다. 외적은 결합법칙도 성립하지 않는다. 하지만 덧셈에 대한 분배법칙은 성립한다. 평행성 판별 동일한 벡터를 내적하면 벡터 크기를 제곱한 값이 나온다. 그러나 동일한 벡터를 외적하면 영벡터가 나온다. 또한 평행한 벡터를 외적해도 여벡터가 나온다. 이처럼 외적의 성질은 평행성을 판별하는 데 사용된다. 내적의 경우 두 벡터의 직교성을 판별하는 데 사용된다. 벡터 외적의 크기는..
시작하며 항상 크론탭(Crontab) 문법을 작성할 일이 있으면 햇갈려서 그때 그때 다시 찾아봤어야 했었다. 최근 공부 중에 쉽게 크론탭 문법을 작성해주는 사이트를 알게되어 기록해둔다. Crontab 이란 유닉스 및 리눅스 시스템에서 일정한 간격으로 반복적으로 작업을 실행하기 위해 사용되는 명령어이다. 백업, 리포트 생성과 같이 정기적인 잡업을 수행하기 위해 주로 사용한다. Cron expression 문법 Unix 기반 시스템 Cron expression ┌───────────── 분 (0 - 59) │ ┌───────────── 시 (0 - 23) │ │ ┌───────────── 일 (1 - 31) │ │ │ ┌───────────── 월 (1 - 12) │ │ │ │ ┌───────────── 요..
10.1 3차원 공간의 설계 3차원 공간을 설계하는 방법은 왼손 좌표계와 오른손 좌표계 크게 두가지로 구분된다. 왼손 좌표계는 내가 바라보는 정면이 +z축 이고 위가 +y, 오른쪽이 +x인 방향이다. 오른손 좌표계는 나한테 오는 방향(나의 뒤방향)이 +z 축이고, 위가 +y, 오른쪽이 +x인 방향이다. 왼손과 오른손은 z축의 방향차이로 확인할 수 있다. 10.2 3차원 공간의 트랜스폼 3차원 트랜스폼 체계는 2차원 공간의 트랜스폼에서 기저벡트가 하나더 증가했을 뿐이다. 이동 변환을 위해 한 차원 더 늘어난 4차원 공간을 사용한다. ┌ S_x 0 0 0 ┐ S = │ 0 S_y 0 0 │ │ 0 0 S_z 0 │ └ 0 0 0 1 ┘ ┌ 1 0 0 t_x ┐ T = │ 0 1 0 t_y │ │ 0 0 1 ..
Killercoda 소개 https://killercoda.com/ 설치없이 웹에서 쿠버네티스 실습 가능한 사이트 Latest Stable Kubernetes 버전 지원 마스터 노드 1개, 워커 노드 1개 60분 동안 실습 가능 그 외에 ubuntu, CKA, CKS, CKAD 등 도 실습 가능 Github, Gitlab, Google, Email 계정으로 가입 후 이용 Killercoda에서 Kubernetes 실습하기 Killercoda -> Playgrounds -> Kubernetes 접속 https://killercoda.com/playgrounds/scenario/kubernetes
9.1 게임 엔진의 구성요소 게임 엔진의 인터페이스는 게임 콘텐츠가 담기는 게임 공간을 설계하는 작업 공간과 게임 데이터를 관리하는 작업 공간으로 나뉜다. 게임 공간은 씬(Scene)혹은 레벨(Level)이라 부르며, 데이터는 리소스(Resource) 혹은 애셋(Asset)이라 부른다. 씬의 구조 게임 엔진은 개발자가 생성한 다양한 종류의 물체를 효과적으로 관리하기 위해 물체가 가져야 할 규격을 제시해주는데, 이를 게임오브젝트(GameObject) 또는 액터(Actor)라고 부른다. 게임 오브젝트는 게임 엔진에서 콘텐츠를 구성하는 기본 단위로 관리된다. 씬을 구성하는 게임 오브젝트는 게임 공간에 항상 존재해야 하기 때문에 언제나 공간 내 배치 정보를 가져야 한다. 게임 엔진은 게임 오브젝트의 배치 정보를..
8.1 세점의 결합 세점 P1, P2, P3 를 결합하는 경우 스칼라는 2개에서 3개로 늘어나는데 세 스칼라의 합은 1이 되어야 하므로 아핀 결합식은 다음과 같이 전개 된다. P` = s·P1 + t·P2 + (1-s-t)·P3 (P` - P3) = s(P1 - P3) + t(P2 - P3) //w = (P` - P3) //u = (P1 - P3) //v = (P2 - P3) 치환 w = s·u + t+v 아핀 결합식에서 스칼라 값을 [0,1] 범위로 제한하면 시작과 끝의 범위가 명확해지므로 도형이 만들어 진다. 아핀 결합에서 모든 스칼라 값을 [0,1] 범위로 한정한 결합을 컨벡스 결합(Convex combination)이라고 부른다. 선분이나 삼각형처럼 컨벡스 결합으로 만든 영역을 컨벡스 영역(Con..
Unreal Engine TTuple 개요 언리얼 엔진에서 TTuple을 사용하려 하는데 공식 가이드 문서도 없고(API 페이지만 있음) 마땅한 참고 예제가 없어 정리하고자 한다. Tuple은 2개이상의 값을 하나의 변수에 담기 위해 사용된다. 예제 // 선언과 초기화 TTuple TupleTest(1, TEXT("Test")); TTuple TupleTest2 = MakeTuple(2, TEXT("Test2")); //값 대입 TTuple TupleTest3; TupleTest3.Key = 3; TupleTest3.Value = TEXT("Test3"); TTuple TupleTest4; TupleTest4.Get() = 4; TupleTest4.Get() = TEXT("Test4"); TTuple T..
벡터 내적의 계산법과 내적이 가지는 성질을 알아보고 삼각함수와 어떤 연관성을 가지는지 알아보자 7.1 벡터의 내적 벡터의 내적(Dot product)은 같은 차원의 두 벡터가 주어졌을 때 벡터를 구성하는 각 성분을 곱한 후 이들을 더해 스칼라를 만들어내는 연산이다. u = (a,b) v = (c,d) u·v = a·c + b·d 내적의 성질 내적은 스칼라의 곱셈과 덧셈으로 구성되어 있으므로 교환법칙이 성립한다. 하지만 결과가 벡터가 아닌 스칼라로 나오는 성질로 인해 결합법칙은 성립하지 않는다. u·v = a·c + b·d v·u = c·a + d·b ∴ u·v = v·u u·(v·w) ≠ (u·v)·w 내적은 덧셈에 대한 분배법칙이 성립된다. w·(u+v) = (e,f)·(a+c, b+d) = ae + ..
이동이 가능한 부분 공간을 아핀 공간(Affine space)이라고 부른다. 6.1 이동 변환을 위한 아핀 공간 임의의 벡터 (x,y)를 지정한 크기(a,b)만큼 이동시키는 기능은 행렬의 덧셈으로 구할 수 있다. ┌ x ┐ + ┌ a ┐ = ┌ x + a ┐ └ y ┘ └ b ┘ └ y + b ┘ A · ┌ x ┐ = ┌ x + a ┐ └ y ┘ └ y + b ┘ ┌ 1 0 a ┐ ┌ x ┐ ┌ x + a ┐ │ 0 1 b │ · │ y │ = │ y + b │ └ 0 0 1 ┘ └ 1 ┘ └ 1 ┘ //이동 변환행렬(Translate transformation matrix) ┌ 1 0 a ┐ T = │ 0 1 b │ └ 0 0 1 ┘ 벡터 공간에서 이동을 위해 마지막 차원의 값을 1로 한정한 부분 공간..
5.1 선형성: 예측 가능한 비례 관계 벡터와 스칼라 곱셈으로 생성된 벡터는 벡터와 평행한 원점을 지나는 일직선 상에 위치한다. 이러한 성질을 선형성(Linearity)이라고 한다. 선형성을 가법성(Additivity)과 1차 동차성(Homogeneity of degree1) 두 가지 조건을 모두 만족하는 함수의 성질로 정의한다. f(x1 + x2) = f(x1) + f(x2) // 가법성 f(k · x) = k · f(x) //1차 동차성 선형 함수 원점을 지나는 다음의 직선함수를 생각해보자 f(x) = ax y = ax //가법성 검증 f(x1 + x2) = a(x1 + x2) //좌변 f(x1) + f(x2) = ax1 + ax2 //우변 //1차 동차성 검증 f(kx) = a(kx) //좌변 kf..