zoukankan      html  css  js  c++  java
  • osg 添加 fbx插件 osg中编译fbx

    使用osg加载fbx模型,需要自己编译fbx插件,编译流程与插件使用案例如下

    代码地址:https://github.com/shelltdf/osgFBX

    CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
    Please set them or make sure they are set and tested correctly in the CMake files:
    FBX_LIBRARY
    linked by target "osgdb_fbx" in directory E:/FBX/osgFBX-master/src/osgPlugins/fbx
    FBX_LIBRARY_DEBUG
    linked by target "osgdb_fbx" in directory E:/FBX/osgFBX-master/src/osgPlugins/fbx

    Configuring incomplete, errors occurred!

    See also "E:/FBX/build/CMakeFiles/CMakeOutput.log".

    cmake中配置

    FBX_INCLUDE_DIR       E:/AutoDesk/FBX/FBX_SDK/2019.0/include

    FBX_LIBRARY                E:/AutoDesk/FBX/FBX_SDK/2019.0/lib/vs2015/x64/release/libfbxsdk-md.lib

    FBX_LIBRARY_DEBUG           E:/AutoDesk/FBX/FBX_SDK/2019.0/lib/vs2015/x64/debug/libfbxsdk-md.lib

    Configuring done

    WARNING: Target "osgdb_fbx" requests linking to directory "E:/AutoDesk/FBX/FBX_SDK/2019.0/lib/vs2015/x64/debug". Targets may link only to libraries. CMake is dropping the item.

    WARNING: Target "osgdb_fbx" requests linking to directory "E:/AutoDesk/FBX/FBX_SDK/2019.0/lib/vs2015/x64/release". Targets may link only to libraries. CMake is dropping the item.

    WARNING: Target "osgdb_fbx" requests linking to directory "E:/AutoDesk/FBX/FBX_SDK/2019.0/lib/vs2015/x64/release". Targets may link only to libraries. CMake is dropping the item.

    WARNING: Target "osgdb_fbx" requests linking to directory "E:/AutoDesk/FBX/FBX_SDK/2019.0/lib/vs2015/x64/release". Targets may link only to libraries. CMake is dropping the item.

    Generating done

    在对应的build目录下找到生成的项目文件

    我是使用vs2015  x64  编译的,所以用vs2015打开该工程

    修改   E:FBXosgFBX-mastersrcosgPluginsfbx     ImportTextureAndImage.cpp

    osg::Texture* LoadMaterialTexture(FbxProperty* pProperty
        //, std::map<std::string, std::string>& copy_image_list
    )
    {
        osg::Texture* tex = 0;
    
        if (pProperty)
        {
            //查询贴图数量
            //int textureCount = pProperty->GetSrcObjectCount(FbxTexture::ClassId);
            int textureCount = pProperty->GetSrcPropertyCount();
    
            //目前只处理第一个找到的贴图
            for (int j = 0; j < textureCount; ++j)
            {
                FbxTexture* pTexture = FbxCast<FbxTexture>(pProperty->GetSrcObject(j));
                //FbxTexture* pTexture = FbxCast<FbxTexture>(pProperty->GetSrcObject(FbxTexture::ClassId, j));
                if (pTexture)
                {
                    printf("Texture %s: %s
    ", pProperty->GetName().Buffer(), pTexture->GetName());
    
                    //如果贴图存在
                    tex = new osg::Texture2D();
                    //tex->setUniformPath(pTexture->GetName());
                    tex->setFilter(osg::Texture2D::MIN_FILTER, osg::Texture2D::LINEAR);
                    tex->setFilter(osg::Texture2D::MAG_FILTER, osg::Texture2D::LINEAR);
                    tex->setWrap(osg::Texture::WRAP_S, osg::Texture::REPEAT);
                    tex->setWrap(osg::Texture::WRAP_T, osg::Texture::REPEAT);
                    tex->setWrap(osg::Texture::WRAP_R, osg::Texture::REPEAT);
    
    
                    //如果是file贴图
                    FbxFileTexture* file_tex = FbxCast<FbxFileTexture>(pTexture);
                    if (file_tex)
                    {
                        std::string filename = file_tex->GetFileName(); //绝对路径
                        osg::Image* image = osgDB::readImageFile(filename);
                        if (image)
                        {
                            tex->setImage(0,image);
                        }
    
                        ////处理image对象
                        //nbSG::Image* image = new nbSG::Image();
                        //tex->setImage(image);
    
                        ////路径处理
                        //std::string filename = file_tex->GetFileName(); //绝对路径
                        //nbBase::Path p(filename);
                        //std::string name = p.getLastName();
    
                        ////设置对象
                        //image->setUniformPath(name);
                        //image->setExternalPath(name);
    
                        ////复制外部文件
                        ////  从 filename 绝对路径
                        ////  到 name     uniform路径
                        ////printf("copy %s %s
    " ,filename.c_str() , name.c_str() );
                        //copy_image_list[nbBase::Path(filename).getNativePath()] = name;
                    }
    
                    //只返回第一个
                    return tex;
                }
            }
        }
    
        return tex;
    }
    ================================================================================
    
                                         README
    
                                 Autodesk FBX SDK 2019
                                 -----------------------
    
    
    Welcome to the FBX SDK readme! This document includes the latest changes since
    the previous release version of the Autodesk FBX SDK, such as new features, bug
    fixes, known issues, deprecated functions/classes and previous releases notes.
    
    For more information, please visit us at http://www.autodesk.com/fbx/
    
    To join the FBX Beta Program, please visit the Autodesk Feedback Community site
    at http://beta.autodesk.com
    
    Sincerely,
    the Autodesk FBX team
    
    ================================================================================
    
    
    
    TABLE OF CONTENTS
    -----------------
    
        1. Features, Improvements And Changes
        2. Fixed And Known Issues
        3. Release Notes From Previous Releases
        4. Legal Disclaimer 
    
    
    
    1. FEATURES, IMPROVEMENTS AND CHANGES
    -------------------------------------
    
    1.1 Improvements and New Features
    
        * Re-enabled the Alembic caches support for Ogawa archives. HDF5 is not supported anymore inside the FBX SDK.
          Note that all the WindowStore and IOs architectures do not provide Alembic support.
    
    1.2 Changes and Deprecated Features
    
        * Consider animation corrupted if keys times are not ordered by increase value
          (i.e: T(i) must be less or equal to T(i+1))
    
    
    2. FIXED AND KNOWN ISSUES
    -------------------------
    
    2.1 Fixed Issues
    
        [FBXX-1499] Fix potential crash when writing Acclaim file.
        [FBXX-1483] Security Improvements.
        [FBXX-1481] Fix potential crash in FbxGeometryConverter::ComputeEdgeSmoothingFromNormals
        [FBXX-1480] 3DS Reader returns a false positive error.
        [FBXX-1479] FBXCollada improve write time of mesh data.
        [FBXX-1476] FbxIO::GetTmpProjectName and FbxIO::SwapFromTmpProject bad execution.
        [FBXX-1474] Password protected files status is overwritten.
        [FBXX-1433] Update Alembic to version 1.7.5.
        
    2.2 Known Issues
    
    
    3. RELEASE NOTES FROM PREVIOUS RELEASES
    ---------------------------------------
    2019.1
        * Added the FBX standardized renaming strategy to the Collada file read/write. This renaming
          strategy will replace every character in the object names/ids, which does not comply with
          the XML NCName scheme, with a string in the form "FBXASC###" were ### is the decimal value
          of the ASCII character.
        
        * Added extra parameter to GenerateTangentsData() family functions to skip testing for the tangent flip
    
        * moved the static functions FbxRenamingStrategy::NoPrefixName to FbxRenamingStrategyUtils::NoPrefixName
          and it now returns an FbxString instead of a char*
        
        * Starting with this version of the FBX SDK your programs must explicitly link with the zlib and 
          libxml2 libraries. On Linux and MacOS, these libraries should already be part of the system. If 
          not, you must install them.
        
        * disabled Alembic support
        
        [FBXX-1438] Fixed EvaluateGlobalBoundingBoxMinMaxCenter so it correctly returns the 3D volume bounding box.
        [FBXX-1417] Fixed Wgettimeofday and Wgetlogin already define linker error.
        [FBXX-1383] Fixed stack overflow when importing Collada files defining external references.
        
    2018.1.1
        * [FBXX-1384] Regression issue introduced by the Audio transport feature.
        * [FBXX-1386] Copying FbxSkin object into another does not copy all data.
        
    2018.1
        * [FBXX-1258] Add Audio transport support. 
        * [FBXX-1279] Added more options to the FbxSceneCheck utility class.
    
    2018.0
    
        * [FBXX-1303] Crash when deleting NURBS created with FbxGeometryConverter::ConvertPatchToNurbsSurface()
        * [FBXX-1280] Invalid pointer access
        * [FBXX-1257] Invalid value for a malloc
        * [FBXX-1143] Collada reader
        * [FBXX-1140] Crash in FbxGeometryConverter::Triangulate with huge poly count (60 millions +)
        
    2017.1.1
    
        Fixed some global HDF5 symbols that were missed during the previous namespacing. These
        symbols only caused an issue on Linux builds when an application links with both the
        FBX SDK and its own version of Alembic/HDF5 libraries static libraries.
    
    2017.1
    
        * [FBXX-1225] Security Improvements.
        * Alembic code has been fully namespaced to avoid duplicated function conflicts when applications
          link the FBX SDK and other Alembic libraries.
    
    2017.0.2
    
        * [FBXX-1207] FBX SDK library for VS2015 builds with the Target Platform Version 10.0.10586.0
    
    2017.0.1
    
        * [FBXX-999] Added the new eRelativeRepetition flag to the animation curves extrapolation flags.    
        * [FBXX-1023] Refactored FbxUtils to minimize possible buffer under/overflows.
        * [FBXX-1031] Added new roll bones to the FbxCharacter definition.
        * [FBXX-1066] The SDK version is still reported as an "Alpha" release
        * [FBXX-1019] Loading a .3ds file with a texture is very slow when using Python bindings
        * [FBXX-1026] Crash when triangulating NURBS surfaces
        * [FBXX-1051] In some cases shape normals are written beyond array boundaries
        Removed deprecated functions
        
            FbxObject::Is(const FbxClassId& pClassId)
            FbxObject::DisconnectAllSrcObject(FbxClassId pClassId)
            FbxObject::GetSrcObjectCount(FbxClassId pClassId)
            FbxObject::GetSrcObject(FbxClassId pClassId, int pIndex=0)
            FbxObject::FindSrcObject(FbxClassId pClassId, const char* pName, int pStartIndex=0)
            FbxObject::DisconnectAllDstObject(FbxClassId pClassId)
            FbxObject::GetDstObjectCount(FbxClassId pClassId)
            FbxObject::GetDstObject(FbxClassId pClassId, int pIndex=0)
            FbxObject::FindDstObject(FbxClassId pClassId, const char* pName,int pStartIndex=0)
        
            FbxProperty::DisconnectAllSrcObject(const FbxClassId& pClassId)
            FbxProperty::GetSrcObjectCount(const FbxClassId& pClassId)
            FbxProperty::GetSrcObject(const FbxClassId& pClassId, const int pIndex=0)
            FbxProperty::FindSrcObject(const FbxClassId& pClassId, const char* pName, const int pStartIndex=0)
            FbxProperty::DisconnectAllDstObject(const FbxClassId& pClassId)
            FbxProperty::GetDstObjectCount(const FbxClassId& pClassId)
            FbxProperty::GetDstObject(const FbxClassId& pClassId, const int pIndex=0)
            FbxProperty::FindDstObject(const FbxClassId& pClassId, const char* pName, const int pStartIndex=0)
    
    2016.1.2
    
        * [FBXX-1009] StringList default values not correctly initialized (regression in 2016.1).
          Properties created with the FbxStringListDT data type were failing to initialize their default
          value since the implementation of [FBXX-946]
    
    2016.1.1
    
        * Added the GetMatrix(FbxAMAtrix& pMatrix) function to the FbxAxisSystem class that retrieves
          the axis definition in the 4x4 matrix form.
    
        * [FBXX-997] FBX SDK Sample ExportScene05 uses a "reserved" (ABC) file extension.
          the ABC extension being also used by the Alembic reader, the sample was selecting
          the wrong reader when trying to load the custom file. Changed the extension of the
          sample so no more conflict can occur. Note that the ABC extension can still be used
          but a manual detection of the readerID, by calling FindReaderIDByDescription(),
          is mandatory.
    
          
        * [FBXX-988] Resolved use of arbitrary up vector on cameras driven by a target. 
          The FbxAnimEvalClassic::ComputeGlobalTransform() was implicitly assuming in its calculations,
          when the pApplyTarget is true, that the global up vector of cameras constrained by an aim 
          target is always (0,1,0). This was a false assumption if a different FbxSystemAxis had been 
          applied to the scene and, at best, produced an arbitrary rotation of these cameras when the 
          aim vector was parallel to the (0,1,0) vector.
          
        * [FBXX-986] Fixed potential security issue when reading certain legacy FBX files
    
    
    2016.1
    
        * [FBXX-967] Improved the LodGroup object to allow it to store thresholds
          as percentage values or distance from camera.
                   
        * [FBXX-946] Properties with the FbxEnumDT data type now perform a strict
          validation to forbid duplicates when items are added, inserted or replaced
          in the enumeration list. The new eFbxEnumM type identifier is available for
          users who want to create their own runtime enumeration data type that can 
          accept duplicated entries.
        
        * [FBXX-963] In the Collada reader, replaced xmlParseFile() function call with 
          xmlReadFile() so we can set XML_PARSE_HUGE flag, which relaxes any hard-coded
          limit from the parser. This affects limits like maximum depth of a document or
          the entity recursion, as well as limits of the size of text nodes.
    
        * [FBXX-952] Fixed an issue with the Animation Curve Pre/Post Extrapolation
          data. In the very particular case of a program creating an animation curve
          directly in memory that set the extrapolation flags and then tries to evaluate
          the curve outside the animation range, the extrapolation flags were not 
          considered until the curve was saved to disk.
         
        * [MAYA-54538] An overlooked condition from the fix above introduced a regression
          in the FBX SDK 2016.1 alpha.
    
        * [MAXX-23051] An update to the FbxAMatrix::GetROnly() caused a regression when 
          detecting the Euler gimbal locks while extracting the rotation vector value. 
          The default threshold value used for this detection can be to small for a 
          correct detection if the matrix is constructed with very low precision single
          floating point values. 
          The FBX SDK now provides a method (FbxEuler::SetDegenerateThreshold()) to allow
          the client application to change the threshold value at runtime.
    
    2016.0
    
        * Visual Studio 2008 builds are no longer supported. Visual Studio 2010,
          2012 and 2013 are supported.
        
        * Updated file format to 7.5 (compatible with 2016+ products) which now
          uses 64bit integers in the binary block headers to allow for large file
          support (>2GB). These new FBX files will NOT import in older products
          (2015 or less), so make sure you set the right export format if you need
          to target these older products.
        
        * iPhone Simulator build is now a universal binary that contain both 32 and
          64bit architectures.
        
        * Starting in this release, the FBX SDK name space will no longer contain
          version indications.
        
        * Improved the camera manipulator speed when very close to camera interest
          position.
        
        * Added RemoveBadPolygonsFromMeshes to FbxGeometryConverter class to allow
          clean-up whole scene (typically, this function must be called before
          Triangulate or any other utility functions that are manipulating meshes).
    
        * Default export file format is now 7.5 (compatible with 2016+ products).
        
        * Removed deprecated functions
            - FbxProperty::SetParent
            - FbxProperty::SetArraySize
            - FbxProperty::GetArraySize
            - FbxProperty::GetArrayItem
            - FbxProperty::operator[]
    
        * If user code retrieves the transform values directly from the LclTranslation,
          LclRotation and LclScaling properties, the fixes made to the ConvertPivotAnimation 
          may require to change how these property values are retrieved.
          
          Now, when ConvertPivotAnimation is called, the computed value may be stored on 
          the CurveNode channel instead of overwriting the property value. To correctly retrieve
          the computed values, we encourage using the function FbxProperty::EvaluateValue() with the
          time argument value different than FBXSDK_TIME_INFINITE.
          
          Alternatively, users can test for the presence of the CurveNode and retrieve the value
          directly from this object:
          
          ex: if (LclTranslation.GetCurveNode())
                x = LclTranslation.GetCurveNode()->GetChannelValue(0L);
    
        * Fixed a compilation error when attempting to use FbxAutoDeletePtr on Unix
          based systems.
        
        * Fixed an issue with bounding box calculations.
        
        * Fixed FbxPathUtils::Exist that was failing on MacOS for Sandboxed
          applications.
        
        * Fixed an issue with ConvertPivotAnimation that wasn't properly
          de-activating Rotation pivots/limits after conversion.
        
        * Fixed FbxMesh::RemoveBadPolygons() so that polygons with less than three
          vertices are properly considered invalid.
        
        * Improved CloneManager to avoid duplicating already cloned objects.
        
        * Fix rare crash in FbxScene::ForceKill caused by FbxCharacterPose.
        
        * Fixed an issue with GenerateTangentsDataForAllUVSets that was processing
          tangents for each polygon instead of each mesh when calling
          FbxGeometryConverter::SplitMeshPerMaterial.
        
        * Fixed an issue with ConvertPivotAnimation when processing multiple takes.
        
        * Fixed a crash with ReadUserElementData that was referencing invalid
          pointers.
        
        * Fixed a BVH import rotation issue on joints related to constant key
          reducer.
        
        * Fixed circular dependency in fbxsdk_nsbegin.h.
        
        * Fixed missing template instantiation for FbxSimpleMap and FbxObjectMap.
    
        * FbxAMatrix only works with XYZ rotation order.
    
        * Skew and Stretch matrices are not supported.
    
        * The FBX SDK is *NOT* thread safe.
    
        * Deformers do not support instancing. This causes point cache deforming to
          not be re-usable.
    
        * While assigned material can change on the node, material layers on the
          mesh cannot be instanced.
    
        * When exporting various file format, sometimes the scene gets modified
          permanently, resulting in data loss.
    
    2015.1
    
        * Added support for Visual Studio 2013 compiler.
        
        * iOS build changes: minimum iOS version is now 7.0 and now supports 3 main
          architectures (armv7, armv7s and arm64).
        
        * MacOS build changes: GCC build support dropped. MacOS minimum version is
          now 10.8, and is built with XCode 5.0 default Clang compiler.
        
        * Native Alembic support added: now .abc files can be directly opened,
          which will create the appropriate nodes and mesh in the FBX scene.
          Afterwards, users can access FbxCache data in order to read cache data.
          NOTE: Alembic support is currently only enabled for desktop operating
          systems (i.e. disabled on iOS/WinStore).
        
        * FbxCache now has a newer function, Read, which works regardless of cache
          type.
        
        * Add .zip read support: files and their dependencies, such as textures,
          can now be packaged into a .zip file, which can be directly read by the
          FBX SDK without unpacking. This is useful for file formats that don't
          support embedding textures. Only one scene per .zip file is supported.
        
        * FbxObject now has a virtual function Compact that can be overloaded, to
          implement object compacting. Calling Compact on FbxScene or FbxDocument
          will compact every objects connected as source.
          
        * FbxArray now provides a AddCompact and Compact function to reduce memory
          used by arrays.
        
        * Added operator equality and inequality to FbxPair.
        
        * Added new class FbxSharedPtr.
        
        * Improved the FbxCameraManipulator behavior:
          - Upon Frame-All, camera rotation is preserved
          - Upon Frame-All, take into account deformations on meshes
          - Make minimum distance to LookAt more robust
          - Improved minimum speed when camera is at minimum distance to LookAt
          
        * Added a new FBX_TRACE macro for debugging.
        
        * Added a new parameter to FbxCamera::ComputeProjectionMatrix to specify if
          the FOV should be preserved even if the viewport height is larger than
          the viewport width.
    
        * FbxGeometryConverter function ResetMeshesCenterToWorld renamed to
          RecenterSceneToWorldCenter because it doesn't change the vertices data.
        
        * Recent endianness changes were reverted because they are not necessary.
    
        * Fixed an issue with the matrix converter filter that wasn't resetting all
          members properly.
        
        * Made path utility functions more robust: files are no longer mistaken for
          folders, and trying to write in read-only folders should not crash any
          more.
        
        * The geometry converter Triangulate and SplitMeshesPerMaterials now
          properly handles blend shapes.
        
        * Fixed an issue with left over shape data upon reading FBX files.
        
        * Fixed a major corruption problem when trying to save files in iOS builds.
        
        * FBXSDK_ENV_IOS should no longer be defined on MacOS builds.
        
        * FbxThumbnails are now properly shared between document and importer's
          scene info.
        
        * Converting a scene's axis system with the FbxAxisSystem will now ignore
          pre/post rotation and rotation order values on node if RotationActive
          property is set to false.
        
        * Cleaned-up many warnings when compiling using XCode 5.0.
        
        * Fix a crash with layer element material cloning that was still pointing
          to an not-cloned FbxSurfaceMaterial object.
        
        * Fixed an issue with local time span not always written to FBX file.
        
        * Now when using FbxGeometryConverter::SplitMeshesPerMaterial, all layer
          elements will be copied to the new meshes instead of only the first one.
          
        * Fixed a rare crash upon loading corrupted FBX files.
        
        * Fixed multiple crashes upon loading Collada and OBJ files.
    
    2015.0
    
        * Added 4 new functions in FbxMatrix to generate LookTo and LookAt
          matrices.
    
        * Class FbxVertexCacheDeformer now has a type property to define the type
          of data it uses in the cache file channel.
        
        * Added a new generic read function to FbxCache, which returns an array of
          float managed internally. This function now works regardless of the cache
          file type.
        
        * FbxArray now use reference to elements rather than copies for greater
          memory performance.
        
        * Added a new function overload FbxMatrix::GetElements which now can return
          a rotation vector instead of a quaternion.
        
        * Matrix converter curve filter now supports TRS limits.
        
        * Cleaned and standardized comparison functors across the SDK.
        
        * Added operator += and -= to FbxRedBlackTree. FbxMap use this model.
        
        * Added new function FbxArray::RemoveRange that allows removing multiple
          items.
    
        * Renamed FbxSet to FbxMultiMap to clearly describe what it does.
        
        * Renamed FbxSet2 to FbxSet, since this is the actual set class in FBX SDK.
    
        * Polished the interface of FbxVertexCacheDeformer class to use the FBX SDK
          standard property model.
        
        * FbxArray will now use reference values for most of its functions.
        
        * FbxPropertyAttr members have been merged into FbxPropertyFlags for
          consistency.
    
        * Fix a regression with edge smoothing.
    
        * Fixed multiple memory alignment issues for iOS builds.
        
        * FbxProperty map in evaluate state now properly use an FbxProperty
          reference instead of a pointer.
          
        * Fixed issue with the evaluation state not properly clearing itself when
          the scene changes. This was causing memory corruption.
    
        * Fixed a crash when freeing the FbxManager in some circumstances.
    
        * Fixed a crash when importing some Collada files.
    
        * Fixed a crash when trying to create a folder in read-only locations on
          Linux/Mac.
    
        * Fixed an issue with tangents smoothing not considering flip.
    
    2014.2.1
    
        * The change to have the animation evaluator per manager instead of per
          scene has been reverted because it was causing a loss of functionality
          for some applications.
          
        * Now to retrieve the current animation stack, please use
          FbxScene::GetCurrentAnimationStack instead of
          FbxAnimEvaluator::GetContext.
    
        * FbxProperty::GetCurveNode should once again return the right curve node.
          This caused animation to be completely wrong in some cases.
          
        * Fixed an issue with camera node's LclTranslation property being
          incorrectly overwritten by the camera Position property.
    
    2014.2
    
        * Added new FBX SDK library targets: Windows Store, Mac Clang and iOS.
        
        * Major improvement to animation evaluation functions:
          - Now, the FbxAnimEvaluator instance is stored in the manager rather than
            the scene.
          - Add evaluation state to animation stacks to allow simultaneous
            evaluation of takes.
          - One evaluation state remains in the evaluator to be able to evaluate
            scene-less objects.
          - Remove the necessity to provide an index to evaluation functions of the
            evaluator. All 'fast' versions of these functions are no longer
            necessary so they have been removed.
          - Added a new function in FbxProperty to evaluate their value.
          - Greatly improve performance of FbxProperty::GetCurveNode by caching
            results in a map inside evaluation state.
          - Greatly reduce the size of a node and property evaluation states.
          
        * Greatly reduced the amount of memory allocations/free that were caused by
          FbxCriteria and FbxQuery. Should improve performance in most cases.
          
        * Added new global function FbxTypeComponentCount to retrieve a type's
          component count.
        
        * Added new functions FbxMapDelete, FbxMapFree and FbxMapDestroy to ease
          the process of deleting map content.
    
        * New function in FbxTime to retrieve the time string, which allow to
          specify which 'start' and 'end' element it can returns.
          
        * Added a new property to the camera manipulator to allow inverting
          controls.
    
        * FbxGeometry::ComputeBBox will no longer compute or change the bounding
          box value if the content is unloaded.
          
        * FbxString is now using a char pointer allocation again rather than an
          opaque std::string implementation, for easier debugging and better
          performance/memory footprint. It is no longer necessary to modify the
          autoexp.dat file of Visual Studio to see string content with debuggers.
          
        * More work has been put in to make it possible to clone a character and
          its dependencies. Please see fbxclonemanager.h comments for more info.
          
        * FbxGeometryConverter::SplitMeshesPerMaterial now correctly handles
          skinning on splitted meshes.
          
        * Exposed bounding box calculation function scene and nodes. Please check
          out FbxScene::ComputeBoundingBoxMinMaxCenter and
          FbxNode::EvaluateGlobalBoundingBoxMinMaxCenter.
          
        * Added new function in FbxGeometryConverter to re-center the scene meshes,
          please check out FbxGeometryConverter::ResetMeshesCenterToWorld.
          
        * Added new function in mesh to generate normals, working the same way
          generating tangents, which replace the old function
          FbxMesh::ComputeVertexNormals which only supported smooth normals. Please
          see FbxMesh::GenerateNormals.
          
        * Implemented FbxScene::Clone to properly duplicate scenes.
        
        * Added two new functions to FbxTime: SetFramePrecise and
          GetFrameCountPrecise, which use double values instead of longlong.
          
        * Added FbxMod to fbxmath.h.
        
        * Added a sample code to demonstrate FbxStream class usage.
    
        * FbxString no longer use std::string implementation.
        
        * FBXSDK_sprintf, FBXSDK_snprintf, FBXSDK_vsprintf and FBXSDK_vsnprintf now
          always take a single size parameter instead of being variant on different
          platforms.
          
        * Removed thumbnails in animation stack. Now only one thumbnail can be
          saved per FBX file, found in the FbxSceneInfo class.
          
        * Removed GetCurveNode in FbxProperty that used an animation stack name for
          performance reasons.
          
        * Changed ConvertPivot functions in FbxNode to use an animation stack
          pointer instead of animation stack for performance reasons.
          
        * Renamed class FbxPropertyFlagsExt to FbxPropertyFlags.
        
        * Moved class FbxPropertyValue to a more global locations because it is now
          also used by evaluation state.
        
        * When using the camera manipulator, and the camera got flipped vertically,
          the horizontal orbit was inversed. This has been fixed.
          
        * Fixed an issue with matrix conversion to euler angles; degenerate case
          (gimbal lock) detection was too sensitive.
          
        * ContentUnload will now properly unload layers on geometry.
        
        * When performing a 'frame-all' using the camera manipulator, if the mesh
          content is unloaded, it will use the pre-computed bounding box, if it
          exist, otherwise it will skip it.
          
        * When performing a 'frame-all' using the camera manipulator, the camera
          will now correctly center itself on the global bounding box center rather
          than its centroid.
          
        * Fixed many compilation warnings with clang compiler on Mac.
        
        * Fixed camera orthogonal projection matrix generation issue.
        
        * When manipulating camera, it shall no longer go through the interest
          position.
          
        * Fixed crash when writing encrypted FBX file.
        
        * Fixed crash when opening OBJ files.
        
        * Fixed typo with return value of FbxExporter::GetCurrentWritableVersions.
        
        * FbxCameraManipulator Frame-All now works on orthographic cameras.
        
        * Fixed edge detection to be more accurate. Previous code only stored one
          edge from a single point. Now save all edges from one point and detect
          duplicated edges in all situation.
          
        * Fixed various warnings in macros generated when compiling with C++11.
        
        * Fixed an issue when reading textures for OBJ files.
        
        * Fixed an issue when reading material transparent properties in MTL files.
        
        * Fix rare crash when reading 3DS files.
        
        * Fixed rare memory leaks in specific situations.
        
        * Fixed reversed normals when reading DXF files.
        
        * Fixed a crash when writing collada files containing shapes.
        
        * Fix function to generate tangents/binormals incorrectly sets W component
          to greater values than -1 or 1.
          
        * Cameras with a target up node or a look at node will now be able to be
          moved around properly using the camera manipulator.
        
    2014.1
    
        * Introduced FBXSDK_ENV_WINRT preprocessor define (previously known as
          FBXSDK_ENV_WINMETRO) which disable unsupported functions when targeting
          Microsoft Windows Store applications. This define will automatically be
          defined if you set Windows Store App Support to Yes in your Visual Studio
          project settings.
    
        * A number of changes to the architecture defines in fbxarch.h were changed
          to add support for ARM processor:
              Added FBXSDK_ARCH_IX86, only defined on Intel x86 targets.
              Added FBXSDK_ARCH_AMD64, only defined on AMD64 targets.
              Added FBXSDK_ARCH_ARM, only defined on ARM targets.
              Renamed FBXSDK_ARCH_32 to FBXSDK_CPU_32, only defined for 32bit targets.
              Renamed FBXSDK_ARCH_64 to FBXSDK_CPU_64, only defined for 64bit targets.
          Also, please see deprecated details below.
          
        * Added version information to the FBX SDK dll on Windows platform.
        
        * Updated ViewScene sample to show how to support in-between blendshape
          (progressive morph).
          
        * Added support for the new Maya 2014 Cache files (*.mcx).
        
        * Improved the tangents/binormals calculation functions to properly handle
          mirrored faces by flipping the binormal when the face is inverted. It
          also sets the fourth component of the tangent to -1 if it is flipped, 1
          otherwise.
          
        * FbxReference is now defined as FbxObject* rather than void*. This will
          allow properties of FbxReference type to correctly respond to FbxCast and
          other FBX SDK API, as well as restraining the assignment to FbxObject*
          types.
          
        * Improved the FbxCameraManipulator by adding a new action type: eFreePan.
          It combines dollying and panning into a single action. For example, this
          is very useful for manipulating the camera using a touch screen.
          
        * Added a new object flag: FbxObject::eInitialized. This flag is
          automatically set on all object after they are done with the Construct
          stage. This is also used to prevent PropertyNotify to be called during
          ConstructProperties stage.
               
        * Now the class FbxCameraManipulator does not use an hidden class
          internally anymore, and use the PropertyNotify event to re-initialize
          when changing its affected camera.
          
        * Added a new IOSetting flag (IMP_FBX_EXTRACT_EMBEDDED_DATA) to completely
          disable embedded files extraction, which is set to true by default.
          
        * Added a new function (FbxObject::ResetProperties) to reset all properties
          to their default value.
          
        * The parameter pForceSet of function StaticInit on FbxProperty is not
          optional anymore. When calling it in ConstructProperties, the value of
          pForceSet must be correctly passed to StaticInit for all properties to
          ensure properties are not initialized more than once.
          
        * Added new function FbxGeometryConverter::Triangulate which now replace
          the old TriangulateMesh, TriangulateMeshAdvanced and TriangulateInPlace.
          The new function can either take a node attribute, or a scene in
          parameter. It can also replace original nodes with new ones and make sure
          the scene stays clean.
          
        * Added new function FbxGeometryConverter::SplitMeshesPerMaterial which can
          take a scene in parameter, and can replace original meshes and make sure
          the scene stays clean.
          
        * Added a new constructor to FbxArray class, which takes an integer in
          parameter to reserve the memory for that specific size.
          
        * Added a new parameter to FbxMesh::GetPolygonVertexUV to allow it to return
          an array of unmapped polygons. This is extremely useful to determine which
          vertex has no UV associated.
          
        * Removed the version number in library names on disk for all platforms.
          Also, debug and release versions are now named the same, but in different
          subfolders.
    
        * FBXSDK_ARCH_32 and FBXSDK_ARCH_64 got renamed to FBXSDK_CPU_32 and
          FBXSDK_CPU_64 respectively to dissociate them from the architecture.
          
        * Cannot set void* types to FbxReference properties anymore to improve
          robustness.
          
        * Changed the signature of FbxObject::PropertyNotify to pass a reference to
          the property instead of a pointer.
          
        * Old triangulation functions are now deprecated. Please use
          FbxGeometryConverter::Triangulate instead.
    
        * Improve manipulation of free cameras by preventing nasty flips when view
          axis reaches vertical.
          
        * A regression with ConvertPivotAnimationRecursive that was introduced in
          FBX 2013.3 has been fixed. It was causing some scenes to become resampled
          and key-reduced wrongly.
          
        * When including fbxsdk.h in your project, the define WIN32_LEAN_AND_MEAN
          will not be automatically defined anymore.
          
        * Fixed an issue with FbxPathUtils::GetRelativePath that wasn't working
          properly with localized paths.
          
        * Fixed a crash when exporting to 2010/2011 compatible files (FBX 6.1/7.1).
        
        * Fixed a performance issue with Quaternion FCurve evaluation.
        
        * All properties of FbxReference type now use the Source connection. Only a
          handful of them weren't complying, in various FbxConstraint classes. In
          FBX 2014 (7.4) or lower files, this will not change anything, but in
          memory these objects are now always connected to the source of the
          property.
    
        * Blend Shape animation was missing when a take other than first is
          imported, this has been corrected.
          
        * FbxObject::PropertyNotify callback will not be called anymore during
          ConstructProperties object creation stage.
    
        * FbxPropertyT<FbxReference> now correctly receive the PropertyNotify event.
        
        * Fixed an issue with FbxTime::SetTimeString when passing spaces between
          elements.
          
        * Fixed an issue with the FbxCamera Position property synchronization with
          its node's local translation.
          
        * Fixed FbxMarker class to not return property pointers.
        
        * For all FbxMesh::GenerateTangentsData function: When the tangents data
          already exist on the mesh, and that pOverwrite is set to false, the
          function will now return true so that it is not considered as an error.
          
        * Added a notification in the doxygen documentation of FbxStream that it
          does not support other formats than FBX.
          
        * Fixed a crash in FbxCache evaluation under Linux/Mac platforms.
        
        * Fixed a rotation order issue with ASF motion files.
        
        * Fixed a candidate value initialization with ASF motion files.
        
        * Fixed a crash on Mac/Linux version in FbxPathUtils::Create.
        
        * Made FbxGeoemetryConverter::SplitMeshPerMaterial much more robust; now
          meshes that have material indexes that points to invalid materials will
          not be assigned any materials, and they will be regrouped together.
          
        * Fixed a crash when exporting blend shapes to an old FBX 6.x file format.
        
        * Fixed an issue with tangents/binormals generation when some vertices
          didn't have an UV mapped.
          
    2014.0
    
        * Visual Studio 2012 is now officially supported.
    
        * FbxCamera::EvaluateUpDirection now support the Roll property.
    
        * Added FBX 2014 file version, and his now the default target.
    
        * The 4th vector element of normals, binormals and tangents are now
          properly exported to FBX files in FBX 2014 file format.
          
        * A new status reporting class has been introduced to replace the old
          FbxError class. Please refer to the FbxStatus class. More usage of this
          new class will be added over time.
          
        * Added new functions for the default IK Pull value on markers.
        
        * A default IK Pull value is now stored on markers.
        
        * TimeMarkers functionality has been re-introduced in FBX 2014 file format.
          The API to access them has been placed in FbxGlobalSettings class.
          
        * Updated Python 3.1 support to Python 3.2 in the FBX Python SDK.
        
        * MotionFiles readers/writers are now registered in the public FBX SDK.
          This means the FBX SDK can now import and export the following motion
          file formats: Biovision (BVH), MotionAnalysis (HTR/TRC), Acclaim (ASF/AMC),
          Vicon (C3D), Adaptive Optics (AOA) and Superfluo (MCD).
          
        * The FBX SDK libraries on Mac and Linux are now compiled with default
          visibility set to hidden. Only symbols marked with FBXSDK_DLL are exported,
          which makes it equal to the Windows version.
          
        * FbxProperty flags have been clean-up. The flag ePublished as been renamed
          to eAnimated, and eUser to eUserDefined, for clarity. The flag eStatic
          now works, and will be turned on for all static properties by default.
          Introduced the flag eImported, for properties that are created upon
          import.
          
        * New environment define FBXSDK_ENV_WINRT for Windows Metro support. Also
          added FBXSDK_ARCH_ARM for ARM processor support, under work.
          
        * FbxFolder has been re-worked. FbxFolder::Create, FbxFolder::Delete and
          FbxFolder::Exist has been moved in FbxPathUtils, and now work pass the
          Microsoft Certification Validation Kit for Windows Store applications.
          Other functions of FbxFolder have been renamed for consistency. Please
          see fbxfolder.h.
          
        * New function FbxPathUtils::Exist now works on relative paths.
        
        * New function FbxPathUtils::Create can take multiple paths as argument,
          and they will all be created (if possible), just like mkdir on Unix.
          
        * Improved FbxMesh::GetPolygonVertexCount to simply return the array size.
        
        * Updated FbxProgress class to be simpler, and allow an additional argument
          to be passed to the single-thread callback.
    
        * The file fbxsdk_compatibility.h has been removed from the FBX SDK
          distribution, so now it is required to use the latest API. Defining
          FBXSDK_NEW_API is not necessary anymore and should be removed from your
          projects.
    
        * The support for Visual Studio 2005 has been discontinued.
    
        * The support for MacOS/X SDK 10.5 has been discontinued. The minimum
          requirement is now MacOS/X SDK 10.6.
    
        * FbxString::Empty was renamed for FbxString::Clear to avoid confusion with
          FbxString::IsEmpty.
          
        * FbxError has been removed from all classes. Instead, functions that needs
          to return an error string now use an optional parameter of type FbxStatus
          similar to the MStatus in Maya API.
          
        * FbxFolder::Create has been removed, please use FbxPathUtils::Create
          instead.
          
        * FbxFolder::Delete has been removed, please use FbxPathUtils::Delete
          instead.
          
        * FbxFolder::Exist has been removed, please use FbxPathUtils::Exist instead.
          
        * FbxFolder::Remove has been removed from the FBX SDK API. Please now use
          FbxPathUtils::Delete, which is now always recursive.
          
        * Fixed a small issue with FbxCamera::EvaluateUpDirection that was
          incorrectly using the TargetUp object.
        
        * Updated various doxygen comments for clarity.
    
        * Fixed a buffer overrun crash issue when importing specific 3DS files.
    
        * Fixed a crash issue when trying to destroy the FbxManager at application
          exit.
    
        * Some samples were erroneously calling FbxString::Empty instead of
          FbxString::IsEmpty.
    
        * Fixed a buffer overflow in FbxStream::ReadString.
        
        * Importing an OBJ file will not un-weld UV anymore.
        
        * Fixed curve key comment in ASCII version; the code was not distinguishing
          between the GenericTimeIndependent only and GenericClampProgressive.
          
        * Improved the TranslationActive, RotationActive and ScalingActive
          properties doxygen documentation.
          
        * Fixed a crash when exporting to Collada when the scene was containing
          other kinds of deformers than skins.
          
        * The default value of FbxMarker::DrawLink is now set to true.
        
        * Fixed a small issue with FbxCamera::EvaluateLookAtPosition that wasn't
          returning the expected value.
          
        * Fixed an issue when writing Collada files that was resulting in the
          Effect field being written for each polygon, wrongly increasing the file
          size.
          
        * Various functions, such as FbxMin, that were returning a const reference
          type value were fixed to return a copy of the value instead.
          
        * Various function parameters that were asking for const reference intrinsic
          type were changed to ask a copy of the intrinsic type (which is faster
          than a const reference in this case).
          
        * Fixed a small typo error in the Transform sample code.
        
        * Small optimization on connection management for large scenes.
        
        * Fixed a crash when calling FbxScene::ForceKill on a scene imported which
          contained thumbnails.
          
        * Made fbxiosettingspath.h header file compatible with C++x11 standard.
    
    2013.3
    
        * The class FbxCameraManipulator has been improved so that the FrameAll and
          FrameSelected functions now take deformations into account, and also
          properly adjust the camera distance for a better framing.
          
        * Removed the FbxNode_internal class. Now all attributes of FbxNode are
          visible within the FbxNode class declaration itself. This caused some
          changes to the Pivot informations.
          
        * Now the FbxCache using IFF component can scale to 64bit, allowing for
          much larger cache files to be used.
    
        * The dynamic library version of the FBX SDK library on the Windows
          platform now use the static MSVCRT (/mt) rather than the dynamic MSVCRT
          (/MD). This allows to distribute applications using the FBX SDK dll
          without having to install the Microsoft Visual Studio Redist.
          
        * From now on, all classes that previously overloaded Clone will now only
          clone itself, and not its sources. For instance, cloning an FbxNode will
          NOT clone its FbxNodeAttribute anymore. Instead, to reproduce this
          behavior, one must use the FbxCloneManager which handles cloning object
          networks. This now holds true for most objects of the FBX SDK. However,
          objects such as meshes with their skins and clusters remain considered as
          one entity.
          
        * The class FbxScene now overload the Clone function, and uses the
          FbxCloneManager to successfully clone the entire scene network.
          
        * The FBX SDK now use default memory allocation functions when they are
          called without being initialized. This only happens when static variables
          are initialized before main. If you need to change the FBX SDK memory
          allocation functions, make sure you are not using static FBX SDK objects
          that could potentially be initialized before your main call.
          
        * Added new functions to retrieve the memory allocation function currently
          set, as well as the default ones. Please see fbxalloc.h file.
          
        * Added support for 'locked' flags on properties. This won't prevent FBX
          SDK users from changing property values, but it will allow applications
          to store/retrieve the flags across. Since properties can have up to 4
          members, we're using 4 bits to differenciate them.
    
        * Fixed an issue when importing files with bump textures using foreign
          languages.
          
        * Added a bit more details to the installers detail pane on Windows.
        
        * Fixed a crash with the Geometry Converter; duplicated edges are now
          correctly detected.
          
        * Fixed a minor issue in the ViewScene sample, concerning holes in the
          mSubMeshes table.
          
        * A lot of classes using direct pointers to objects have been corrected to
          use reference properties, which makes the SDK more robust.
          
        * Properties that have the NotSavable flag now do not write their
          connections, thus making FBX files smaller.
          
        * The ShadingModel property on FbxSurfaceMaterial inherited classes will
          only be overwritten for unknown types.
          
        * Clean-up remaining cases where the specified memory allocator wasn't
          correctly used internally in the FBX SDK.
          
        * Several classes needed an update to their ::Copy method so that all
          elements are correctly copied.
          
        * Fixed the MatrixConverter filter so that it doesn't get fooled by the
          LeftHand system if the input animation has a negative scaling vector.
          
        * Fix several issues with CharacterPose reading/writing mechanics.
        
        * An invalid FBX reader/writer was chosen when opening older FBX files
          (5.x/6.x) using FbxStream. Now the correct reader/writer are instanced.
          
        * Fixed various warnings with FBX SDK samples on Mac/Linux.
        
        * Fixed a crash when attempting to initialize objects before main, caused
          by uninitialized memory allocation functions.
          
        * Fixed an issue with the tangents/binormals generation in the smoothing
          phase not taking into account UV seams. Now the smoothing should not
          cross UV seams boundaries.
    
    2013.2
    
        * Basic Lambert and Phong material properties are now animatable.
        
        * Installation paths for all FBX products is now consistent. For instance,
          the FBX SDK will now install in ".../FBX/FBX SDK/20xx.x".
          
        * Added support for FBX Python SDK on Linux 32bit.
        
        * Added new function to evaluate camera target up, that will take into
          account the Target-Up object position specified on the Node.
          
        * Added new parameter to Readers and Writers registration process so that
          now it is possible to override one, rather than just add it at the end of
          the list.
          
        * Removed dependency to WININET library on the Windows platform. Now, when
          linking with the FBX SDK, no other dependency are generated. All samples
          have been updated to reflect this.
          
        * The FBX SDK library is now roughly ~10% smaller, since a lot of obsolete
          code has been removed.
          
        * The constructor and destructor mechanics have been standardized across
          the whole SDK. Now, the required constructor when declaring a class that
          inherit from FbxObject is defined by default in the FBXSDK_OBJECT_DECLARE
          macro. If you need to execute code in the constructor or destructor, you
          will need to override Construct and Destruct as detailed in the
          documentation.
          
        * The virtual function ConstructProperties signature now do not have any
          return value. please update your code accordingly. As a reminder, please
          do not forget to call ParentClass::ConstructProperties at the beginning
          if you intend to override it.
          
        * FbxRedBlackTree has been moved into its own file, which makes it easier
          to read fbxmap.h now.
          
        * The class FbxScopedPtr has been renamed FbxAutoPtr and has been moved
          in fbxalloc.h so it is accessible by default. Also, a few basic overloads
          with different deletion policy have been implemented. Those are
          FbxAutoFreePtr, FbxAutoDeletePtr and FbxAutoDestroyPtr.
          
        * All functions of the FBX SDK that used to take a ClassId or a FBX_TYPE
          macro as input for filtering are now deprecated. Now, the templated
          version of the same function name must be used. Since it is templated,
          they now return the correct value type, and it is no longer necessary to
          call FbxCast on the return value.
          
        * Fixed an issue when specifying "ApplyTarget" with the classic evaluator.
          
        * The tangents/binormals generation function in the FBX SDK has been
          updated and now works on polygons with more than three sides.
    
        * The class FbxExposureControl has been retired.
        
        * The class FbxPlug has been retired.
        
        * The function FbxProperty::GetCurve is not templated anymore.
        
        * The function FbxObject::GetRootProperty is now deprecated. Please use the
          member FbxObject::RootProperty instead.
          
        * The function FbxCamera::GetUpVector is now deprecated. Please use
          FbxCamera::EvaluateUpDirection instead.
          
        * The function FbxCamera::ComputePerspective is now deprecated. Please use
          FbxCamera::ComputeProjectionMatrix instead.
          
        * Deprecated functions in fbxcompatibility.h file have been removed.
        
        * The class FbxPointerGuard has been retired, because FbxAutoPtr and its
          derivates replaces it.
          
        * The function FbxArray::SetCount has been retired. Please use
          FbxArray::Reserve or FbxArray::Resize instead.
          
        * The function FbxArray::Empty is now deprecated. Please use
          FbxArray::Clear instead.
        
        * The function FbxArray::FindAfter is now deprecated. Please use
          FbxArray::Find instead.
          
        * The function FbxArray::FindBefore is now deprecated. Please use
          FbxArray::FindReverse instead.
          
        * The function FbxArray::AddMultiple is now deprecated. Please use
          FbxArray::Grow instead.
          
        * All functions in FbxObject, FbxProperty, FbxCollection and FbxDocument
          that used to take a FbxClassId or an FBX_TYPE() macro, as the filtering
          mechanism, are now deprecated. Please use the templated version of these
          functions, such as: FbxObject::GetSrcObjectCount<Type>() or
          FbxObject::GetSrcObject<Type>() The templated version returns the correct
          type, so it is no longer needed to use FbxCast upon return of these
          functions.
          
        * All functions in FbxObject and FbxProperty that used to take a FbxClassId
          plus an FbxCriteria have been retired instead of being deprecated,
          because they didn't make sense from a logical standpoint, and can now
          safely be replaced with the form Obj->Function<Type>(Criteria).
          
        * The following functions have been made deprecated, and should be replaced
          with their equivalent found in FbxObject:
            FbxConnectSrc(Dst, Src)               -> Dst->ConnectSrcObject(Src)
            FbxConnectDst(Src, Dst)               -> Src->ConnectDstObject(Dst)
            FbxGetSrcCount(Obj)                   -> Obj->GetSrcCount()
            FbxGetSrcCount(Obj, ClassId)          -> Obj->GetSrcCount<Type>()
            FbxGetSrc(Obj, Index)                 -> Obj->GetSrcObject(Index)
            FbxGetSrc(Obj, Index, ClassId)        -> Obj->GetSrcObject<Type>(Index)
            FbxFindSrc(Obj, Name, Index)          -> Obj->FindSrcObject(Name, Index)
            FbxFindSrc(Obj, Name, ClassId, Index) -> Obj->FindSrcObject<Type>(Name, Index)
            FbxDisconnectAllSrc(Obj)              -> Obj->DisconnectAllSrcObject()
            FbxGetDstCount(Obj)                   -> Obj->GetDstCount()
            FbxGetDstCount(Obj, ClassId)          -> Obj->GetDstCount<Type>()
            FbxGetDst(Obj, Index)                 -> Obj->GetDstObject(Index)
            FbxGetDst(Obj, Index, ClassId)        -> Obj->GetDstObject<Type>(Index)
            FbxFindDst(Obj, Name, Index)          -> Obj->FindDstObject(Name, Index)
            FbxFindDst(Obj, Name, ClassId, Index) -> Obj->FindDstObject<Type>(Name, Index)
            FbxDisconnectAllDst(Obj)              -> Obj->DisconnectAllDstObject()
    
        * Fixed an issue with scaling inheritance not being computed properly by
          the classic evaluator.
          
        * The tangents and binormals generated by the FBX SDK will now be smoothed
          according to the normal smoothing.
          
        * Optimized tangents/binormals generation so that there not more of them
          than there is normals on the mesh.
          
        * The FBX SDK release version can now be safely linked into a debug app.
        
        * Fixed a texture indice issue with old FBX 5.x content.
        
        * Fixed a memory leak with runtime classes.
        
        * The FBX SDK now uses the memory allocator in the FbxString class for all
          allocations done by std::string.
          
        * Changed the behavior of GetAnimationInterval so that it doesn't do a
          union anymore. Now, the timespan parameter is always initialized properly
          inside the function.
          
        * Improved how the FBX SDK handle testing if file exist, resulting in a
          faster file opening for missing assets that are over the network.
          
        * Fixed a file crash when importing an FBX 5.x file without setting an IO
          setting.
          
        * Fix some issues with samples, as reported by users.
        
        * Resolved issues with the memory allocator. For instance, FbxString now
          use the specified memory allocator rather than the default STL allocator.
          
        * Fixed a crash with a specific OBJ file.
        
        * An issue with ResetPivotSetAndConvertAnimation breaking instanced mesh as
          been corrected.
          
        * Fixed multiple FBX Python SDK errors in samples.
        
        * Fixed an issue with Collada export for meshes with multiple materials.
    
    2013.1
    
        * Renamed all classes with prefix "Fbx". Also renamed all structures with
          the same prefix.
          
        * Global functions and enumerations now start with the "Fbx" prefix.
    
        * By default, the file fbxsdk_compatibility.h will be included when
          including fbxsdk.h. This file defines a lot of the old class names to
          help with the transition. However, if you want to use the new API, you
          can define FBXSDK_NEW_API in your project and the compatibility file will
          not be included, but will most likely result in a lot of errors to fix
          in your application.
          
          It is highly recommended that you start by fixing compilation errors
          before defining FBXSDK_NEW_API in your project, but it is also highly
          recommended to fully fix your code since the compatibility file might
          be removed in a future release.
          
        * Moved and renamed all enumerations into classes when possible.
        
        * Moved files into appropriate folders, and grouped them.
        
        * Removed KFbxMemoryAllocator class, instead use handlers setters functions
          found in fbxalloc.h, such as FbxSetMallocHandler.
          
        * Removed all KFCurveFilter classes, please use FbxAnimCurveFilter classes
          instead.
          
        * FbxFile is now exposed! See fbxfile.h for the list of available
          functions.
          
        * A new class, FbxFileUtils, now expose all static functions related to
          file handling, such as remove or rename, etc.
          
        * A new class, FbxPathUtils, now expose all static functions related to
          file path handling, such as IsRelative or Clean, etc.
          
        * Completely re-designed how Character Poses are stored in FBX.
        
        * The FbxLight class has been augmented to support area lights and barn
          doors.
          
        * The FbxGeometryBase class has been augmented to support render options
          such as PrimaryVisibility, CastShadow and ReceiveShadow.
          
        * Many FBX SDK functions that were asking for file paths as inputs were
          updated to support UTF-8. Their parameter names were updated to reflect
          this change.
          
        * It is now possible to retrieve the "long" version string of the FBX SDK
          via the function FbxManager::GetVersion(true). This will allow developers
          to get the version string of this library along with the name and the
          revision number.
    
        * Fixed various issues with sample codes.
        
        * Now sample codes compile with warning level 4.
        
        * Fixed an issue with animation evaluation that wasn't updated correctly
          when told to.
          
        * Fixed an issue with constraints being lost after export.
        
        * Fixed an issue with animation evaluation sometimes returning twice the
          value amount.
          
        * Fixed an issue with RemovePolygon function on mesh class when mapping is
          by polygon.
          
        * Initial property values of LclTranslation, LclRotation and LclScaling
          affect the evaluator's result when there are actually animation curves
          connected to these properties. This has been corrected.
          
        * Fixed an issue with writing cache data on Mac when a space was present
          in the file path.
          
        * Fixed a crash with xstring use in VS2010, caused by an assert.
        
        * Improved precision in time and timecode classes.
        
        * Changed how absolute and relative paths are handled during import. Now
          if one of the two path is opening successfully, the other is changed to
          work.
          
        * Fixed an issue with the unroll animation filter.
        
        * Now, when resampling animation, we move the default at the end rather
          than at the start of the resampling.
    
    2012.2
    
        * Added Area Light support to KFbxLight class.
    
        * Added Barn Doors support to KFbxLight class.
    
        * HotSpot property on KFbxLight has been changed for InnerAngle.
        
        * ConeAngle property on KFbxLight has been changed for OuterAngle.
    
        * Various file I/O crashes.
        
        * Duplicate material issue with material converter is fixed.
        
        * Some minor fixes in sample codes.
        
        * Fixed path issue in Collada reader.
        
        * After writing FBX file, the scene should come back to its initial state.
        
        * Fixed a crash on import of old scenes when it didn't contain blendshapes
          or morpher data.
          
        * Fixed issue with incorrect normals when converting from OBJ to FBX.
        
        * Sample code "Cube Creator" was modifying the scene when exporting in OBJ,
          This has been fixed.
          
        * Fixed an issue with absolute versus relative file paths; now if one of them
          is valid and the other is not, we fix the broken one.
          
        * Fixed an issue with cache writing on Mac when there was a space in the file
          name.
          
        * Fixed an issue with the FBX exporter that would duplicate materials in very
          specific conditions.
          
        * After writing an FBX 6.x file with shapes, the scene was modified and data
          was potentially lost. This has been corrected.
          
        * Fixed an assert caused by stl string in VS2010.
        
        * We now open FBX files in read-only mode rather than read+write. This allow
          for other process to access the FBX file in parallel.
    
    2012.1
    
        * Added support for Image Sequences into KFbxVideo.
        
        * Improved the reference documentation quite substantially.
    
        * Refined how visibility inheritance works: added a new property for each
          node allowing to specify if it should be inherited or not.
          
        * Added a new option in IO Settings to import the time span found in FBX
          files.
          
        * Added a new function to KFbxAxisSystem to retrieve the front vector.
        
        * Added a new function to KFbxAnimEvaluator and KFbxAnimEvalClassic to
          allow users to calculate the local TRS from the global, with an offset.
          See ComputeLocalTRSFromGlobal in kfbxanimevaluator.h for more info.
    
        * Fix an issue with scale values of zero when passed to the matrix
          converter.
    
        * Added indentation to various parts of FBX ASCII files.
        
        * Fixed an issue with some curves evaluating to infinite values.
        
        * Multiple blend shapes with the same target resulted in corrupted file,
          this has been corrected.
          
        * An optimization to the file i/o reader and writer improved import
          and export speed up to 60% faster.
          
        * Fixed an issue with constant key mode in the filters.
        
        * Changed the marker look property enum initialization to match the enum
          in the header file.
          
        * Fixed an issue in the classic evaluator which caused channels not
          animated to sometimes return twice the value.
    
    2012.0
    
        * The FBX SDK Packaging on the Microsoft Windows platform has changed to
          reduce the size of the downloads. Now the different compilers flavors are
          distributed in separate installers. As a result of this, we also
          uniformized the library file names across platforms.
    
        * The file format version of FBX files as been incremented to 7.2.
          There have been various small changes in the file format to support new
          data.
    
        * The preprocessor identifier that must be defined when linking with the
          dynamic library version of the FBX SDK has changed from KFBX_DLLINFO to
          FBXSDK_SHARED. KFBX_DLLINFO now serves no purpose. For any other FBX
          SDK configuration no other preprocessor identifiers must be defined.
          
             Note: Please change your projects to define FBXSDK_SHARED if you
             intend to use the dynamic library version of the FBX SDK. 
    
        * Many improvements to the KFbxCharacter class have been made to improve 
          interoperability of character data with other Autodesk 3D applications.
    
        * Support for vector displacement maps has been added to the FBX SDK.
    
        * Support for Allegorithmic's Substance (procedural textures) has been
          added to the FBX SDK core. Now the class KFbxTexture serves as the base
          class for KFbxFileTexture, KFbxLayeredTexture and KFbxProceduralTexture.
          KFbxFileTexture should now be used for bitmap textures, replacing
          KFbxTexture.
    
        * The Collada importer now supports the Collada 1.4.1 standard.
    
        * New quaternion evaluation modes for rotation animation curves are now
          available, equivalent to those found in Autodesk Maya.
    
        * A new type of animation curve key has been added to the FBX SDK core to
          allow for a better support of Autodesk 3dsMax "auto" keys with crease
          in/out.
    
        * Added support for Dual Quaternion Skinning. Please refer to the new class
          KFbxDualQuaternion for more information.
    
        * The visibility inheritance behavior of scene nodes have changed to better
          align with popular Autodesk 3D applications.
    
        * Many improvements to the import time of FBX files have been made.
        
        * The memory footprint of FBX files has been reduced.
    
        * Support for "in-between" blend shapes has been added in the FBX SDK core
          to allow application plug-ins to import/export these states.
    
        * Added five new functions to the KFbxNode class :
        
             KFbxXMatrix& KFbxNode::EvaluateGlobalTransform(...)
             KFbxXMatrix& KFbxNode::EvaluateLocalTransform(...)
             KFbxVector4& KFbxNode::EvaluateLocalTranslation(...)
             KFbxVector4& KFbxNode::EvaluateLocalRotation(...)
             KFbxVector4& KFbxNode::EvaluateLocalScaling(...)
          
          These functions are equivalent to calling KFbxScene->
          GetEvaluator()->..., but have been made directly on the FbxNode for
          convenience.
          
        * Added a new function to the KFbxEvaluator abstract class :
        
             void KFbxEvaluator::ResetEvaluationState()
          
          This function enables users to completely clear the whole evaluation
          cache by deleting all entries in it.
          
        * The API documentation generated by Doxygen requires less disk space. Many
          larger images have been removed to make the documentation easier to use.
          
        * Added support for line geometry to FBX via the KFbxLine class.
        
        * Added an option to KMemoryPool to control concurrent allocations.
          Previously, the allocation was always in concurrent mode.
          
        * The FBX SDK is now built with full optimization settings (i.e. both
          size and speed) instead of being optimized for speed only.
          
        * Roughly 25 new texture blend modes were added. Also, the default blend
          mode is now Normal instead of Translucent.
          
        * Object names will now appear in ASCII FBX files as comments in the
          connection section for easier debugging.
          
        * A new tessellation function was added to NURB curves to provide a work-
          around for applications that do not support them. The tessellation will
          produce a KFbxLine object (a series of vertices).
          
        * A new file, fbxfilesdk_version.h has been added that contains all the
          versioning information of the FBX SDK. It also defines a new preprocessor
          identifier FBXSDK_VERSION_STRING that represents the version information
          as a string.
          
        * Ptex files can be transported just like any other texture format (png,
          jpeg, etc.) provided that they are connected to a material property. For
          more information about Ptex please visit http://ptex.us/documentation.html
          
        * A new function KFbxImporter::SetEmbeddingExtractionFolder as been added
          to allow developers to specify an extract folder when importing FBX files.
          
        * New functions added to KFbxCache class: GetNextTimeWithData(),
          GetDataCount() and GetDataTime().
          
        * All FBX related DLLs shipped are now officially signed with the Autodesk
          certificate.
         
        * The two KFbxSdkManager::CreateClass(...) functions have been marked
          deprecated and KFbxSdkManager::CreateNewObjectFromClassId(...) should be
          used instead.
          
        * The methods KFbxNode::Set/GetUseQuaternionForInterpolation() have been
          marked deprecated. Their usage should be replaced with calls to
          KFbxNode::Set/GetQuaternionInterpolation() respectively. These new
          methods are using the following enumeration symbols to activate new
          evaluation algorithms:
    
             eQUATINTERP_OFF = 0
             eQUATINTERP_CLASSIC = 1
             eQUATINTERP_SLERP
             eQUATINTERP_CUBIC
             eQUATINTERP_TANGENTDEPENDENT
    
          The eQUATINTERP_OFF is equivalent to the old way of passing the "false"
          value to the parameter of the SetUseQuaternionForInterpolation() while
          eQUATINTERP_CLASSIC correspond to the "true" value. The classic mode call
          the evaluation algorithm that has been defined in the FBX SDK from the
          earlier versions.
          
        * The methods KFbxSdkManager::CreateClass have been deprecated in favor for
          a new function, KFbxSdkManager::CreateNewObjectFromClassId(...) which
          removes non-used parameters, and combine all functions into this single
          call. The new function name also clearly indicate that a new object
          instance is created, rather than a new class.
          
        * The methods to access the properties of KFbxSurfaceMaterial and sub-class
          have been deprecated. Now users can simply access the properties directly
          just like any other FBX SDK object class.
          
        * Many functions of KFbxShape have been deprecated with the introduction
          of the support for in-between blendshapes.
          
        * The .3DS file format writing as been retired. However, the .3DS file
          reader will persist.
    
        * The mDEBUG_String member was removed from the KString class to make sure
          the debug and release version are the same size. As a result of this, to
          debug the KString class on the Microsoft Windows platform, please open
          and read the file kstring.txt provided along this readme.txt file.
    
        * The static libraries are now built with _SECURE_SCL=1, which is the
          default value when not specified by projects. If your project used to
          define _SECURE_SCL=0 just to be able to link with the FBX SDK, then it
          can now be safely removed from the predefined preprocessor identifiers.
    
        * KFbxObject::Clone has been reviewed, and now offers an implementation
          that should fit most, if not all, cloning logic for all classes that
          inherit from KFbxObject. As a result objects that don't implement Clone
          behave correctly and similarly across the SDK.
          
        * Fixed an issue in the conversion of Euler value to quaternion values with 
          some corner cases.
          
        * The FBX SDK no longer requires RTTI to be enabled by the host software.
          This also means dynamic_cast can no longer be used to convert FBX SDK
          objects. KFbxCast<CLASSTYPE> should be used instead.
          
        * The class KFbxSurfacePhong can now be converted into its parent class,
          KFbxSurfaceLambert, using KFbxCast.
    
        * The properties of KFbxSurfaceMaterial and all its sub-classes are now
          declared public.
          
        * The function KFbxObject::GetTypeName() has been re-vamped to return a
          const char* type instead of KString. Many classes that were
          re-implementing this function without reason have been cleaned-up
          throughout the SDK.
          
        * The function ResetPivotSetAndConvertAnimation will now also iterate
          through all animation stacks instead of just the first one it finds in
          the scene.
          
        * Fixed a crash wih KFbxAnimEvaluator::SetContext(...).
        
        * A pragma pack directive was added to the file fbxsdk.h to set it to the
          value used when the FBX SDK was compiled. This will allow developers
          to include the FBX SDK in their project without having to worry about the
          packing size used by their application.
          
        * KFbxCache::GetChannelIndex() should return -1 instead of 0 when error
          occurs or channel not found.
          
        * Fixed several issues and memory leaks in FBX SDK sample codes.
        
        * KString size in debug and release should now be the same, which fix the
          crash resulting of that incompatibility.
          
        * The Microsoft Visual Studio 2008 builds are now compiled using the
          Service Pack 1.
          
        * Added the const qualifier to several functions and members.
        
        * Stereo Cameras now have the correct post-rotation set on export.
        
        * An issue with multiple property-to-property connections in FBX files has
          been corrected.
          
        * An optimization to the way we allocate animation curves has been done to
          improve the destroy speed with large scenes.
          
        * Fixed an issue in KFbxMesh::TriangulateMeshAdvance(), an incorrect mesh
          smooth group was set when the original mapping mode was "by edge".
          
        * An issue with skew matrix in the classic evaluator has been fixed.
    
    2011.3.1
    
        * All functions related to local and global "state" in the KFbxNode
          declaration were removed since their implementation didn't work anymore
          since the last release. They should have been set to deprecated within
          the header files, but they were forgotten.
          
        * The unroll filter was inconsistent when applying its process on curves
          data, this has been corrected.
    
        * Fixed a crash in the function EmulateNormalsByPolygonVertex.
        
        * Visual Studio 2010 builds were reporting missing PDB files, this has been
          corrected.
          
        * Importing various .OBJ file sometime resulted in much more vertices, this
          is now working as intended.
          
        * The mesh triangulation method has been re-written for a much more robust
          algorithm. Now it can handle non-concave shapes. The method can be called
          using TriangulateMeshAdvanced.
          
        * A conversion error from Euler to Quaternion has been corrected, it is now
          much more robust for corner cases.
    
    2011.3
    
        * The FBX SDK is now also ship in a dynamic library package format. To link
          against the dynamic version, users will have to define KFBX_DLLINFO in
          their project preprocessor settings. The static version still doesn't
          require any preprocessor to be defined.
    
        * Augmented the KFbxCache class to correctly support multiple data channels.
    
        * Stereo Cameras now correctly support aim/up.
        
        * Added three new functions to the KFbxAnimEvaluator class :
        
          KFbxVector4& GetNodeLocalTranslation(...)
          KFbxVector4& GetNodeLocalRotation(...)
          KFbxVector4& GetNodeLocalScaling(...)
          
          Allow users to calculate the local translation, rotation and scaling as it
          was done in previous versions of the FBX SDK. On purpose, these new
          functions will not take pre/post rotations, offsets and pivots in
          consideration, but they still will consider translation, rotation and
          scaling limits.
    
        * Added the new KFbxCachedEffect node attribute. These are used to store
          other kind of vertex (or position) caching.
    
        * Fixed a crash at import time for various legacy FBX files when importing
          animation curves data.
    
        * Some UV Sets were lost in very specific cases during export, this has
          been corrected.
    
        * Fixed an issue with node's local transform calculation. Now it should
          correctly return the result of ParentGlobal.Inverse * Global.
    
        * Protein 2.0 Materials are now extract in the .fbm folder along the .fbx
          file first, rather than the user's operating system temporary folder.
          
        * The following files contain many newly deprecated calls. Please open them
          and search for the macro K_DEPRECATED to find out. Because the list is so
          big, it will not be listed here.
          
          kfbxconstraint.h, kfbxconstraintaim.h, kfbxconstraintparent.h,
          kfbxgeometry.h, kfbxnode.h, kfbxscene.h, kfbxkfcurvefilters.h,
          kfbxdocument.h, kfbxreaderfbx.h, kfbxreaderfbx6.h, kfbximporter.h,
          kfbxproperty.h
    
    2011.2
    
        * Officially dropped support for PowerPC architecture. Universal binaries
          found in MacOS builds will now only contain 32/64-bit variances.
    
        * Fixed a crash when importing some legacy MotionBuilder FBX 5.x files.
        
        * Corrected the computation of the smoothing group for in mesh triangulation
          function.
        
        * Fixed Localization problems on the DAE, DFX and OBJ readers/writers.
        
        * Extended the file size limit for FBX files from 2GB to 4GB.
        
        * Augmented the Reference Documentation for a certain number of classes. For
          example, check out KFbxNode or KFbxObject and tell us what you think! :)
    
    2011.1
    
        * Removed the KFbxTakeNodeContainer class. This was done with the redesign
          of the animation system.
    
        * A whole new set of classes are now available to evaluate animation with
          the FBX SDK. For more information, please look at the reference
          documentation for KFbxAnimStack, KFbxAnimLayer, KFbxAnimCurve,
          KFbxAnimCurveNode, KFbxAnimEvaluator and KFbxAnimEvalClassic classes. Also
          the evaluation result will now be stored outside the KFbxNode class and
          only created on demand, resulting in a much smaller memory footprint.
    
        * Removed all needed preprocessor defines to be able to correctly link with
          the static version of the FBX SDK. Namely, those defines were K_PLUGIN,
          K_FBXSDK and K_NODLL.
          
        * The FBX file format as now been upgraded to our latest new technology,
          FBX 7.1! This new FBX file format allow for much more flexibility,
          supporting any number of instances, connections by GUID, reduced file size
          with compression, embedding in ASCII files and much more!
          
        * The KFbxSystemUnit class changed so that it doesn't modify the multiplier
          parameter. Now it is simply carried along in the FBX file.
          
        * A Python Binding for FBX SDK has been released for the first time! In this
          first release, only the most basic functions to allow import/export and
          scene traversal and property query has been exposed. More will be exposed
          later on when we gather more feedback from user experience.
          
    2010.2
    
        * Improved processing speed of the function to retrieve polygon's indexes in
          the mesh class KFbxMesh.
          
        * Removed SetFileFormat on all classes that inherit from KFbxImporter and
          KFbxExporter. Instead, the file format can be overwritten in the
          Initialize functions. By default, the file format will now be auto-
          matically be detected.
          
        * Extended the KFbxMesh class to support standard mesh smoothing. We are
          referring to edge/vertex creases, mesh smoothness, division levels,
          subdivisions, continuity and border/edge preservation.
    
        * Added Stereo Cameras support via the KFbxCameraStereo class.
    
        * Added Display Layer and Selection Sets support via the KFbxDisplayLayer
          and KFbxSelectionSet classes respectively.
    
        * Fixed an issue preventing the use of the slash ( / ) character in property
          names.
          
        * Fixed a stack overflow error in KFbxRenamingStrategy.
        
        * Added support for many new texture blend mode. See KFbxLayerElementTexture
          for more information.
    
        * Files not ending in .fbx but that still contain FBX formatting can now
          successfully be opened with the FBX SDK.
          
        * Properties can now be destroyed with KFbxProperty::Destroy().
    
        * Fixed FBX 5.x reader to correctly set pivot information when importing
          legacy files.
          
    2010.0
    
        * Dropped support for Microsoft Visual Studio 2003 libraries.
        
        * Many, many issues fixed. Please refer to previous readme versions for more
          details.
          
    2009.x
    
        * KFbxCache class supports int array.
        
        * Added the Subdivision Display Smoothness to the KFbxSubdiv class.
        
        * Added the optional argument to the IsValid() method in the KFbxTrimSurface
          class to skip the check of boundary curves CV's overlaps.
          
        * Re-factoring of the KFbxCamera class.
        
        * Updates to class documentation.
    
        * Added methods and properties to manipulate front/back planes & plates.
        
        * Deprecated ECameraBackgroundDrawingMode type and replaced with
          ECameraPlateDrawingMode
        
        * Deprecated ECameraBackgroundPlacementOptions. This has been replaced with
          the individual properties: FitImage, Center, KeepRatio and Crop.
        
        * Deprecated GetBackgroundPlacementOptions() since now the flags are stored
          in the above mentioned properties.
        
        * Deprecated SetViewFrustum(bool pEnable), use SetViewNearFarPlanes()
        
        * Deprecated GetViewFrustum(), use GetViewNearFarPlanes()
        
        * Support of non-convex polygons in the triangulation algorithms.
        
        * Overload of the new operator is not possible anymore (the
          FBXSDK_OVERLOAD_NEW_OPERATOR macro has been removed). The usage of the
          custom memory allocator can only be achieve by using the
          KFbxMemoryAllocator class. See the ExportScene05 for an implementation
          example.
        
        * Enhanced algorithm for smoothing groups generation.
        
        * Support of displacement map channel.
        
        * The class KFbxStreamOptions is now obsolete and is gradually being
          replaced by the class KFbxIOSettings.
        
        * Added KFbxConstraintCustom class.
        
        * Added KFbxContainerTemplate class.
        
        * Added KFbxSubdiv class.
        
        * Added KFbxEmbeddedFilesAccumulator class.
        
        * Adjusted tangents to stay closer to the real value when the weight gets
          ridiculously small.
        
        * Fixed Collada plug-in to handle operating system locale. Depending on the
          locale, the decimal point for numbers may have been represented with the
          comma instead of the point causing parsing errors.
          
        * Fixed support for the floor contact to the KFbxCharacter.
        
        * Fixed infinite loop when loading .obj files on MAC OS.
        
        * Removed some more memory leaks.
        
        * Added the HasDefaultValue(KFbxProperty&) function to check if a property
          value has changed from its default one.
        
        * Added the BumpFactor property to the SurfaceMaterial class.
        
        * Defined plug-ins of plug-ins interface in the fbxsdk manager. See the
          Autodesk FBX SDK PRW readme file for more details.
        
        * Re-factoring of the renaming strategy object.
        
        * Removed unused eCONSTRAINT from the KFbxNodeAttribute.
        
        * Deprecated FillNodeArray and FillNodeArrayRecursive
        
        * Overwrite empty relative filename in texture objects with the correct
          value.
        
        * Fix for internal TRS cache so it correctly get reset when changing takes.
        
        * Bug fixes in the Collada reader/writer.
        
        * Fixed a bug that was causing the loss of Shape animation on NURBS objects.
        
        * Fixed the fact that the layers were losing their name after a clone.
        
        * Corrections for pivot conversion functions:
        
          - Set source pivot to ACTIVE in function ResetPivotSetAndConvertAnimation.
          
          - Update default transformation values to match the results of the pivot
            conversion functions.
          
        * Fixed the endless loop in the RemoveChar() method of the KString class.
        
        * Fixed default values in the KFbxCharacter structure.
    
    
    
    4. LEGAL DISCLAIMER
    -------------------
    
    Autodesk and FBX are registered trademarks or trademarks of Autodesk, Inc., in
    the USA and/or other countries. All other brand names, product names, or trade-
    marks belong to their respective holders.
    
                           Copyright (C) 2018 Autodesk, Inc.
                                  All Rights Reserved
    
    ================================================================================

     编译结果:

    1>------ 已启动生成: 项目: ZERO_CHECK, 配置: Debug x64 ------
    1> Checking Build System
    1> CMake does not need to re-run because E:/FBX/build/CMakeFiles/generate.stamp is up-to-date.
    1> CMake does not need to re-run because E:/FBX/build/src/CMakeFiles/generate.stamp is up-to-date.
    1> CMake does not need to re-run because E:/FBX/build/src/osgPlugins/CMakeFiles/generate.stamp is up-to-date.
    1> CMake does not need to re-run because E:/FBX/build/src/osgPlugins/fbx/CMakeFiles/generate.stamp is up-to-date.
    1> CMake does not need to re-run because E:/FBX/build/examples/CMakeFiles/generate.stamp is up-to-date.
    1> CMake does not need to re-run because E:/FBX/build/examples/osgFbxViewer/CMakeFiles/generate.stamp is up-to-date.
    2>------ 已启动生成: 项目: osgFbxViewer, 配置: Debug x64 ------
    3>------ 已启动生成: 项目: osgdb_fbx, 配置: Debug x64 ------
    2> Building Custom Rule E:/FBX/osgFBX-master/examples/osgFbxViewer/CMakeLists.txt
    2> CMake does not need to re-run because E:/FBX/build/examples/osgFbxViewer/CMakeFiles/generate.stamp is up-to-date.
    2>cl : 命令行 warning D9002: 忽略未知选项“/SAFESEH:NO”
    2>cl : 命令行 warning D9002: 忽略未知选项“/SAFESEH:NO”
    2> osgFbxViewer.cpp
    3> Building Custom Rule E:/FBX/osgFBX-master/src/osgPlugins/fbx/CMakeLists.txt
    3> CMake does not need to re-run because E:/FBX/build/src/osgPlugins/fbx/CMakeFiles/generate.stamp is up-to-date.
    3>cl : 命令行 warning D9002: 忽略未知选项“/SAFESEH:NO”
    3>cl : 命令行 warning D9002: 忽略未知选项“/SAFESEH:NO”
    3> loadFBX.cpp
    3> ReaderWriterFBX.cpp
    2> osgFbxViewer.vcxproj -> E:FBXosgFBX-masterin64osgFbxViewerd.exe
    2> osgFbxViewer.vcxproj -> E:/FBX/osgFBX-master/bin64/osgFbxViewerd.pdb (Full PDB)
    3> ImportCameraAndLight.cpp
    3> ImportLine.cpp
    3> ImportMaterial.cpp
    3> ImportMesh.cpp
    3> ImportTextureAndImage.cpp
    3> 正在生成代码...
    3> osgdb_fbx.vcxproj -> E:FBXosgFBX-masterin64osgdb_fbxd.dll
    3> osgdb_fbx.vcxproj -> E:/FBX/osgFBX-master/bin64/osgdb_fbxd.pdb (Full PDB)
    4>------ 已启动生成: 项目: ALL_BUILD, 配置: Debug x64 ------
    4> Building Custom Rule E:/FBX/osgFBX-master/CMakeLists.txt
    4> CMake does not need to re-run because E:/FBX/build/CMakeFiles/generate.stamp is up-to-date.
    ========== 生成: 成功 4 个,失败 0 个,最新 0 个,跳过 0 个 ==========

    #ifdef _WIN32
    #include <Windows.h>
    #endif // _WIN32
    
    #include <osg/Group>
    #include <osg/Camera>
    #include <osgDB/ReadFile>
    #include <osg/Node>
    
    #include <osg/Geometry>
    #include <osg/Image>
    #include <osg/ShapeDrawable>
    #include <osg/Texture2D>
    
    #include <osg/MatrixTransform>
    #include <osg/AnimationPath>
    
    #include <osgViewer/Viewer>
    #include <osgViewer/ViewerEventHandlers>
    
    #include <osgGA/DriveManipulator>
    #include <osgGA/GUIEventHandler>
    #include <osgGA/GUIEventAdapter>
    #include <osgGA/GUIActionAdapter>
    
    #include <osgGA/AnimationPathManipulator>
    #include <osgGA/KeySwitchMatrixManipulator>
    
    #include <osgUtil/LineSegmentIntersector>
    
    #include <osgAnimation/BasicAnimationManager>
    
    #include <iostream>
    using namespace std;
    
    
    int main(int argc, char **argv)
    {
    
        //viewer
        osgViewer::Viewer viewer;
        osg::Group* root = new osg::Group();
        viewer.setSceneData(root);
    
        ////
        //bool save_to_pointcloud = false;
    
        //osgDB::Options* ops = new osgDB::Options();
        //if (save_to_pointcloud) ops->setOptionString("draco_point_cloud");
    
    
        //offset
        osg::MatrixTransform* mt = new osg::MatrixTransform();
        mt->setMatrix(osg::Matrix::translate(0, 0, 0));
    
        //load from .fbx  路径中不能有中文
        osg::Node* node_drc = osgDB::readNodeFile("E:\FBX\osgFBX-master\data\static_mesh.fbx");
        mt->addChild(node_drc);
        root->addChild(mt);
    
        //run
        viewer.setUpViewInWindow(100, 100, 1280, 720);
        viewer.run();
    
        return 0;
    }

  • 相关阅读:
    Spring源码剖析4:懒加载的单例Bean获取过程分析
    css3动画 9步
    删除文件
    监听变量的方法
    jPaginate应用
    bg-render+bg-class+filter
    css兼容处理
    系统前端关键点
    token 入门教程
    svg笔记----------path篇
  • 原文地址:https://www.cnblogs.com/herd/p/11134641.html
Copyright © 2011-2022 走看看