DirectX 11 3d

230626 FBX 정적 매쉬 로딩

슬뷔 2023. 7. 13. 23:58

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