본문 바로가기

Directx11/Technic

UV와 카메라의 방향 벡터를 이용한 레이더 쉐이더

Tera를 해보면 내가 바라보는 방향의 범위가 미니맵에 표시되는 효과를 볼 수 있습니다.

 

이 효과는 카메라의 방향벡터를 가지고 할 수 있는 아주 간단한 쉐이더 효과 입니다.

 

아래의 그림은 Directx의 UV의 좌표계 입니다. 

 

 

 

이 효과는 카메라와의 방향과 시야각안에 있는 점들을 좀더 밝게 랜더링 해주는 것입니다.

 

때문에 두가지 값이 필요합니다.

 

1. 카메라의 방향

 

2. 시야각

 

이 두가지만 안다면 간단한 내적으로 시야각 안의점들을 잡아 낼 수 있습니다. (카메라의 방향을 기준으로 시야각의 반만큼의 양쪽각을 체크해 주면 되므로 내적을 이용함)

 

1. UV의 좌표의 중심 (0.5,0.5)을 내 현재 캐릭터의 위치라 생각을 합니다.

 

2. 중심에서 (0.5,0.0)지점을 향하는 방향을 z축 양의 방향이라 (0,0,1)이라 생각을 하고, (1.0,0.5)지점을 x축 양의 방향(1,0,0)이라 생각을 합니다.

 

3. 2번과 같이 생각을 한다면 카메라의 방향 백터와 UV(0.5,0.5)와 input으로 들어온 UV를 벡터로 볼 수 있습니다. 두 백터의 차로 중심에서 임의의 점을 향하는 백터를 구할 수 있습니다.

 

4. 간단한 내적 공식을 이용해 두 백터가 이루는 각을 구해줍니다. 두 백터가 이루는 각이 시야각의 반보다 작을 경우 내 시야의 들어오는 범위 이므로 색상을 밝게 해줍니다.

 

위와 같은 작업을 거친다면 아래와 같은 효과를 낼 수 있습니다.

 

카메라의 방향과 레이더의 밝게 빛나는 부분을 중심으로 봐주세요

 

레이더는 우측 상단에 있습니다.

 

 

 

 

 

 

 

 

'Directx11 > Technic' 카테고리의 다른 글

쿼드트리 Terrain 컬링  (0) 2018.04.26
UV와 시간을 이용한 스킬 쿨타임  (0) 2018.04.24
Navigation Mesh  (0) 2018.04.18
Terrain Splatting (Brush)  (0) 2018.02.06
Color Picking (색상 픽킹)  (0) 2018.02.01