개발자 면접 공부/그래픽스 14

1픽셀의 바이트

1. 개요 오늘은 1픽셀의 바이트 크기를 알아보겠습니다. 2. 픽셀? 픽셀은 이미지를 이루는 가장 작은 단위를 말하며, 픽셀은 이미지를 이루는 점과 같습니다. 모니터 해상도에서 보통 1920x1080의 뜻은 가로 1920 로 1080의 픽셀이 모여있다는 뜻입니다. 참고로 1920X1080 = 2,073,600개의 픽셀이 모여있습니다. 그러므로 픽셀은 이진수로 표현하며 그 조합을 통해 흑백, 컬러 영상 및 이미지를 표현합니다. 3. 이진 영상 디지털 이미지 중 간단한 형태를 나타내며 이진 영상은 각 픽셀이 1bit로 이루어져 있으며, 각 픽셀은 오직 밝음(1), 어두음(0) 두 가지만을 표현합니다. 4. 흑백 영상 각 픽셀의 밝기 값을 0~255 사이 값으로 표현한 이미지이며, 8bit = 1byte의 메..

스플라인(Spline)

1. 개요 오늘은 스플라인(Spline)에 대해 공부하겠습니다. 2. Spline 곡선과 보간 근사 곡선 스플라인은 부드러운 곡선의 모양을 3차 이상의 다항식으로 표현하는것 제어점(Control Point)을 지정하여 곡선의 형태를 생성 3차 이상의 곡선을 미지수가 4개이니, 4개 이상의 조건이 주어진다. 1. 보간 곡선과 근사 곡선 조건을 어떻게 주느냐에 따라 다른 곡선이 만들어진다. 곡선을 찾아보면 보간과 근사라는 단어를 자주 볼수 있는데 두 개의 차이는 명확하다. 보간 : 곡선이 중간점을 통과함 (Ex, 캣멀룸 스플라인) 근사 : 곡선이 중간점을 통과하지 않고 곡선을 제어하기만 함 (Ex, 베지어 곡선) 보간(Interpolation) : 주어진 제어점을 통과 Hermite, Cardinal 근사 ..

벡터의 내적으로 라디안 및 디그리 구하기

1. 개요 안녕하세요 오늘은 벡터의 내적으로 라디안 및 디그리를 구하는 방식을 알아 보겠습니다. 2. 내적의 공식 내적의 공식은 벡터 A와 B과 있으면 2D방면에서 (Ax*Bx) + (Ay*By)입니다. 하지만 다른 방식으로 구할수도 있습니다 바로 벡터의 크기 입니다. |A||B|cosΘ 입니다. 벡터크기는 하나당 sqrt(Ax^2+Ay^2)으로 볼수 있습니다. 그리고 cos인의 그래프를 보면 다음과 같습니다. 각도가 0도면 1 90도면 0입니다. 3. 라디언 구하기 그래서 라디언을 구하는 방식은 다음과 같습니다. acos(A+B/|A|*|B|) 입니다. 이것을 C++로 표현하면 다음과 같습니다. double a2 = sqrt(pow(2,2)+pow(5,2)); double b2 = sqrt(pow(-2..

IK 와 FK의 차이점

오늘은 IK 와 FK의 차이점에 대해 공부하도록 하겠습니다. 1. 개요 보통 게임을 만들면 한 캐릭터의 스켈레탈 본을 놓고 상속계층을 가지고 있습니다. 하지만 보통 이 스켈레탈본도 부모에 따라 자식이 변경되나 자식에 따라 부모가 변경되냐에따라 애니메이션, 계단오르기 등 여러가지가 변경이 될수가 있습니다. 그러므로 오늘은 IK와 FK에 대해 하나식 공부해보도록 하겠습니다. 2. FK FK는 Forward Kinematics 라고 하며 보통 개체 계층 구조에서 상위개체 즉 부모 개체가 변하면 자식 계체가 변형이 됩니다. 이 변형은 Pivot 점을 중심으로 하는 회전 각도, 피벗 축과 축 크기 조정 배율에 따른 변화가 정의됩니다. 각각의 개체는 상위 개체의 변형을 그 자체에 적용이 됩니다. 따라서 계층 구조인..

쿼드 트리 & 옥 트리

오늘은 쿼드 트리 & 옥 트리 에 대해 공부하도록 하겠습니다. 1. 트리란? 나무를 거꾸로 놓아듯한 자료구조이다. 대표적인 비선형 자료구조의 하나로 이진 트리 즉 트리의 데이터가 완전이진트리가 되면 탐색 시간이 매우 감소한다. 트리의 대표적인 특성으로는 최소 1개 이하의 부모노드를 가지고 있다.(루트 노드는 부모가 없다) 1개의 노드가 여러개의 자식을 가질수 있다.(리프 노드는 자식이 없다) (리프 노드란 : 맨 끝에 있는 노드) 대표적인 비선형 자료구조 선형 : 리스트, 배열, 원형 큐 등 비선형 : 트리, 그래프 트리에는 이진 트리, 비 이진 트리가있다. 이진 트리에는 이진 탐색 트리, 레드 블랙 트리가 있으며 비 이진 트리에는 쿼드트리, 옥트리 등이 있다. 2 쿼드 트리란? 사진 분할 트리라 하며 ..

퐁 모델

오늘은 퐁 모델에 대해 공부하도록 하겠습니다. 퐁 모델은 총 4가지 항의 합으로 이루어집니다. Diffuse, Specular, Ambient, Emissive 입니다. 각각 난반사, 정반사, 간접조명, 자체 발산광이라고 보시면 됩니다. 또한 조명 용어도 정리하겠습니다. 조명 용어 정리 지역 조명(local illumination) -광원(light source)로 부터 직접적으로 물체에 들어오는 빛만을 고려합닌다. 전역 조명(global illumination) - 광원이 직접적으로 보이지 않더라도 공간 내 다른 물체에서 반사된 빛에 의해 받는 간접 조명 을 고려하여 모든 물체를 잠재적인 광원으로 취급합니다. - 비실시간 렌더링에 주로 사용되며 현재는 하드웨어 성능의 향샹으로 실시간 랜더링이 가능해지는..

쉐이더란? (사용 이유)

오늘은 왜 쉐이더를 사용하며 쉐이더에 대한 이해에 대해 공부하겠습니다. 쉐이더란?(Shader) 3D 컴퓨터 그래픽에서 최종적으로 화면에 출력하는 픽셀의 색을 정해주는 함수 쉐이더는 말 그대로 함수입니다. 조금 더 쉽게 설명하자면 Shader는 Shade + er 입니다. shader라는 영어의 정의는 색의 농담, 색조, 명암 효과를 주는 주체 라는 뜻이 있습니다. 렌더링 파이프라인 전에 포스팅 했던 렌더링 파이프 라인중에 각각 뒤에 쉐이더 라는 이름을 붙인 파이프 라인들을 소개했습니다. 지금 생각하고 계신게 맞습니다. 각각 파이프라인의 쉐이더들은 화면에 최종적으로 출력해주기 위해 각각 기능을 통해 나누었던 것 이였습니다. IA-> VS->hull shader(HS)->테셀레이션->Domaion Shad..

벡터 외적을 통한 적이 오른쪽 왼쪽 판별

오늘은 외적을 통해 적이 오른쪽에 있는지 왼쪽에 있는지 알아보도록 하겠습니다. 벡터의 외적을 이용하여 지정한 물체가 왼쪽 오른쪽에 있는지 알수있습니다. (외적을 하고 Up Vector와 내적) 1. 타겟의 위치에서 자신의 위치를 빼 타겟을 바라보는 벡터를 만듭니다. 2. 위에서 만든 벡터와 자신의 포워드 벡터를 외적합니다. 3. 외적한 값과 Up벡터를 내적합니다. 4. 내적한 결과가 음수면 왼쪽, 양수면 오른쪽입니다. (DirectX(왼손) OpenGL(오른손)) 5. 위에 4번은 오른손 좌표계를 기준으로 말하는 것 입니다.

법선매핑(노말맵)

오늘은 법선매핑(노말맵)에 대해 공부하도록 하겠습니다. 오브젝트에 텍스쳐를 입히는 과정을 살펴보도록 하겠습니다. 렌더링되어져서 나온 오프젝트는 색이 입혀져 나옵니다. 근데 DirectX에서는 색이 아니라 단순한 숫자입니다. 그중에서 Shader라면 0~1사이의 소수점의 집합입니다. 폴리곤 표면에는 왠만하면 법선 정보가 들어있습니다. 여기서 천재들의 기지가 발휘됩니다. 텍스쳐가 단순히 Shader상에서 수치값으로 표현가능하다면, 폴리곤의 세부적인 기복의 방향을 텍스쳐로 표현할 수 있지 않을가??? 이것이 곧 법선맵 입니다. 법선맵을 사용하면 한장의 사각폴리곤만으로 표면이 울퉁불퉁한 것처럼 보이게 할 수 있습니다. 1. 법선맵이 뭐냐? 위의 그림을 살표보면 4X4의 법선맵을 1장의 삼각 폴리곤으로 단순하게 ..

DirectX 깊이 버퍼(Z-Buffer)

DirectX의 깊이 버퍼를 공부하도록 하겠습니다. 깊이버퍼는 3D프로그래밍을 하는데 있어서는 매우 필수적인 개념입니다. 렌더링 파이프 라인에 투영 단계까지 모두 완료했을경우 NDC공간(클립 공간) 으로 변형됩니다. 이떄에 클립 공간은 x,y,z (-1~1),(-1~1),(0~1) 사이로 변형이 됩니다. 깊이 버퍼 또한 NDC 공간의 Z값과 같은 0~1 의 범위를 가지는 화면에 그려질 각각 픽셀의 깊이 값을 저장하는 버퍼입니다. 깊이 버퍼(Z-Buffer) 아래의 사진을 토대로 깊이 버퍼의 작동 원리를 설명합니다. 위 사진을 보면 출력하는 순서에 따라 원형이 삼각형을 가리고 있지만, Z버퍼에 저장된 Z값에 따라 실제 출력에서는 삼각형이 원형을 가리는 형태로 출력합니다. Z버퍼에 저장된 Z값을 비교하여 0..