옛날 위키에 적어놓은 내용
- 구현 시작 날짜 2003년 8월 6일
- 지형 구현에 쓴다.
- 현재 구현중
- 한 큰 Terrain 객체에서 자식의 여러 Patch 를 가지고 있다.
- 각 Patch 에서는 그에대한 세부 NodeList? 를 가지고 있다.
- 그 NodeList? 를 가지고 Recursive 하면서 만들어낸다.
- RoamDocument1 GenLightMap
문제점
- 각 Patch사이의 경계에서 Trouble 발생.
- Patch 끼리의 Node 리스트를 가지고 있고, 그 Node 리스트를 참조하여 세부 Detail 을 결정한다.
- Patch 끼리의 Node 리스트를 가지고 있고, 그 Node 리스트를 참조하여 세부 Detail 을 결정한다.
- 적정한 Patch 수 결정.
- 일단 구현 후에 Terrain 크기에 따른 Patch 수를 결정해야 할듯 싶다. 기본적으로 MapSize?/64 정도가 적당할듯 싶다.
- 일단 구현 후에 Terrain 크기에 따른 Patch 수를 결정해야 할듯 싶다. 기본적으로 MapSize?/64 정도가 적당할듯 싶다.
- 매 프레임마다 Triangle List 를 만드는데, 이에 따른 Normal 도 계산을 해주어야 한다. 여기서 속도 문제가 제기 되는데.. 어떻게 하는게 좋을까?
- Lighting 을 위해 Normal Vector 를 실시간으로 계산을 하게 되는데 이때의 부하가 매우 크다. 그렇다고 안할경우 보기에 별로 좋지 않다. 게다가 Roam 의 경우 실시간으로 VertexList? 를 만들어 내는 만큼, 주변 Normal 값들의 평균을 내기가 상당히 힘들다. 해결 방법이 필요하다.
- CPU 의 점유율이 높다. 실제로 실시간으로 매 프레임당 6000폴리곤을 생성해 낼때 내 컴퓨터 기준으로 4ms ~6ms 정도가 걸렸다. 이정도 시간이라면 정적인 Lod 를 적용한 Terrain 이 어쩌면 더 잇점이 있을지도 모르겠다.
확장
- Visible 결정
- 빠른 충돌 판정
Vertex, Index Buffer 관리
- 최적의 상태를 유지하도록 하고, 한 Patch 에서 Buffer 의 평균 Size 를 구해서 최적의 상태를 만들자.
Variance
- 노드 분할에 있어서 가장 중요한 요소로, 거리와 삼각형 빗변의 높이를 계산하여 편차를 구한후 편차값을 통해 연속적으로 노드분할을 해나간다.
메모
- 매 Frame 마다 만들었던 Triangle List 를 삭제 하고, 다시 Triangle List 를 만들게 된다. 이것이 Dynamic 한 Terrain 의 구현에 있어서 기본적인거라지만, 좀 비효율적이지 않을까?
- Indexed TriangleList? 로 찍어보자.
- 2003/8/6 Roam 공부-_-
- 2003/8/7 RoamSimple? 분석, Direct3D 에 맞게 새로 코딩
- 2003/8/8 기본적인 기능 구현 완료
- 각 Patch사이의 경계에서 Trouble 발생.
구현중 사진
* 처음으로 구현해본 사진* 최적화와 상관없이 -_- 돌려본 사진.(오옷 된다-_-a)
* 안개, Shading 된 스크린샷
* 그 두번째-_-





