#include "../Common/Common.h"
#define SAMPLE_FILENAME "StereoCamera.fbx"
void GetStereoCameraInfo(
FbxNode* pNode);
 
void CreateStereoCamera(
FbxScene* pScene);
 
static bool gVerbose = true;
int main(int argc, char** argv)
{
    bool lResult;
    
    InitializeSdkObjects(lSdkManager, lScene);
    
    
    for( int i = 1, c = argc; i < c; ++i )
    {
        if( 
FbxString(argv[i]) == 
"-test" ) gVerbose = 
false;
 
        else if( lFilePath.IsEmpty() ) lFilePath = argv[i];
    }
    if( lFilePath.IsEmpty() ) lFilePath = SAMPLE_FILENAME;
    FBXSDK_printf("\n\nFile: %s\n\n", lFilePath.Buffer());
    lResult = LoadScene(lSdkManager, lScene, lFilePath.Buffer());
    if(lResult == false)
    {
        FBXSDK_printf("\n\nAn error occurred while loading the scene...");
    }
    else 
    {
        if(!lScene)
        {
            FBX_ASSERT_NOW("null scene");
        }
        
        
        GetStereoCameraInfo(lRootNode);
        
        CreateStereoCamera(lScene);
    }
    
    DestroySdkObjects(lSdkManager, lResult);
    return 0;
}
void GetStereoCameraInfo(
FbxNode* pNode)
 
{
    if(!pNode)
        return;
    
    {
        
        
        
        
        FBXSDK_printf(
"left camera: %s\n", lLeftName.
Buffer());
 
        
        FbxString lRightName = lRightCamera->GetName();
 
        FBXSDK_printf(
"right camera: %s\n", lRightName.
Buffer());
 
        
        
        FBXSDK_printf("reevaluated left camera film offset: %f\n", lLeftOffsetX);
        FBXSDK_printf("The original FBX left camera film offset: %f\n", lLeftFbxOffsetX);
        FBXSDK_printf("reevaluated right camera film offset: %f\n", lRightOffsetX);
        double lRightFbxOffsetX = lRightCamera->FilmOffsetX.Get();
        FBXSDK_printf("The original FBX right camera film offset: %f\n", lRightFbxOffsetX);
        
        
        
        FBXSDK_printf("===local TRS of left camera===\n");
        PrintMatrix(lLeft_localMatrix);
        FBXSDK_printf("===global TRS of left camera===\n");
        PrintMatrix(lLeft_globalMatrix);
        
        FBXSDK_printf("===local TRS of right camera===\n");
        PrintMatrix(lRight_localMatrix);
        FBXSDK_printf("===global TRS of right camera===\n");
        PrintMatrix(lRight_globalMatrix);
    }
    
    for (i = 0; i < lCount; i++)
    {
        GetStereoCameraInfo(pNode->
GetChild(i));
 
    }
}
{
    if( !gVerbose ) return;
    
    FBXSDK_printf(" T : %f %f %f %f\n", 
    FBXSDK_printf(" R : %f %f %f %f\n", 
    FBXSDK_printf(" S : %f %f %f %f\n", 
}
void CreateStereoCamera(
FbxScene* pScene)
 
{
    if(!pScene)
        return;
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    FBXSDK_printf("FocalLength of left camera: %f\n", lFocalLength_Left);
    double lFocalLength_Left_src = 0;
    
    if(lLeftSrcLengthProperty.
IsValid())
 
    {
        lFocalLength_Left_src = lLeftSrcLengthProperty.
Get<
FbxDouble>();
 
        FBXSDK_printf("Initialized FocalLength of left camera source:   %f\n", lFocalLength_Left_src);
        
        
        
        
        FBXSDK_printf("FocalLength of left camera:   %f\n", lFocalLength_Left);
        
        lFocalLength_Left_src = lLeftSrcLengthProperty.
Get<
FbxDouble>();
 
        FBXSDK_printf("FocalLength of left camera source:   %f\n", lFocalLength_Left_src);
    }
}