인프런 커뮤니티 질문&답변

baljang님의 프로필 이미지
baljang

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12

Skybox

w로 나눠 주는건 그냥 규칙인 건가요?

작성

·

228

0

좌표가 (x,y,z,w)가 있다고 했을 때 나중에 다음 단계로 넘어가게 될 때, 즉 rasterizer 단계로 넘어가게 될 때
(x/w, y/w, z/w, w/w)
이런식으로 다 w값으로 나눠주고 있다고 하셨는데
 
w값으로 나눠주는 건 그냥 규칙인 건가요?
 
변환행렬 시간에 z값이 깊이 값이 되는 건 행렬에서 배웠는데
w로 나눠주는건 생소한 부분인거 같아서요.
 
 

답변 1

2

애초에 우리가 사는 세상은 3차원 공간인데 SRT 좌표변환(scale, rotation, translation)등에

왜 3x3 행렬(3차원 행렬)이 아니라 4x4 행렬(4차원 행렬)을 사용할까 고민해 볼 수 있어요. 

가장 큰 이유는 3차원 행렬 곱으로는 translation을 할 수가 없기 때문입니다.

왜냐하면 아무리 원점에 해당하는 (0,0,0) 벡터값에 행렬 곱을 적용해도 

(0,0,0)으로 고정되게 돼요. 그래서 하나의 차원을 추가해서 행렬 계산을 하게 된거죠.

어떻게 보면 계산 트릭이라고 볼 수도 있겠네요. 

Geometry Processing 스테이지를 지나서 Rasterization 스테이지에 진입할 때는

다시금 원래의 자연스런 형태의 데이터로 변환해주는 거라고 보시면 될 것 같습니다.

그래서 4번째 좌표값인 w을 1로 normalize하는 것입니다.

baljang님의 프로필 이미지
baljang
질문자

그렇군요, 감사합니다! :)

baljang님의 프로필 이미지
baljang

작성한 질문수

질문하기