본문 바로가기

예전/3D

[3D] 높이 맵


아래의 동영상은 높이 값을 추출해 큐브를 높이마다 다른 위치에 둔 것이다.







그렇다면 중간 높이를 계산하는 방법을 알아보자.




지형에서 각 정점마다 높이가 다르다.  그때 저 빨간 점 vPos의 높이를 알고 싶다면 보간을 통해 계산해야 한다.


먼저 빨간 점 vPos가 있는 셀의 인덱스를 알아야 한다. 

지형을 처음에 설정할 때, 원점을 중심으로 (w/2,-h/2) 떨어진 곳에서 부터 시작했기 때문에 인덱스를 찾을 때도 이것을 감안해야 한다.


인덱스를 알았다면 그 인덱스의 번호는 초록 점이 될 것이고 그것으로 파란 점, 노란 점의 높이 값을 알아낸다.







초록 점을 기준으로 빨간 점 vPos는 (0.1,0,-0.6) 만큼 떨어져 있다.

[y 값은 임의로 0이라고 했다.]

만약 x의 절대값이 z의 절대값보다 크다면 우 상단 폴리곤이고, x의 절대값이 z의 절대값보다 작으면 좌 하단 폴리곤이다.


초록 점, 노란 점, 파란 점의 높이 값을 각각 f[0],f[2],f[3]이라고 하자. 


초록점으로 부터 (0.1,0,-0.6) 만큼 떨어져 있는 빨간 점 vPos의 높이는
(f[3] – f[2]) * 0.1 + (f[2] – f[0]) * -0.6 + f[0]
이다.

f[0] 로 부터 x는 0.1 만큼 떨어져 있기 때문에 가로 길이에 0.1 만큼을 곱했고, z는 -0.6만큼 떨어져 있기 때문에 -0.6을 곱했다.




'예전 > 3D' 카테고리의 다른 글

DrawPrimitive , DrawPrimitiveUP  (0) 2013.01.08
[3D] 지형(Terrain)  (0) 2013.01.08
[3D] 픽킹 (Picking)  (3) 2013.01.08
[3D] 알파 블렌딩 (ALPHABLEND)  (0) 2013.01.07
[3D] 컬링 모드  (0) 2013.01.07