testlevel 에 fbx loading 이 추가 됨.
fbx 파일은 3d max에서 디자이너들이 툴을 이용해서 모델링을 만들어서 모델링 파일을 추출할 때 사용하는 포맷이다.
fbx파일 안에는 단순하게 정점같은 메쉬정보만 들어있는게 아니라, 거기에 입혀질 텍스쳐, 재질, 애니메이션같은 행렬정보도 들어있다. 모델링이 게임에서 표현되기 위한 종합적인 모든 데이터가 다 들어있다고 생각하면 된다.
meshdata 클래스를 만듦.
fbx파일을 분석하고 그 안에서 데이터를 추출해야한다. (우리가 직접할 수 없음)
* autodest에 가면 fbx 해체하는? 그런 라이브러리를 제공함.
global.h 에서 FBXLoader 헤더랑 라이브러리 참조하게 함.
mesh 리소스랑 랜더컴포넌트 구조가 좀 바뀜,
전에는 랜더컴포넌트가 매쉬 하나 재질 하나만 가졌다.
매쉬가 인덱스버퍼가 여러개 생겼다. (이제 정점버퍼 하나에 인덱스버퍼가 여러개)
(전에는 인덱스버퍼 1개, 버텍스버퍼 1개였다)
why? 캐릭터가 옷을 입고 있다면, 그 옷의 재질이 다르니까 인덱스버퍼를 상의, 하의, 다른 몸 이렇게 3개를 둔다.
만약 인덱스버퍼가 3개라면, 3번 랜더링을 해야한다..
즉, 하나의 매쉬 안에서도 부분마다 적용되어야 할 재질이 다르기 때문에 인덱스 버퍼가 다르게 적용되어야 한다.
CMeshRender.cpp
// 렌더
UINT iSubsetCount = GetMesh()->GetSubsetCount();
for (UINT i = 0; i < iSubsetCount; ++i)
{
if (nullptr != GetMaterial(i))
{
// 사용할 재질 업데이트
GetMaterial(i)->UpdateData();
// 사용할 메쉬 업데이트 및 렌더링
GetMesh()->render(i);
}
}
'DirectX 11 3d' 카테고리의 다른 글
230629 FBX 애니메이션 로딩 (0) | 2023.07.14 |
---|---|
230621 Directional Light Shadow (0) | 2023.07.13 |
230619 Mapmapping (0) | 2023.06.26 |
230615 LandScape - Splating(색칠) (0) | 2023.06.26 |
230609 LandScape Heightmap (0) | 2023.06.25 |