ホーム » FBX
「FBX」カテゴリーアーカイブ
FBX SDK 2020.3.7
FBX SDK のダウンロードページを見ると 2020.3.7 があった.
インストールしてみると,今までと lib 以下が異なる.
2020.3.4 までは VS のバージョンでわかれていたのに,今回は lib\x64\debug\ などになっている.
ビルドしてのテストなどはまた今度落ち着いた時に …
設定などは次の所に書いています.
https://jml.mish.work/index.php/cpp/fbx-sdk-setting.html
FBX Review は exe が置いてあった.
Autodesk FBX Review – Windows 64 Bit
FBX SDK 2020.3.2
FBX SDK が更新されていた.
https://help.autodesk.com/view/FBX/2020/ENU/?guid=FBX_Developer_Help_welcome_to_the_fbx_sdk_what_new_fbx_sdk_2020_html
今は区切りが良くないので,ダウンロードまで.
2023/02/14
追加のインクルードとライブラリを変更.
C:\Program Files\Autodesk\FBX\FBX SDK\2020.3.2\include;%(AdditionalIncludeDirectories)
C:\Program Files\Autodesk\FBX\FBX SDK\2020.3.2\lib\vs2019\x86\$(Configuration);%(AdditionalLibraryDirectories)
C:\Program Files\Autodesk\FBX\FBX SDK\2020.3.2\lib\vs2019\x64\$(Configuration);%(AdditionalLibraryDirectories)
FBX SDK 2020.3.1
久しぶりに FBX SDK のページを見たら 2020.3.1 があったのでダウンロード.
2022/05/02
追加のインクルードとライブラリを変更.
C:\Program Files\Autodesk\FBX\FBX SDK\2020.3.1\include;%(AdditionalIncludeDirectories)
C:\Program Files\Autodesk\FBX\FBX SDK\2020.3.1\lib\vs2019\x86\$(Configuration);%(AdditionalLibraryDirectories)
https://jml.mish.work/index.php/cpp/fbx-sdk-setting.html
VC 2017 でビルドすると PDB が足りない?ため warning LNK4099 になる.
LibXml2-MD.lib(buf.obj) : warning LNK4099: PDB ‘libxml2.pdb’ が ‘LibXml2-MD.lib(buf.obj)’ で、または ‘c:\Temp\MICSTool\FBXtoM\Release.141\x64\libxml2.pdb’ に見つかりません。デバッグ情報がないものとして、オブジェクトにリンクします。
Zlib-MD.lib(adler32.obj) : warning LNK4099: PDB ‘zlib.pdb’ が ‘Zlib-MD.lib(adler32.obj)’ で、または ‘c:\Temp\MICSTool\FBXtoM\Release.141\x64\zlib.pdb’ に見つかりません。デバッグ情報がないものとして、オブジェクトにリンクします。
インストールされるものを見ると VC 2015 も同様.
VC 2019 ならば OK.
FBX SDK 2020.2.1 に更新
FBX SDK を 2020.2.1 に更新.
プロジェクト設定の,インクルードとライブラリのディレクトリを変更.
C:\Program Files\Autodesk\FBX\FBX SDK\2020.2.1\include;%(AdditionalIncludeDirectories)
C:\Program Files\Autodesk\FBX\FBX SDK\2020.2.1\lib\vs2019\x86\$(Configuration);%(AdditionalLibraryDirectories)
特に問題なくビルド完了.動作テストはこれから.
#pragma comment (lib, “LibFbxSDK-MD.lib”) などの設定は次の所に書いている.
https://jml.mish.work/index.php/cpp/fbx-sdk-setting.html
エントリ ポイントが見つかりません
FBX SDK 2020.1.1 を使用したコンソール AP のプロジェクトを VC 11 でビルド.
「プラットフォームツールセット」は「Visual Studio 2012 – Windows XP (v110_xp)」.
ビルドした exe を WinXP 環境で実行すると,
—————————
T_FBX.exe – エントリ ポイントが見つかりません
—————————
プロシージャ エントリ ポイント InterlockedCompareExchange64 がダイナミック リンク ライブラリ KERNEL32.dll から見つかりませんでした。
—————————
OK
—————————
VC 10 や VC 12 でビルドしたものは問題ない?
SDK のバージョンを変更して試してみると,
2019.0 までは OK で,2019.2 以降がうまくない.
他に VC 14 以降でビルドしたものがうまく動作しない.
何も表示されず exe が抜けて(終了して)しまったり,FBX の変換動作が機能しなかったりしている.
SDK 2020 では XP がサポートされていない.
https://help.autodesk.com/view/FBX/2020/ENU/
https://help.autodesk.com/view/FBX/2019/ENU/
FBX SDK とは直接関係ないが,
VC 14 以降のコンソール AP で,XP ではうまく実行できないものがある?
「プラットフォームツールセット」は「Visual Studio 2015 – Windows XP (v140_xp)」.
「標準 Windows ライブラリを使用する」とした exe は,起動はするがうまく実行できない.
「共有 DLL で MFC を使う」にすれば動作する.
「スタティック ライブラリで MFC を使用する」は未確認.
2020/03/16
VC 14 でビルドしたコンソール AP がうまく動作しなかったのは _stat .
何年か前に書いていた.WinXP で VC 14 _stat
vcredist_x86.exe を更新したからか,現象がちょっと変わってしまった.
全てではないが,先日通らなかったものが通る様になったものもある.
_stat で抜けてしまっていた exe が,うまく機能している?
FBX SDK 2020.2
FBX SDK 2020.2 があった.
VC 2015 , 2017 , 2019 の対応となったみたい.
また,ダウンロードページを見ると pdb の exe もある.
以前には気づかなかったが 2020.1.1 のページにも pdb はあった.
今日は,ダウンロードとインストールまで.
2021/03/11
SDK 2020.2 対応に修正.特に問題なし.
設定などは次の所.
https://jml.mish.work/index.php/cpp/fbx-sdk-setting.html
FBX SDK サンプルのビルド
FBX SDK 付属のサンプルをビルドしようと思い ヘルプ を見て同様に操作しようとするが,プロジェクトファイル(*.vcxproj)が見当たらない?
…\FBX\FBX SDK\ 以下を新しいものから順に見ると,2019.0 には vcxproj が存在している.
c:\Program Files\ 以下はあまり汚したくないので,..\FBX SDK\2019.0\ 以下を E: ドライブにコピー.
最初 include や lib などはなくても良いかと思ったが,vcxproj での追加のインクルードやライブラリが相対位置の指定になっているのでそのままコピー.
コピーした …\2019.0\samples\ に「空のソリューションファイル」を作成.
ソリューションに幾つかのプロジェクトを追加してビルド.
FBX SDK 2020.1.1
FBX SDK 2020.1.1 があった.
今は時間が取れないので,ダウンロードとインストールまで.
いつもの様に,インクルードとライブラリのパスを変更 2020.1.1 に.
2020.1 であったワーニング LNK4099 は出なくなった?
FBX SDK 2020.1
「FBX SDK の脆弱性」の記事を先日読んでいた.
それで SDK を ダウンロード する所を見ると,対応版と思われる 2020.1 があった.
「追加のインクルードディレクトリ」と「追加のライブラリディレクトリ」を 2020.1 に.
ビルドすると大量の warning .
LibXml2-MD.lib(buf.obj) : warning LNK4099: PDB 'libxml2-md.pdb' が 'LibXml2-MD.lib(buf.obj)' で、または 'c:\Temp\...\Debug.141\Win32\libxml2-md.pdb' に見つかりません。デバッグ情報がないものとして、オブジェクトにリンクします。 Zlib-MD.lib(adler32.obj) : warning LNK4099: PDB 'zlib-md.pdb' が 'Zlib-MD.lib(adler32.obj)' で、または 'c:\Temp\...\Debug.141\Win32\zlib-md.pdb' に見つかりません。デバッグ情報がないものとして、オブジェクトにリンクします。 LibFbxSDK-MD.lib(OArchive.cpp.obj) : warning LNK4099: PDB 'alembic-md.pdb' が 'LibFbxSDK-MD.lib(OArchive.cpp.obj)' で、または 'c:\Temp\...\Debug.141\Win32\alembic-md.pdb' に見つかりません。デバッグ情報がないものとして、オブジェクトにリンクします。
2021/04/29
LNK4099 のエラーは,pdb がないため.
FBX SDK 2020.1.1 以降であれば用意されているので,それぞれにあったものをインストールする.
FBX SDK 2020.0.1
FBX SDK がまた新しくなっている.
とりあえずダウンロードしてインストール.
ビルドなどは次のタイミングを予定.
Lib を組み込む部分のコードは次の様にしている.
#include <FbxSdk.h> #ifdef FBXSDK_VERSION_STRING #if (FBXSDK_VERSION_MAJOR >= 2014) #define FS_VER_GT_2014_00 #endif #if (FBXSDK_VERSION_MAJOR >= 2019) #if (FBXSDK_VERSION_MINOR >= 1) #define FS_VER_GT_2019_01 #endif #endif #if (FBXSDK_VERSION_MAJOR >= 2020) #define FS_VER_GT_2019_01 #endif #if defined (FS_VER_GT_2019_01) #if defined (_DLL) #pragma comment (lib, "LibXml2-MD.lib") #pragma comment (lib, "Zlib-MD.lib") #else // !(_DLL) #pragma comment (lib, "LibXml2-MT.lib") #pragma comment (lib, "Zlib-MT.lib") #endif // (_DLL) #endif #if defined (FS_VER_GT_2014_00) #if defined (_DLL) #pragma comment (lib, "LibFbxSDK-MD.lib") #else // !(_DLL) #pragma comment (lib, "LibFbxSDK-MT.lib") #endif // (_DLL) #endif #endif // FBXSDK_VERSION_STRING
FBX SDK 2020.0
FBX SDK のページを見たら新しい 2020.0 があった.
ダウンロードしてインストール.
構成マネージャで 2020.0 用の DebugK と ReleaseK を追加.
追加のインクルードディレクトリを 2020.0 に.
C:\Program Files\Autodesk\FBX\FBX SDK\2020.0\include;%(AdditionalIncludeDirectories)
追加のライブラリディレクトリを 2020.0 に.
C:\Program Files\Autodesk\FBX\FBX SDK\2020.0\lib\vs2017\x64\Release;%(AdditionalLibraryDirectories)
LibXml2 と ZLib をリンク するため,以前にコメントにしていた次の部分を有効に.
これでビルドはできるようになった.
動作確認はこれから.
FBX SDK の lib ファイル指定
先日,時間があまりとれず 今までの lib の指定 でそのままだった.
FbxSdk.h から順にたどっていくと fbxsdk_version.h があった.
この中に次の様な SDK バージョンが定義されている.
#define FBXSDK_VERSION_MAJOR 2014 #define FBXSDK_VERSION_MINOR 1 #define FBXSDK_VERSION_POINT 0
バージョン文字列は次の様に利用できる.
CString fsv_str = FS_Ver_Str ; #ifdef FBXSDK_VERSION_STRING // fsv_str = ::To_tstring(FBXSDK_VERSION_STRING).c_str() ; fsv_str = _T(FBXSDK_VERSION_STRING) ; #endif
これらを利用した方法で書き換え.
#if (FBXSDK_VERSION_MAJOR >= 2014) #define FS_VER_GT_2014_00 #endif #if (FBXSDK_VERSION_MAJOR >= 2019) #if (FBXSDK_VERSION_MINOR >= 1) #define FS_VER_GT_2019_01 #endif #endif #ifdef FS_VER_GT_2019_01 #ifdef _DLL #pragma comment (lib, "LibXml2-MD.lib") #pragma comment (lib, "Zlib-MD.lib") #else #pragma comment (lib, "LibXml2-MT.lib") #pragma comment (lib, "Zlib-MT.lib") #endif #endif #ifdef FS_VER_GT_2014_00 #ifdef _DLL #pragma comment (lib, "LibFbxSDK-MD.lib") #else #pragma comment (lib, "LibFbxSDK-MT.lib") #endif #endif
https://dev.mish.work/wordpress/2020/12/15/fbx-sdk-hxx-pragma-comment/
FBX SDK 2019.5
サイトの統計情報を見ていたら,検索キーワードに ” FBX SDK 2019.5 ” があった.
先日調べた時はわからなかったが,2019.5 になったみたい.
https://www.autodesk.com/products/fbx/
「C/C++」-「全般」-「追加のインクルードディレクトリ」を 2019.5 に. C:\Program Files\Autodesk\FBX\FBX SDK\2019.2\include;%(AdditionalIncludeDirectories) C:\Program Files\Autodesk\FBX\FBX SDK\2019.5\include;%(AdditionalIncludeDirectories) 「リンカー」-「全般」-「追加のライブラリディレクトリ」を 2019.5 に. C:\Program Files\Autodesk\FBX\FBX SDK\2019.2\lib\vs2017\x86\Release;%(AdditionalLibraryDirectories) C:\Program Files\Autodesk\FBX\FBX SDK\2019.5\lib\vs2017\x86\Release;%(AdditionalLibraryDirectories)
変更する前には,前の設定を残すため「構成マネージャー」でコピーしている.
FBX SDK 2019.0 以前からの更新の場合は libxml2-m?.lib と zlib-m?.lib が増えているのでその変更も必要.
FBX SDK 2019.2 で LNK2019
FBX SDK 2019.2 で LNK2019
先日の FBX SDK を使用したプロジェクトを VC 2017 と FBX SDK 2019.2 に上げてビルドすると,
LibFbxSDK-MD.lib(fbxmanager.obj) : error LNK2019: 未解決の外部シンボル _xmlCleanupParser が関数 "void __cdecl fbxsdk::Close3rdPartyLibraries(void)" (?Close3rdPartyLibraries@fbxsdk@@YAXXZ) で参照されました。 LibFbxSDK-MD.lib(fbxiosettings.obj) : error LNK2019: 未解決の外部シンボル _xmlStrcmp が関数 "struct _xmlNode * __cdecl fbxsdk::GetChildXmlNode(struct _xmlNode *,class fbxsdk::FbxString *)" (?GetChildXmlNode@fbxsdk@@YAPAU_xmlNode@@PAU2@PAVFbxString@1@@Z) で参照されました。 LibFbxSDK-MD.lib(awCacheDescriptionIO.obj) : error LNK2001: 外部シンボル "_xmlStrcmp" は未解決です。 LibFbxSDK-MD.lib(fbxiosettings.obj) : error LNK2019: 未解決の外部シンボル _xmlNewDoc が関数 "public: virtual bool __thiscall fbxsdk::FbxIOSettings::WriteXMLFile(class fbxsdk::FbxString const &)" (?WriteXMLFile@FbxIOSettings@fbxsdk@@UAE_NABVFbxString@2@@Z) で参照されました。 LibFbxSDK-MD.lib(xmlHelper.obj) : error LNK2001: 外部シンボル "_xmlNewDoc" は未解決です。 ...
今まで LibFbxSDK-MD.lib のみだったが,libxml2-md.lib と zlib-md.lib が増えた(分割された?)みたい.
スタティックリンクの場合は,それぞれ LibFbxSDK-MT.lib , LibXml2-MT.lib , zlib-MT.lib .
リンク対象にこれらを加えれば OK .
2019/09/05 FBXSDK_VERSION_MAJOR を利用した方法に変更 .
2020/12/15 fbx_def.hxx と fbx_lib.hxx として整理 .
VC 2015 x64 プロジェクトで C1128
FBX SDK を使用した VC 2015 x86 プロジェクトを x64 にしたら,
—— ビルド開始: プロジェクト:FBXtoM, 構成:Debug x64 ——
FBXtoM.cpp
FBXtoM.cpp(73): warning C4244: ‘初期化中’: ‘INT_PTR’ から ‘int’ への変換です。データが失われる可能性があります。
FBXtoMDg.cpp
E:\…\FBXtoM\FBXtoMDg.cpp : fatal error C1128: セクションの数がオブジェクト ファイル形式の制限を超えています: /bigobj と共にコンパイルしてください
Release 版では C4244 の warning は出るがビルドできる.
C4244 はアプリケーションクラスの dlg.DoModal の戻り値を int から INT_PTR に .
C1128 の対応は x64 Debug 版の「プロパティ」-「C/C++」-「コマンドライン」-「追加のオプション」に /bigobj を追加.
FBX SDK static exe
以前から _AFXDLL となっていたプロジェクトを static にすると,エラーがいっぱい.
今までは,DLL 版のライブラリを使用する様になっていた.
#if defined (FS_Ver200508)
// #pragma comment (lib, “FbxSDK_MD.lib”)
// …
#elif defined (FS_Ver2011_3_1)
#ifdef _DEBUG
#pragma comment (lib, “FbxSDK_md2005D.lib”)
#else
#pragma comment (lib, “FbxSDK_md2005.lib”)
#endif
#elif defined (FS_Ver2013_3)
#ifdef _DEBUG
#pragma comment (lib, “FbxSDK-2013.3-mdD.lib”)
#else
#pragma comment (lib, “FbxSDK-2013.3-md.lib”)
#endif
#else
#pragma comment (lib, “LibFbxSDK-MD.lib”)
#endif
_DLL が定義されているかどうかで振り分け.
#if defined (_DLL)
#if defined (FS_Ver200508)
// …
#else
#pragma comment (lib, “LibFbxSDK-MD.lib”)
#endif
#else
#if defined (FS_Ver200508)
// #pragma comment (lib, “FbxSDK_MT.lib”)
#elif defined (FS_Ver2011_3_1)
#ifdef _DEBUG
#pragma comment (lib, “FbxSDK_mt2005D.lib”)
#else
#pragma comment (lib, “FbxSDK_mt2005.lib”)
#endif
#elif defined (FS_Ver2013_3)
#ifdef _DEBUG
#pragma comment (lib, “FbxSDK-2013.3-mtD.lib”)
#else
#pragma comment (lib, “FbxSDK-2013.3-mt.lib”)
#endif
#else
#pragma comment (lib, “LibFbxSDK-MT.lib”)
#endif
#endif
FBX SDK – 2
2005.08 では,調べたかった事(FBX SDK のコンバート動作)がわからなかったので,今度は 2005.12.1 を選択.
{
KFbxSdkManager* pSdkManager = NULL ;
KFbxScene* pScene = NULL ;
if (!::InitializeSdkObjects(pSdkManager,pScene)) { return -1 ; }
CString fileFBX = _T(“Test.fbx”) ;
CString pathEXE = ::GetModuleFileName() ;
CString pathFBX = ::GetFileDir(pathEXE) + _T(“\\”) + fileFBX ;
if (::LoadScene(pSdkManager,pScene,pathFBX)) {
CString pathOTH = pathFBX + _T(“.3ds”) ;
::SaveScene(pSdkManager,pScene,pathOTH) ; // ,KFbxExporter::e3D_STUDIO_3DS) ;
}
::DestroySdkObjects(pSdkManager) ;
}
これをコンソールベースで作成,実行すると,3ds のファイルはできた.
dae はデータによるのかどうかわからないがアプリケーションエラーとなる.
dae ファイルはできているがモデルはなさそう.
ダイアログベースに改良.ファイルをドロップすると以下の変換が通る.
BOOL CFBXtoDlg::Convert(LPCTSTR filePath)
{
KFbxSdkManager* pSdkManager = NULL ;
KFbxScene* pScene = NULL ;
if (!::InitializeSdkObjects(pSdkManager,pScene)) { return FALSE ; }
CString pathSrc = filePath ;
if (::LoadScene(pSdkManager,pScene,pathSrc)) {
CString path3DS = pathSrc + _T(“.3ds”) ;
CString pathOBJ = pathSrc + _T(“.obj”) ;
CString pathDAE = pathSrc + _T(“.dae”) ;
::SaveScene(pSdkManager,pScene,path3DS) ;
::SaveScene(pSdkManager,pScene,pathOBJ) ;
::SaveScene(pSdkManager,pScene,pathDAE) ;
}
::DestroySdkObjects(pSdkManager) ;
return TRUE ;
}
2005.08 の example で出来た fbx などをドロップして変換.
ExportScene03.fbx は,3ds への出力でアプリケーションエラー.
FBXto の VC 6 プロジェクトを VC 8 に.単純に変換して,デバッグ版でビルド,実行すると,
—————————
FBXto.exe – コンポーネントが見つかりません
—————————
MSVCR80.dll が見つからなかったため、このアプリケーションを開始できませんでした。アプリケーションをインストールし直すとこの問題は解決される場合があります。
—————————
OK
—————————
リリース版では,実行可能.
2012/12/10 追記
根本的な解決にはなってないが,2011.3.1 SDK に変更して対応.
FBXto.2011.3.1.zip