.FBX 파일에서 씬 가져오기
.FBX 파일을 포함한 다양한 파일 형식의 씬을 FBX SDK를 통해 가져올 수 있습니다.
I/O 설정 객체 만들기
FbxIOSettings 클래스는 씬의 요소를 파일에서 가져오거나 파일로 내보낼지 여부를 지정합니다. 이러한 요소에는 camera, light, mesh, texture, material, animation, 사용자 정의 속성 등이 포함됩니다.
FbxIOSettings 객체는 FbxImporter 또는 FbxExporter 객체에 전달되기 전에 인스턴스화되고 구성되어야합니다. FBX SDK의 대부분의 객체와 마찬가지로 FbxIOSettings 객체는 FbxManager 싱글 톤을 사용하여 생성되고 관리됩니다.
// FBX SDK 관리자 객체 생성
FbxManager* manager = FbxManager::Create();
// IOSettings 객체 생성 및 설정
FbxIOSettings * ios = FbxIOSettings::Create(manager, IOSROOT);
manager->SetIOSettings(ios);
Importer 초기화
씬을 가져오는 기능은 FbxImporter 클래스에 의해 추상화됩니다. FbxImporter의 인스턴스는 FbxManager 싱글 톤 객체에 대한 참조로 만들어집니다.
FbxImporter 객체는 반드시 세 개의 매개변수와 함께 FbxImporter::Initialize() 멤버 함수가 호출되어야 합니다. 여기서 첫 번째 매개변수는 가져오려는 fbx 파일명입니다.
// FBX SDK 관리자 객체 생성
FbxManager* manager = FbxManager::Create();
// IOSettings 객체 생성 및 설정
FbxIOSettings * ios = FbxIOSettings::Create(manager, IOSROOT);
manager->SetIOSettings(ios);
// FbxImporter 객체 생성
FbxImporter* importer = FbxImporter::Create(manager, "");
// importer 초기화
bool status = importer->Initialize("file.fbx", -1, manager->GetIOSettings());
만약 FbxImporter::Initialize() 호출에서 어떠한 오류가 발생하면 메서드는 false를 반환합니다.
if(!status) {
printf("Call to FbxImporter::Initialize() failed.\n");
printf("Error returned: %s\n\n", lImporter->GetStatus().GetErrorString());
exit(-1);
}
씬 가져오기
importer 초기화되면 파일에서 씬을 로드하기 위해 씬 컨테이너를 만들어야 합니다/ FBX SDK의 씬은 FbxScene 클래스에 의해 추상화됩니다.
FbxScene* scene = FbxScene::Create(manager, "scene");
// fbx 파일 내용을 scene으로 가져온다.
importer->Import(scene)
파일 내용을 씬으로 채운 후에는 메모리 사용을 줄이기 위해 importer를 소멸시키는 것이 안전합니다.
importer->Destroy();