목록2024/07 (17)
개발하는 리프터 꽃게맨입니다.
렌더링에 있어서 중한 것은 빠르게 그리는 것이고가장 효과적인 방법은 시야에 보이는 물체만 그리는 것이다. 대표적인 기법으로는 백페이스 컬링을 들 수 있다.그 외로 사용할 수 있는 기법을 알아보자. 절두체 컬링개요씬에 다수의 오브젝트가 있는 경우 모든 오브젝트를 그리는 것은 비효율적이고, 카메라 시야 안에 보이는 오브젝트만 그리는 것이 훨씬 효율적이다. 그래서 그래픽을 효율적이게 구현하기 위해선 시야, 절두체 영역에 속한 오브젝트만 그려내면 된다.그렇다면 절두체 밖에 있는 오브젝트들을 걸러내야 하는데, 이러한 작업을 절두체 컬링 Frustum Culling 이라고 한다. 절두체는 6개의 면으로 이루어져 있다.이 면들의 각각의 평면의 방정식을 구한 다음에 게임 오브젝트가 6개의 평면 중 하나라도 바깥쪽에..
1. 원근 투영 변환의 원리시선을 한 점에 고정시키고, 고정된 점으로부터 화폭까지 곧게 뻗은 실을 활용해 그림을 그리는 기법을 투시 원근법이라고 한다. 우리가 만든 3차원 공간에 투시 원근법의 원리를 적용하기 위해선 공간의 모든 점이 한 점을 향해 모이는 형태로 변경해야 한다. 이러한 변환을 원근 투영 변환이라고 부른다. 가상 공간에서 눈에 대응하는 물체는 카메라다.그래서 원근 투영 변환을 설계하기 위해서는 눈에 보이는 범위를 카메라에도 설정해야 하는데 이를 화각이라고 한다. 카메라에 화각을 설정하면 상하좌우가 균등한 사각뿔 영역이 만들어진다. 즉, 화각은 사각뿔 영역의 크기를 담당한다고 볼 수 있다. 원근 투영 변환은 뷰공간을 카메라의 한 점으로 모이는 사각뿔 형태를 가진 공간으로 변환하는 작업이라고..
1. 벡터의 외적3차원 벡터 간의 외적은 X 기호를 사용한다. 3차원 유클리드 공간의 벡터 x=(x1,x2,x3), y=(y1,y2,y3) 의 벡터곱 x X y 는 다음과 같이 정의된다. 외적의 결과는 언제나 3차원 벡터가 된다. 1) 외적의 성질외적은 교환법칙이 성립하지 않는다. (내적과 차이점)외적의 순서를 바꿔 연산하면 반대 방향의 벡터가 나온다.외적은 결합법칙도 성립하지 않는다.외적은 덧셈에 대한 분배법칙이 성립한다.결과값은 항상 벡터 값이다. 2) 행렬곱, 내적, 외적 비교 행렬곱내적외적계산 결과행렬스칼라벡터교환법칙XOX결합법칙OXX덧셈에 대한 분배법칙OOO 2) 외적의 활용 : 평행성 판별 동일한 벡터를 외적하면 항상 영벡터가 나온다. 반대방향 벡터를 외적하는 경우에도 동일하다.평..
1. 3차원 공간의 설계3차원의 수학이 2차원과 다른 점은 3개의 축을 사용한다는 것이다.그렇기 때문에 3차원에서의 변환은 2차원보다 더 복잡하며 고려해야 할 점도 많다. 3D로 표현된 사실적인 게임을 만들기 위해서는 3차원 공간의 수학을 이해해야 한다.먼저 3차원 공간을 구성하는 좌표계를 먼저 정의하도록 하자. 3차원 공간은 2차원의 공간에 새로운 축을 추가해야 하는데, 이를 어떻게 설정하느냐에 따라 공간의 체계가 달라진다. 3차원 공간을 설게하는 방법은 크게 두 가지로 구분된다. 기본적으로 가로를 x축, 세로를 y축모니터를 기준으로 앞뒤를 z축으로 둔다. 이 때,나머지 한 축이 모니터에서 나오는 체계를 '오른손 좌표계'나머지 한 축이 모니터 뒤편으로 향하는 체계를 '왼손 좌표게'라고 한다. 좌표계를 ..
더보기#include #include using namespace std;class Player{public:Player(string name): mName(name){}string GetName() const{return mName;}private:string mName;};struct MyEvent{void (*eventFunction)(void*, void*);void* lParam;void* rParam;};class EventProcessor{public:EventProcessor() = default;~EventProcessor() = default;void Push(MyEvent eventStruct){mQueue.push(eventStruct);}void AllExecute(){while ..