Files
OpenSceneGraph/src/osgPlugins/fbx/fbxRCamera.cpp
Robert Osfield 82ecbe98da From Laurens Voerman, "Autodesk released a new version of their FBX Software Development Kit (web page http://usa.autodesk.com/adsk/servlet/pc/item?siteID=123112&id=10775847).
The API has changed quite a bit, so lots of changes had to be made in the osg readerwriter. The preious version of the FBX SDK (2013.3) already deprecated a lot of the names and functions. The code I submit now still compiles against 2013.3 (possibly needs a #define FBX_NEW_API). Not sure if that's useful, but it might ease the transition."
2013-06-03 14:27:14 +00:00

55 lines
1.4 KiB
C++

#include <osg/CameraView>
#include <osg/Notify>
#include <osgDB/ReadFile>
#if defined(_MSC_VER)
#pragma warning( disable : 4505 )
#pragma warning( default : 4996 )
#endif
#include <fbxsdk.h>
#include "fbxReader.h"
osgDB::ReaderWriter::ReadResult OsgFbxReader::readFbxCamera(FbxNode* pNode)
{
const FbxCamera* fbxCamera = FbxCast<FbxCamera>(pNode->GetNodeAttribute());
if (!fbxCamera)
{
return osgDB::ReaderWriter::ReadResult::ERROR_IN_READING_FILE;
}
osg::CameraView* osgCameraView = new osg::CameraView;
if (fbxCamera->FieldOfView.IsValid())
{
osgCameraView->setFieldOfView(fbxCamera->FieldOfView.Get());
}
if (fbxCamera->FocalLength.IsValid())
{
osgCameraView->setFocalLength(fbxCamera->FocalLength.Get());
}
if (fbxCamera->ApertureMode.IsValid())
{
switch (fbxCamera->ApertureMode.Get())
{
case FbxCamera::eHorizontal:
osgCameraView->setFieldOfViewMode(osg::CameraView::HORIZONTAL);
break;
case FbxCamera::eVertical:
osgCameraView->setFieldOfViewMode(osg::CameraView::VERTICAL);
break;
case FbxCamera::eHorizAndVert:
case FbxCamera::eFocalLength:
default:
OSG_WARN << "readFbxCamera: Unsupported Camera aperture mode." << std::endl;
break;
}
}
return osgDB::ReaderWriter::ReadResult(osgCameraView);
}