개발 일자 : 2022년 2월 21일 ~ 25일
우리 팀 아트가 블렌더로 작업한 파일을 FBX파일로 익스포트하여 자체 엔진에서 임포트, 파싱하여 사용하고 있는데 문제점이 있었습니다.
첫 번째로 속도입니다. FBX파일을 임포트하고 FBX 파서에서 Triangulate 함수로 씬 내의 모든 노드를 삼각형화하는데, 이 과정에서 많은 시간이 소요됩니다. 또 FBX 익스포트 시에 특정 옵션을 주지 않는 이상 노말맵을 위한 탄젠트 스페이스를 임포트 과정 중에 구해야하는데, 이 역시 시간이 소요됩니다.
두 번째로 보안성입니다. 게임을 배포할 때 우리 팀 아트가 작업한 모델을 FBX로 익스포트해 그대로 사용한다면 이 FBX파일을 내 엔진 이외에 다른 엔진에서도 그대로 사용이 가능할 것입니다. 위의 두 가지 이유로, 메쉬의 삼각형화와 탄젠트 스페이스를 미리 구해놓고 내 엔진의 Importer, Parser에서만 읽을 수 있는 자체적인 포맷이 필요하다고 생각했습니다.
포맷 이름은 .ERJ로 팀 이름인 EggRoll과 성을 따서 만들었습니다. 다음과 같은 과정을 거쳐 FBX를 자체 포맷으로 변환하고 자체 엔진에서 읽어들입니다.
- FBX 폴더 내의 모든 FBX파일의 수를 셉니다. ( 진행률을 알기 위해서 )
- FBX 파일들을 임포트한 후 파싱하여 자체 엔진에서 쓸 Mesh 구조체에 데이터들을 차곡차곡 담습니다.
- 그 데이터들을 ERJ 파일 형식으로 저장합니다.
- 자체 엔진에서 .FBX 대신 .ERJ를 읽습니다. .ERJ는 이미 메쉬의 삼각형화가 완료되어있고, 탄젠트 스페이스도 구해져있습니다. 따라서 바로 버퍼로 만드는 것이 가능합니다.
따라서, vertex 구조체가 들어있는 vector 컨테이너도 통째로 저장할 수 있습니다.
'DirectX 자체엔진 개발' 카테고리의 다른 글
[DirectX 11] HDR, Tone Mapping (0) | 2022.04.15 |
---|---|
[DirectX 11] 외곽선 (0) | 2022.04.14 |
[DirectX 11] 파티클 시스템 (0) | 2022.03.18 |
[DirectX 11] Emissive (0) | 2022.03.14 |
[DirectX 11] Bloom (1) | 2022.03.11 |