void ExportAnimFbx( const FString& ExportFilename, UAnimSequence* AnimSequence, USkeletalMesh* Mesh, bool bSaveSkeletalMesh ) { if( !ExportFilename.IsEmpty() && AnimSequence && Mesh ) { FString FileName = ExportFilename; FEditorDirectories::Get().SetLastDirectory(ELastDirectory::FBX_ANIM, FPaths::GetPath(FileName)); // Save path as default for next time. UnFbx::FFbxExporter* Exporter = UnFbx::FFbxExporter::GetInstance(); Exporter->CreateDocument(); Exporter->ExportAnimSequence(AnimSequence, Mesh, bSaveSkeletalMesh); // Save to disk Exporter->WriteToFile( *ExportFilename ); } }
bool ExportFBX(UStaticMesh* Mesh, FString RootFolder) { FString SelectedExportPath = RootFolder + Mesh->GetName(); UnFbx::FFbxExporter* Exporter = UnFbx::FFbxExporter::GetInstance(); Exporter->CreateDocument(); Exporter->ExportStaticMesh(Mesh); #if NO_CUSTOM_SOURCE FbxScene* Scene = Exporter->Scene; #else FbxScene* Scene = Exporter->GetFbxScene(); #endif for (int i = 0; i < Scene->GetNodeCount(); i++) { FbxNode* Node = Scene->GetNode(i); FbxDouble3 Rotation = Node->LclRotation.Get(); Rotation[2] -= 90; Node->LclRotation.Set(Rotation); } for (int i = 0; i < Scene->GetMaterialCount(); i++) { FbxSurfaceMaterial* Material = Scene->GetMaterial(i); Scene->RemoveMaterial(Material); } FbxSurfaceLambert* FbxMaterial = FbxSurfaceLambert::Create(Scene, "Fbx Default Material"); FbxMaterial->Diffuse.Set(FbxDouble3(0.72, 0.72, 0.72)); Scene->AddMaterial(FbxMaterial); FbxAxisSystem::EFrontVector FrontVector = FbxAxisSystem::eParityEven; const FbxAxisSystem UnrealZUp(FbxAxisSystem::eYAxis, FbxAxisSystem::eParityOdd, FbxAxisSystem::eRightHanded); UnrealZUp.ConvertScene(Scene); Exporter->WriteToFile(*SelectedExportPath); return true; }