본문 바로가기
게임 개발/[D3D_Portfolio] DirectX3D 팀 포트폴리오 작업일지

8. Assimp 라이브러리 적용

by 헛둘이 2023. 8. 4.

Assimp 라이브러리 적용

- Assimp는 3D 메쉬 로드를 도와주는 오픈 소스 라이브러리이며, FBX말고도 OBJ와 같은 다른 확장자도 지원한다.

- FBX SDK로 3D 메쉬를 로드할 수 있는데 굳이 Assimp를 추가한 이유는 하나의 씬을 불러올 때 각각의 메쉬의 월드좌표를 가져와야 하는데 마음처럼 잘 되지 않았다.

- 노드를 탐색할 때 트리 구조로 탐색하는데, 부모의 행렬을 자식노드에게 넘겨줌으로써 월드행렬을 구해서 제자리에 위치시키려 했는데, 분명 같은 FBX파일임에도 Assimp로 불러왔을때의 값과 FBX SDK로 불러왔을 때의 값이 달랐다.

- 더 시간을 들이면 FBX SDK에서도 해당 기능을 구현할 수 있었겠지만 공부할 것도 많고 당장 다음 주 월요일부터 맵 작업에 들어갈 예정이라 구현이 비교적 쉬운 Assimp를 통해 해당 기능을 구현했다.

- 마찬가지로 부모의 월드행렬을 ParseNode 함수에서 인자로 넘겨받아 자식의 월드행렬에 곱해준 후 메쉬에 적용하고, 그 곱한 행렬을 다시 자식에게 넘겨주는 식으로 모든 메쉬가 월드상의 좌표로써 존재할 수 있게 했다.

- 우리 팀에서 이 부분을 구현하는건 중요한 일인데, 아래 사진과 같은 책상의 경우 이와 같은 처리를 해주지 않으면

한 점을 기준으로 모이게 되기 때문에 각각의 메쉬를 분리해서 수작업으로 배치해야 하는 노가다가 필요해지기 때문이다.

- 한 가지 발견한 문제점은 정말 큰 맵을 로드했을 때 별별 오브젝트들까지 다 불러와지기 때문에 드로우콜이 많아져서 프레임드랍이 발생한다.

- 주말동안 이 부분을 어떻게 최적화할것인지 고민해볼 예정이다.

 

 

내일 할 일

- 다수의 메쉬를 가진 FBX를 불러올 때 최적화 방안 찾기

'게임 개발 > [D3D_Portfolio] DirectX3D 팀 포트폴리오 작업일지' 카테고리의 다른 글

10. Mesh와 Material 구조 변경  (0) 2023.08.06
9. Instancing 구현  (0) 2023.08.05
7. 충돌 구현  (0) 2023.07.25
6. FBX 텍스쳐 매핑 & Toon Shading  (0) 2023.07.21
5. FBX 로드  (0) 2023.07.20

댓글