1 #include <osg/CameraView>
2 #include <osg/Notify>
3 
4 #include <osgDB/ReadFile>
5 
6 #if defined(_MSC_VER)
7 #pragma warning( disable : 4505 )
8 #pragma warning( default : 4996 )
9 #endif
10 #include <fbxsdk.h>
11 
12 #include "fbxReader.h"
13 
readFbxCamera(FbxNode * pNode)14 osgDB::ReaderWriter::ReadResult OsgFbxReader::readFbxCamera(FbxNode* pNode)
15 {
16     const FbxCamera* fbxCamera = FbxCast<FbxCamera>(pNode->GetNodeAttribute());
17 
18     if (!fbxCamera)
19     {
20         return osgDB::ReaderWriter::ReadResult::ERROR_IN_READING_FILE;
21     }
22 
23     osg::CameraView* osgCameraView = new osg::CameraView;
24 
25     if (fbxCamera->FieldOfView.IsValid())
26     {
27         osgCameraView->setFieldOfView(fbxCamera->FieldOfView.Get());
28     }
29 
30     if (fbxCamera->FocalLength.IsValid())
31     {
32         osgCameraView->setFocalLength(fbxCamera->FocalLength.Get());
33     }
34 
35     if (fbxCamera->ApertureMode.IsValid())
36     {
37         switch (fbxCamera->ApertureMode.Get())
38         {
39         case FbxCamera::eHorizontal:
40             osgCameraView->setFieldOfViewMode(osg::CameraView::HORIZONTAL);
41             break;
42         case FbxCamera::eVertical:
43             osgCameraView->setFieldOfViewMode(osg::CameraView::VERTICAL);
44             break;
45         case FbxCamera::eHorizAndVert:
46         case FbxCamera::eFocalLength:
47         default:
48             OSG_WARN << "readFbxCamera: Unsupported Camera aperture mode." << std::endl;
49             break;
50         }
51     }
52 
53     return osgDB::ReaderWriter::ReadResult(osgCameraView);
54 }
55