diff --git a/examples/js/loaders/FBXLoader.js b/examples/js/loaders/FBXLoader.js index d5d5d44d7d5e46f5ccc80a8e07d61f116dbd0de7..ed23e7b19eb249c4d73e63e8aab3213747593040 100644 --- a/examples/js/loaders/FBXLoader.js +++ b/examples/js/loaders/FBXLoader.js @@ -112,7 +112,7 @@ } - // console.log( FBXTree ); + console.log( FBXTree ); var connections = parseConnections( FBXTree ); var images = parseImages( FBXTree ); @@ -2054,6 +2054,55 @@ var rawLayers = FBXTree.Objects.subNodes.AnimationLayer; var rawStacks = FBXTree.Objects.subNodes.AnimationStack; + var fps = 30; // default framerate + + if ( 'GlobalSettings' in FBXTree && 'TimeMode' in FBXTree.GlobalSettings.properties ) { + + /* Autodesk time mode documentation can be found here: + * http://docs.autodesk.com/FBX/2014/ENU/FBX-SDK-Documentation/index.html?url=cpp_ref/class_fbx_time.html,topicNumber=cpp_ref_class_fbx_time_html + */ + var timeModeEnum = [ + 30, // 0: eDefaultMode + 120, // 1: eFrames120 + 100, // 2: eFrames100 + 60, // 3: eFrames60 + 50, // 4: eFrames50 + 48, // 5: eFrames48 + 30, // 6: eFrames30 (black and white NTSC ) + 30, // 7: eFrames30Drop + 29.97, // 8: eNTSCDropFrame + 29.97, // 90: eNTSCFullFrame + 25, // 10: ePal ( PAL/SECAM ) + 24, // 11: eFrames24 (Film/Cinema) + 1, // 12: eFrames1000 (use for date time)) + 23.976, // 13: eFilmFullFrame + 30, // 14: eCustom: use GlobalSettings.properties.CustomFrameRate.value + 96, // 15: eFrames96 + 72, // 16: eFrames72 + 59.94, // 17: eFrames59dot94 + ]; + + var eMode = FBXTree.GlobalSettings.properties.TimeMode.value; + + if ( eMode === 14 ) { + + if ( 'CustomFrameRate' in FBXTree.GlobalSettings.properties ) { + + fps = parseFloat( FBXTree.GlobalSettings.properties.CustomFrameRate.value ); + + fps = ( fps === - 1 ) ? 30 : fps; + + } + + } else if ( eMode <= 17 ) { // for future proofing - if more eModes get added, they will default to 30fps + + fps = timeModeEnum[ eMode ]; + + } + + } + + /** * @type {{ curves: Map