LOD 적용
게임 내에서 이용되는 오브젝트들에 LOD를 적용하는것은 지형 LOD와는 달리 매우 쉬웠습니다.
DirectX 에는 기본적으로 Progressive Mesh 라는것을 지원하여 실시간으로 Mesh의 Face , Vertex 를 조정할 수 있게 해줍니다.
거리에따라 Progressive Mesh 로 지정된 메쉬의 Face 값을 +,- 해주면 간단히 LOD 가 구현이 됩니다.
실제 테스트 결과 오브젝트의 수가 많아질수록 LOD의 적용유무에 따른 속도차이가 엄청났습니다.
LOD를 이용하기위해 Progressive Mesh를 생성하는 과정은 다음과 같습니다.
1. X파일을 일반 Mesh 로 불러옴
2. Mesh 최적화를 해줌
- CleanMesh , WeldVertices
(저는 이렇게 두개의 과정만 하였는데 이상이없네요. 상황에따라 다른방식의 최적화가 필요할수도 있습니다)
3. Valid Mesh 를 이용해 DX에서 사용적합한 Mesh 상태인지 확인
4. Progressive Mesh 생성
Progressive Mesh를 사용하려면 Valid Mesh를 반드시 통과하여야 됩니다.
처음 작업을 했을 때 책에 별다른 말이 없어서 1, 4 번 으로 바로 진행하였는데 몇몇 모델 파일들에서 오류가 발생하여 여기저기서 찾아보았더니
Valid Mesh로 부터 OK싸인을 받아야 Progressive Mesh 가 생성된다는 걸 알게되었습니다.
일반적인 게임회사에서는 이미 3D 모델러분들께서 게임에 적합하게 모델링을 해주실 것이라 생각되지만... (그래서 책에 저 작업이 없었던 것 같기도 하고...)
저같이 혼자 공부하는 입장에서는 게임용 모델파일이 아닌 여기저기서 빼오다 보니 Valid Mesh 작업이 꼭 필요한것 같습니다...;;
'Programming > DirectX' 카테고리의 다른 글
| 다중캐릭터 (0) | 2009/08/11 |
|---|---|
| Mesh Hierarchy Animation (0) | 2009/08/09 |
| LOD 적용 (4) | 2009/07/31 |
| 이것저것 섞다보니.... (0) | 2009/07/28 |
| Direct3D 지형시스템 만들기 : 멀티텍스쳐링 + 안개 (0) | 2009/07/25 |
| Direct3D 지형 시스템 만들기 : 라이트맵 적용 + 버텍스 블러링 (0) | 2009/07/20 |


댓글을 달아 주세요
Valid Mesh 에 대해서 인터넷을 마구 찾아봤지만 Valid Mesh이 무엇인지 모르겟습니다 ㅠ.
죄송한데 Valid Mesh 관련 소스 좀 알려 주실수 있나요??
제 메일은 rurwkddl@nate.com 입니다..
안녕하세요. 방문해주셔서 감사합니다 @_@!
본문에서 쓰인 Valid Mesh는 DX9의 D3DXValidMesh 함수를 이용하시면 쉽게 통과여부와 값을 얻을 수 있습니다.
MSDN DirectX9 SDK - D3DXValidMesh
http://msdn.microsoft.com/en-us/library/bb205482(VS.85).aspx
ValidMesh와 관련된 전처리과정들은 검색사이트에서 D3DXValidMesh로 검색해보시면 많이 나올 듯 합니다. 이 과정은 너무 다양하고 결정적으로 시간이 너무 지나 제가 테스트용으로 짰던 소스가 없네요...;;
메일로도 같은내용 보내드리도록 하겠습니다.
도움이 되셨길 바랍니다!
음 애니메이션 되어 있는 x파일은 pMesh 로 생성 못하구 있었는데.
해결 되었어요 ㅎㅎ
Valid Mesh 이거진짜 책에 쏙 빠져잇어서..
이 블로그 아니였으면 영영 해결못하고 넘어갈뻔했어요 ㅎㅎ 다시한번 감사드려요 ^^
아, 거리에 따른 폴리곤수 조정은 어떤 알고리즘을 사용하였는지요..?? 현재 특정거리값마다 /4 이런식으로 하니 너무 팍팍 줄어지는것 같아서 ...
보통 어떤방식으로 하는지는 잘 모르겠지만.. 그냥 상수값으로 나누어가면 단계마다 너무 티가 나니 상수값의 제곱만큼씩 나눠주는것도 좋을 것 같네요.
처음엔 적게 줄어들다가 거리가 멀어질수록 줄어드는양이 많아지니 조금 더 자연스럽지 않을까요!?