본문 바로가기

엔진프로그래밍

한 학기 동안 정리한 것들

1. 브레젠험 알고리즘 구현

브레젠험 알고리즘은 실수(float)연산을 사용하지 않고 직선을 그리기위해 사용하는 알고리즘 입니다.

아래 그림과 같이 8분면으로 나누어서 직선을 그립니다.

https://filedownload.tistory.com/entry/%EB%B8%8C%EB%A0%88%EC%A0%A0%ED%97%98-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EA%B5%AC%ED%98%84

 

브레젠험 알고리즘 구현

브레젠험 알고리즘이란? 두 점 (x1, y1), (x2, y2)에 대한 직선의 방정식은 다음과 같습니다. 직선의 방정식으로 완벽한 선을 그리려면 float 자료형으로 표현해야 합니다. 하지만 모니터의 픽셀 좌표�

filedownload.tistory.com

2. 엔진프로그래밍 수학 수업 정리

체, 스칼라, 벡터를 사용하는 프로그래밍에서의 수학 기초지식을 정리하였습니다.

또한 행렬 및 아핀공간에 대해서도 기술하였습니다.

https://filedownload.tistory.com/entry/%EC%97%94%EC%A7%84%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%88%98%ED%95%99-%EC%88%98%EC%97%85-%EC%A0%95%EB%A6%AC

 

엔진프로그래밍 수학 수업 정리

체(Field)란 무엇인가? 체는 사칙연산에 대해 닫혀있는 집합입니다. 닫혀있다는 뜻은 집합안에 숫자들로 사칙연산을 하였을 때 값이 집합안에 존재한다는 뜻입니다. 체의 특징 1. 덧셈과 곱셈에 ��

filedownload.tistory.com

3. 코헨 서덜랜드 알고리즘 구현

코헨 서덜랜드 알고리즘은 화면의 영역을 비트로 나누고 비트 연산을 사용하여 라인 클리핑하는 알고리즘입니다.

https://filedownload.tistory.com/entry/%EC%BD%94%ED%97%A8-%EC%84%9C%EB%8D%9C%EB%9E%9C%EB%93%9C-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EA%B5%AC%ED%98%84

 

코헨 서덜랜드 알고리즘 구현

코헨 서덜랜드 알고리즘이란? 코헨 서덜랜드 알고리즘은 클리핑 알고리즘입니다. 가운데 보이는 빨간 영역이 클리핑 영역(스크린)입니다. 각 칸에 적혀있는 숫자들은 각영역의 비트값을 나타냅

filedownload.tistory.com

4. Galois Field와 아핀 조합

Galois Field는 Field의 한 종류로 가장 작은 유한체입니다.

아핀 조합은 점과 점을 더하는 방법에 대한 것입니다. 아핀 공간에서의 점과 점은 더하면 2가되기 때문에 더할 수 없습니다.하지만 스칼라를 곱하여 더한 값을 1로 유지시킨다면 점과 점의 덧셈이 가능하게 됩니다.

 

https://filedownload.tistory.com/entry/Galois-Field%EC%99%80-%EC%95%84%ED%95%80-%EC%A1%B0%ED%95%A9

 

Galois Field와 아핀 조합

Galois Field란? Galois Field란 Field의 한 종류로 가장 작은 유한체입니다. 유한체란 집합 내 원소의 연산결과가 다시 그 집합 내에 있는 것을 뜻합니다. 덧셈 연산 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 덧..

filedownload.tistory.com

5. UV좌표와 뷰 좌표계

UV좌표계는 3차원 공간 폴리곤에 텍스쳐를 입히기 위한 기준이 되는 2차원 좌표계입니다.

UV좌표는 0부터 1까지의 좌표를 가집니다. 1을 넘어가거나 0보다 작아지면 다시 반복됩니다.

뷰 좌표계는 월드를 바라보고 있는 카메라의 좌표계입니다.

 

https://filedownload.tistory.com/entry/UV%EC%A2%8C%ED%91%9C%EC%99%80-%EB%B7%B0-%EC%A2%8C%ED%91%9C%EA%B3%84

 

UV좌표와 뷰 좌표계

UV 좌표계 UV 좌표계는 3차원 공간에 폴리곤에 텍스쳐를 입히기 위한 기준이 되는 2차원 좌표계입니다. UV 좌표는 최소0 최대1의 좌표를 가지고 있습니다. UV 좌표는 0에서 1의 좌표를 가지고 있으며

filedownload.tistory.com

6. 회전 행렬과 LookAt 행렬

회전행렬은 위의 3개의 행렬을 곱하여 오일러 각에 대한 회전행렬을 구할 수 있습니다.

LookAt 행렬은 카메라의 Forward, Up, Right 3개의 벡터를 이용하여 계산하여 만드는 행렬입니다.

 

https://filedownload.tistory.com/entry/%ED%9A%8C%EC%A0%84-%ED%96%89%EB%A0%AC%EA%B3%BC-LookAt-%ED%96%89%EB%A0%AC

 

회전 행렬과 LookAt 행렬

회전 행렬 회전 행렬은 위의 3개의 행렬을 곱하여 오일러 각에 대한 회전 행렬을 구할 수 있습니다. 이렇게 구한 회전 행렬을 코드에 대입합니다. 결과 LookAt 행렬 게임에서의 카메라는 캐릭터를

filedownload.tistory.com

7. 백페이스 컬링과 원근 투영

백페이스 컬링은 카메라를 기준으로 바라보는 물체의 뒷면에 해당하는 삼각형을 렌더링 과정에서 생략하는 기법입니다.

원근 투영은 아래 그림과 같이 절두체 모양안의 영역을 렌더링하고, NDC좌표로 정규화 한 후 화면의 해상도를 곱하여 물체를 그려주는 것을 말합니다.

https://filedownload.tistory.com/entry/%EB%B0%B1%ED%8E%98%EC%9D%B4%EC%8A%A4-%EC%BB%AC%EB%A7%81%EA%B3%BC-%EC%9B%90%EA%B7%BC-%ED%88%AC%EC%98%81

 

백페이스 컬링과 원근 투영

벡터 외적의 활용 시작하기에 앞서 저번 게시글에서 했던 forward벡터와 up벡터가 주어질 때 물체가 왼쪽에 있는지 오른쪽에 있는지 판별하는 방법을 알아보겠습니다. 다음과 같이 플레이어의 정�

filedownload.tistory.com

8. 오일러 각과 평면의 방정식

오일러 각이란 강체가 놓은 방향을 3차원 공간에 표시하기 위한 세 개의 각도입니다.

아래의 게시글에는 오일러 각을 사용했을 때 발생하는 짐벌락 현상에 대해 기술하였습니다.

 

로드리게스 회전 공식은 기준이 되는 축을 하나 정하고 그에 대한 회전을 구하기 위해 사용됩니다.

 

평면의 방정식은 평면에 대한 방정식입니다.

https://filedownload.tistory.com/entry/%EC%98%A4%EC%9D%BC%EB%9F%AC-%EA%B0%81%EA%B3%BC-%ED%8F%89%EB%A9%B4%EC%9D%98-%EB%B0%A9%EC%A0%95%EC%8B%9D

 

오일러 각과 평면의 방정식

오일러 각 짐벌락 현상은 오일러 각을 사용할 떄 발생하는 문제 현상입니다. 위의 사진은 Y가 부모인 오일러 각을 그림으로 나타낸 것입니다. 계층 구조상 Y축이 회전하면 모든 축이 회전합니다.

filedownload.tistory.com

9. 투영 보정 매핑

투영 보정 매핑은 카메라가 물체를 바라볼 때 무게중심좌표 두 개가 다르게 나타날 때 그 값을 보정하는 과정을 뜻합니다.

 

https://filedownload.tistory.com/entry/%ED%88%AC%EC%98%81-%EB%B3%B4%EC%A0%95-%EB%A7%A4%ED%95%91

 

투영 보정 매핑

이전에 원근투영에 대하여 설명했었습니다. 그 때 3D 큐브를 선으로 나타내어 보았지만 사실 그대로 사용하면 문제가 발생합니다. 문제는 텍스쳐를 매핑할 때 나타납니다. 텍스쳐를 매핑하면 살

filedownload.tistory.com

 

한 페이지에 정리하고 나니 한 학기라는 짧은 기간동안 많은 것들을 새로 알게 된 것 같습니다.

부족한 부분은 다음에 새로 게시글을 적거나 게시글을 수정하는 방법으로 고쳐나갈 생각입니다.

'엔진프로그래밍' 카테고리의 다른 글

투영 보정 매핑  (0) 2020.07.19
오일러 각과 평면의 방정식  (0) 2020.07.15
백페이스 컬링과 원근 투영  (0) 2020.07.08
회전 행렬과 LookAt 행렬  (0) 2020.07.01
UV좌표와 뷰 좌표계  (0) 2020.06.24