2017-02-21 5 views
0

FBX SDK를 2016로 업그레이드했지만 버그가 있습니다.FbxAnimCurve는 SDK 2016과 2009 버전간에 다른 동작을합니다

오래된 코드는 다음과 같습니다

KFbxCamera * FBXPopulator::GetActiveCamera(KTime & a_Time) const { KFbxCameraSwitcher* cameraSwitcher = m_Scene->GetGlobalCameraSettings().GetCameraSwitcher(); if (cameraSwitcher) { KFCurve* curve = cameraSwitcher->CameraIndex.GetKFCurve(NULL, m_Scene->GetCurrentTakeName()); if (curve) { int32_t index = static_cast< int32_t >(curve->Evaluate(a_Time) - 1); return m_DeclaredCameras[ index ]->GetCamera(); } } return NULL; }

현재 코드는 다음과 같습니다

FbxCamera * FBXPopulator::GetActiveCamera(FbxTime & a_Time) const { FbxCameraSwitcher* cameraSwitcher = m_Scene->GlobalCameraSettings().GetCameraSwitcher(); if (cameraSwitcher) { //Is it right here? FbxAnimCurve* curve = cameraSwitcher->CameraIndex.GetCurve(m_Scene->GetCurrentAnimationStack()->GetMember()); if (curve) { int32_t index = static_cast< int32_t >(curve->Evaluate(a_Time) - 1); return m_DeclaredCameras[index]->GetCamera(); } } return NULL; }

잘못인가?

2009 버전에서는 index == 0이고 2016 버전에서는 index == 1입니다.

제안 사항? 감사합니다.

답변

0

답변은 새로운 SDK는 일부 필드를 올바르게 읽을 수 없다는 것입니다. FBX Converter 2009로 fbx 파일을 변환합니다. 작동합니다. 하지만 이유는 모르겠습니다.