2009년 1월 29일 목요일

Global terrain

행성(또는 지구) 전체의 지형을 표현하기위해선 구형태에 맞는 메쉬및 텍스쳐링이 필요하다
여러 방법이 있겠지만 기존 mmorpg에서 많이 사용되고 있는 하이트필드 & 쿼드트리 구조를 사용하고자 하면 지구를 위도/경도 방식으로 분할하여 각 지역에 기존의 맵을 매치 시키는것이 적합하다고 생각된다
하지만 이방법의 가장 큰 단점은 극지방으로 갈수록 왜곡이 심해지며 극지방의 표현이 어렵다는 것이다
위도/경도분할이 아닌 3ds max 지오스피어같은 삼각형 메쉬를 이용하면 왜곡의 정도를 줄이고 극지방또한 표현에 문제가 없겠지만 구조가 복잡해지고 이는 구현의 어려움과 실시간 게임, 특히 mmorgp에 적용하기에는 적합하지 않다고 생각된다.
위도/경도 방식을 사용하면서 극지방에 대한 보완방법을 찾아보려했으나 아직까지는 별다른 해법을 찾지못했다. 극지방을 사용하지 않고 그냥 텍스쳐로 처리하는 방법이 현재로선 최선이며 차후 좀더 자료를 찾아보고 생각해봐야겠다.
아울러 지형에서 우주로 나갈때 실제 메쉬 오브젝트 LOD -> 텍스쳐로 변경하여야 될듯한데 되도록 표가안나게 하는법, 지형 LOD방식에는 현재 구현된 미리계산된 정해진크기의 LOD 레벨및 연결부위사용 대신 실시간적으로 분할하는 ROAM과 같은 방식도 고려해 봐야 한다. 뭐 역시 나중에 좀더 알아봐야될듯..;;

Reference

http://download.microsoft.com/download/5/6/f/56f5fa07-51a4-4c0d-8a9a-2e8539214f2e/GDC2006_Szofran_Adam_Terrain_v1.doc

2009년 1월 28일 수요일

deprecated

라이브러리 버전 관리를 하다보면 더이상 필요되는 부분이 발생하거나 임시로 추가되는 부분이 생길수있는데 이러한 차후 삭제될 부분에 대한 표시가 필요하다
컴파일러에서 deprecated 키워드를 지원하지만 거의 사용하지 않았었는데(MS에서 C함수를 많이 고쳐놔서 기존소스에서 엄청난 경고가 뜨므로 꺼놓고 사용) 앞으로는 MS경고메세지도 잡고 사용하는게 좋을것 같다

두가지 사용예
#pragma deprecated(func1)
C4995 경고메세지가 뜬다. 단순히 선언되었음을 알리고 해당소스 컴파일시 메세지출력

__declspec(deprecated("this is a deprecated function"))
C4996 경고 메세지가 뜬다
다음에 오는 함수가 deprecated 되었음을 알리고 위에 메세지를 같이 표시해준다
함수를 실질적으로 사용할경우에 메세지가 출력된다. MS에서는 대부분 이렇게 사용되어있음

-----------
덧붙임.
* ms에서 만든 secure버전 함수 경고의 경우 _CRT_SECURE_NO_WARNINGS 을 선언해주면 발생되지않는다
* _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 을 1 로 선언하면 자동으로 secure버전으로 변환해준다. 단 정적배열을 사용하는 경우에만 가능