トップページ > 記事閲覧
VisualStudio2015(C++)とFBXSDK
名前:yellow 日時: 2017/02/14 10:24

前提としてFBXファイルのダイレクト読み込みについて VS2010でfbxsdk2015.1(VS2010)を使ってdxlibで正常にFBXを表示できています。 <参考にした手順> dxlib.o.oo7.jp/cgi/patiobbs/patio.cgi?mode=view&no=3517 これをVS2015(C++)fbxsdk2017.1で試してみたところうまくいかなかったので質問させてください。 どのようにうまくいかなかったのか説明すると下記サンプルでの最終的なアウトプット でモデルハンドルに-1が返ってくるまでこれといったエラーや警告もでないので、 どのタイミングになんらかのミスがあるのかわからない、といったところです。 導入的には同様の手順でDxLibMake.slnを用いてFBXを使用する用にビルトして dxlib_b.libとdxlib.libを作りました。 DxLibMake.sln (ver3.17a)/VisualStudio2015 構成の種類:スタティック ライブラリ (.lib) 文字セット:マルチバイト文字を使用する ターゲットプラットホーム:Windows ターゲットプラットホームバージョン:8.1 プラットホームツールセット:VS2010(V100)/VS2013(V120)/VS2015(V140) コード生成:Debug-基本ランタイムチェック(規定)-ランタイムライブラリ(/MTd) コード生成:Release-基本ランタイムチェック(規定)-ランタイムライブラリ(/MT) 追加のインクルードディレクトリ:fbxsdkのincludeディレクトリを直接指定 すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========0エラー 10警告 0メッセージ C4731 'DxLib::DrawMaskToDirectData_Base' : インライン アセンブラー コードにより変更されたフレーム ポインター レジスタ 'ebp' です。 C4731 'DxLib::DrawMaskToDirectData_Base' : インライン アセンブラー コードにより変更されたフレーム ポインター レジスタ 'ebp' です。 C4731 'DxLib::GetMaskScreenData' : インライン アセンブラー コードにより変更されたフレーム ポインター レジスタ 'ebp' です。 C4731 'DxLib::GetMaskScreenData' : インライン アセンブラー コードにより変更されたフレーム ポインター レジスタ 'ebp' です。 C4731 'DxLib::DrawMask' : インライン アセンブラー コードにより変更されたフレーム ポインター レジスタ 'ebp' です。 C4731 'DxLib::DrawMask' : インライン アセンブラー コードにより変更されたフレーム ポインター レジスタ 'ebp' です。 C4731 'DxLib::GraphColorMatchBltVer2' : インライン アセンブラー コードにより変更されたフレーム ポインター レジスタ 'ebp' です。 C4731 'DxLib::GraphColorMatchBltVer2' : インライン アセンブラー コードにより変更されたフレーム ポインター レジスタ 'ebp' です。 C4996 'GetVersionExA': が古い形式として宣言されました。 ビルド時に上記のような警告はでますがvs2010でも同様なので問題ないように見えます このような設定でfbxsdk2017.1(VS2015)、fbxsdk2016.2(VS2015)、fbxsdk2016.1(VS2015)を それぞれ試してみました、またfbxsdk2015.1に 関してはautodeskのリンクが2017.1に飛ぶようになってしまっていたので入手することができませんでした <autodesk fbxsdk> usa.autodesk.com/adsk/servlet/pc/item?siteID=123112&id=10775892 簡易FBX表示サンプル #include "dxlib.h" // WinMain int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // ウインドウモードで起動 ChangeWindowMode(TRUE); // DXライブラリの初期化 if (DxLib_Init() < 0) return -1; // モデルの読みこみ int FBXModel = MV1LoadModel("test.fbx"); // 描画先を裏画面にする SetDrawScreen(DX_SCREEN_BACK); SetUseLighting(FALSE); MV1SetPosition(FBXModel, VGet(320.0f, 240.0f, 0.0f)); // メインループ while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) { // 画面をクリアする ClearDrawScreen(); MV1DrawModel(FBXModel); DrawFormatString(200, 350, GetColor(255, 255, 255), "FBX file ModelHandle=%d",FBXModel ); ScreenFlip(); } // DXライブラリの後始末 DxLib_End(); // ソフトの終了 return 0; }
メンテ

Page: 1 |

Re: VisualStudio2015(C++)とFBXSDKにつ ( No.1 )
名前:管理人 日時:2017/02/13 01:40

手元で fbxsdk2017.1 を使用してみたのですが、問題なく fbxファイルを読み込むことができました 件のこちらのスレッド dxlib.o.oo7.jp/cgi/patiobbs/patio.cgi?mode=view&no=3517 の手順で見落とされている箇所があるかもしれません 見落としそうな箇所としては ------------------------------ 4.DxCompileConfig.h 内の以下の部分のコメントを外す // FBXファイルを読み込む機能を使用する方は次のコメントを外してください( 使用には FBX SDK のセットアップが必要です ) //#define DX_LOAD_FBX_MODEL ↓ // FBXファイルを読み込む機能を使用する方は次のコメントを外してください( 使用には FBX SDK のセットアップが必要です ) #define DX_LOAD_FBX_MODEL ------------------------------ こちらや ------------------------------ 7.プロパティダイアログ左側から「構成プロパティ」→「C/C++」→「全般」を選択して、  右側の「追加のインクルードディレクトリ」にインストールした FBX SDK の include フォルダ  ( 例:C:\FbxSdk\2017.0.1\include など、インストール時の設定によって変化します )  を追加して「OK」ボタンを押してプロパティダイアログを閉じる ------------------------------ こちらや( パスが C:\FbxSdk\2015.1\include から C:\FbxSdk\2017.0.1\include に変化 ) ------------------------------ 12.プロジェクトのプロパティダイアログの左側から「構成プロパティ」→「リンカー」→「全般」を選択して、  右側の「追加のライブラリティレクトリ」に FBX SDK の該当する Visual Studio のバージョン用の lib フォルダを追加する  ( 例: VisualStudio2015 を使用していて、   32bit版 Debug  ビルド用の lib ファイルを作成する際は C:\FbxSdk\2017.0.1\lib\vs2015\x86\debug   32bit版 Release ビルド用の lib ファイルを作成する際は C:\FbxSdk\2017.0.1\lib\vs2015\x86\release ) ------------------------------ こちらがあるかもしれません( パスが C:\FbxSdk\2015.1\lib\vs2010 から C:\FbxSdk\2017.0.1\lib\vs2015 に変化 ) よろしければご確認ください m(_ _)m
メンテ
Re: VisualStudio2015(C++)とFBXSDKにつ ( No.2 )
名前:yellow 日時:2017/02/13 13:17

見落としの設定がないように徹底的に最初から確実に確認を繰り返し 設定しビルドして、サンプルを実行しましたが結果は失敗でした。 DxLibMake.slnをFBXに対応するためのビルドでインクルード(fbxsdk.h)のディレクトリ 設定が間違っているかあるいは設定忘れなどの場合は ファイルが見つかりませんなどのエラーがでるはずですがそのようなエラーも出ません。 dxlib上での読み込みサンプルテストではlog.txtに1つだけエラーがみられますが 1045:VMD Load Error : 対応していない VMD バージョンです このログの表記から判断した場合、fbxsdkが正常に導入できていない (DxLibMakeの所で失敗している)とみられますでしょうか
メンテ
Re: VisualStudio2015(C++)とFBXSDKにつ ( No.3 )
名前:管理人 日時:2017/02/14 00:25

> dxlib上での読み込みサンプルテストではlog.txtに1つだけエラーがみられますが > 1045:VMD Load Error : 対応していない VMD バージョンです > このログの表記から判断した場合、fbxsdkが正常に導入できていない > (DxLibMakeの所で失敗している)とみられますでしょうか DXライブラリはモデルファイルが xファイルか調べ、mqoファイルか調べ、PMDファイルか調べ、 PMXファイルか調べ、最後に VMDファイルか調べて、違ったら上記のログが出力されるようになっているので、 『モデルファイルの読み込みに失敗した』という以上の情報ではなく、 『FBXファイルの読み込み処理が有効になっていて、且つ FBXファイルの読み込み処理が失敗した』か どうかを判断するための材料にはなりません… そして何故読み込みに失敗するかですが…原因が分かりません よろしければ yellowさんが準備された FBX SDK を使用するように変更された DxLibMake の プロジェクトのフォルダ一式と、それによって作成された DxLib.lib などを使用して FBXファイルを 読み込む処理をテストするために作成されたプロジェクトのフォルダ一式をどこかのアップローダーに アップしていただけないでしょうか?( 多分容量的にメールでは送れないと思うのでアップローダーで… ) 直接プロジェクトを拝見できれば原因が分かると思いますので… m(_ _)m
メンテ
VisualStudio2015(C++)とFBXSDK ( No.4 )
名前:yellow 日時:2017/02/14 10:25

FBXSDK自体は含まれませんがDxLibMakeに使用したプロジェクトと作成した ライブラリ、をDxLibFBX.zip(170mb)としてアップロードしました。 お気づきの点がありましたら一報頂ければさいわいです。 テスト環境; windows10(x64) VisualStudio2015 Dxライブラリ 3.17a DxLibMake.sln 3.17a fbxsdk2017.1/VS2015 fbxsdkのインクルードディレクトリ C:\2017.1\include fbxsdkのライブラリディレクトリ C:\2017.1\lib\vs2015\x86\debug C:\2017.1\lib\vs2015\x86\release サンプルで設定のdxlibディレクトリC:\ password: dxlib fast-uploader.com/file/7042590911452/
メンテ
Re: VisualStudio2015(C++)とFBXSDK ( No.5 )
名前:管理人 日時:2017/02/16 00:57

ファイルをアップしていただきありがとうございます すみません、うっかりしていました現在 VisualStudio 用の libファイルは ・VisualStudio 2012 より前のバージョン用 ( DxLib.lib, DxLib_x64.lib ) ・VisualStudio 2012 用 ( DxLib_vs2012_x86.lib, DxLib_vs2012_x64.lib ) ・VisualStudio 2013 用 ( DxLib_vs2013_x86.lib, DxLib_vs2013_x64.lib ) ・VisualStudio 2015 用 ( DxLib_vs2015_x86.lib, DxLib_vs2015_x64.lib ) と、バージョン毎に別々の libファイルとなっているのでした なので、VisualStudio 2015 でビルドした際にリンクされるのは DxLib_vs2015_x86_d.lib, DxLib_vs2015_x64_d.lib DxLib_vs2015_x86.lib, DxLib_vs2015_x64.lib なので、64bit版をビルドされたのでしたら DxLib.lib -> DxLib_vs2015_x64.lib DxLib_d.lib -> DxLib_vs2015_x64_d.lib 32bit版をビルドされたのでしたら DxLib.lib -> DxLib_vs2015_x86.lib DxLib_d.lib -> DxLib_vs2015_x86_d.lib と、それぞれファイル名を変更して既存の libファイルに上書きしてみてください m(_ _;m ( 私の手元ではそれで DxLibMake でビルドした libファイルが使用されるのを確認できました )
メンテ
VisualStudio2015(C++)とFBXSDK ( No.6 )
名前:yellow(解決) 日時:2017/02/16 07:31

そのような仕様になっていたのですね ご教示いただいた内容をもとに最初からやり直してみまして、 結果的にVS2015でFBXを無事に表示できました。 そのうえで、ご教示いただいた手順をもとに行った最初のデバッグ実行で 失敗しまして原因を調べた所、log.txtの内容では 1178:&#22093;&#21041;&#25665;&#18020;&#24946;&#25965;&#16975;&#17738;&#21571; ←(出力が文字バケしてしまっているようです) 1187:Fbx Load : 非対応の頂点カラーマッピングモードが使用されていました 1192:Fbx Load : ノードの解析でエラーが発生しました と、でてきましたが、これはこれで FBXSDKが正常に動作している内容を見る事ができました。 それでこのエラーの原因をしらべると文字通りモデルの FBX読み込み時にエラーが起こっているようでこれは推測しますと モデリングソフトでFBXを作った環境によるものと思われます。 SDKでこのようなケースもあるのかとふと思いましたが、別のモデルを読み込むように 記述すると、無事にFBXを表示させる事ができたしだいです。 当方のサンプルモデルが読み込めなかった件はとりあえず おいといて、、、ひとまず解決とさせていただきます。 ご教示ご協力いただき本当にありがとうございました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存