매쉬를 xFile로 추출할 때 FVF 또는 Decl(노멀과 탄젠트가 추가)로 추출 할 수가 있다.

 

DirectX9으로 작업을 진행하면서 매쉬의 정점의 정보를 GetFVF로 받아오려고 할 때,

0으로 표시되는 경우가 발생하는데 이 경우는 추출한 매쉬 데이터의 정보가 FVF가 아닌 Decl로 되어있는 경우이다.

 

혹시나 매쉬가 FVF가 아닌 Decl일 때는 D3DXGetDeclVertexSize를 사용하여 정점의 정보를 얻어올 수 있는 방법도 있다.

 

xFile을 FVF 또는 Decl로 추출하는 방법은 다음과 같다.

위와 같이 DeclData를 체크하면 Decl의 정보를 가진 매쉬가 추출이 되고 해제하면 FVF의 정보를 가진 매쉬가 추출된다.

3D 작업을 하다보면 폴리곤 수로 인해서 최적화가 필요할 일이 생길 수가 있다.

 

그런데 3DS MAX에서 이 문제를 간단하게 해결하는 방법이 있다.

 

먼저 아무 모델링 하나를 불러와서 오브젝트 하나를 클릭하여 폴리곤의 개수를 확인한다. 

 

폴리곤의 개수를 확인하려면 해당 뷰에서 왼쪽 상단에 + 버튼을 누르고 Configure Viewports를 누른다.

그럼 아래와 같이 창 하나가 나오는데 여기서 Statistics를 누르고 SetUp에 현재 뷰에 표시하고 싶은 부분을 체크해준다.

폴리곤 개수면 Polygon Count를 체크하고 OK를 누르면 된다.

 

그리고 우측에 Total, Selection, Total + Selection이 있는데,

Selection을 체크하면 선택한 오브젝트의 폴리곤 개수를 확인할 수 있고,

Total은 현재 뷰 상에 있는 모든 오브젝트들의 폴리곤 개수를 확인할 수가 있다.

개수 표시를 하고난 후에

 

폴리곤의 개수를 줄이고 싶은 오브젝트를 클릭한 상태로 우측에 있는 무지개 모양을 누르고

아래 Modifier List를 누르고 ProOptimizer를 찾아서 클릭해준다.

그 다음 아래에 있는 Optimization Level에 Calculate를 누르고 Vertex %를 조정하면

다음과 같이 폴리곤의 수가 줄어드는 것을 볼 수 있다.

그런데 폴리곤의 수를 줄이기 전에 체크 해야할 부분이 있다.

 

ProOptimizer 옵션 아래 부분에 가면 Materials and UVs 라는 옵션이 있다.

여기서 Keep Textures 와 Keep UV Boundaries를 체크해줘야한다.

이 두가지를 체크 해주면 폴리곤의 개수가 떨어져도 텍스처 UV의 정보를 보존시켜준다.

 

또 동일한 오브젝트가 뷰 상에 존재한다면 하나만 해주면 모두 적용된다.

먼저 아래 사이트에서 3DS MAX x File Exporter를 다운 받을 수 있다.

www.cgdev.net/axe/download.php

 

DirectX Exporter and X Viewer Download

Recommended Configuration Settings Installation Extract the dle file into the plugins directory of 3ds Max. e.g.:   C:\Program Files\Autodesk\3ds Max 2017\plugins If you are encountering a runtime error when start 3ds Max you need to install Visual C++ 20

www.cgdev.net

다운로드가 끝나고 압축을 풀면 Axe_free_v2.2.8_max(버전).dle 이라는 파일이 있는데,

해당 파일을 ProgramFiles/Autodesk/3dsMax(버전)/plugins/ 폴더 안에 붙여넣는다.

이후 3ds max를 실행하고 Export를 진행하면 다음과 같이 .x 파일 확장자가 생긴 것을 볼 수 있다.

 

다음과 같이 Text 파일 형식으로 애니메이션 파일을 .x 파일로 익스포트를 한 후

각각의 .x 파일을 텍스트로 열고 Ctrl + F를 눌러서 "AnimationSet"을 적고 아래로 찾기를 누르면

텍스트에서 다음과 같이 애니메이션의 이름이 나온다.

찾은 부분부터 다음 애니메이션의 이름까지 복사하여(없으면 해당 애니메이션이 마지막임..) 

합치려는 .x 파일 텍스트 끝에 이어 붙인다.

애니메이션의 순서는 아래에서부터 0 ~ 이다.

DirectX SDK를 설치하고 <d3dx9.h>, <d3d9.h> 헤더파일을 include하고 빌드를 하면

위와 같이 빌드는 되지만 Warning c4005 매크로 재정의 경고가 나올 것이다.

 

이유는 WIndowsSDK와의 충돌 떄문이다.

 

해결 방법은 다음과 같이 프로젝트 속성 -> VC++ 디렉터리 -> 포함디렉터리에

WindowsSDK를 DirectX SDK 보다 먼저 포함시키면 된다.

 

이렇게 설정을 하고나서 빌드를 하면 매크로 재정의 경고가 사라지게 된다.

+ Recent posts