今回からFBX SDKを使ってfbxファイルからデータを取得していきます。
fbxファイルはAutodesk社が管理するもっとも有名な3Dファイル形式の1つです。
取得するデータとしては頂点インデックス、頂点座標、法線、テクスチャ座標(uv)、ボーンインデックス、ボーンウェイトなどを取得していきます。
読み込むファイルはここでは僕が作成したモデルを使って説明します。 下のサイトからaotwintechan_fbxxxx.zip(xxxはバージョン)をダウンロードして解凍して使ってください。
単純な構造にしているので簡単に扱えると思います。
FBXSDKの設定をする
Visual Studioをインストールしてない方はこちらを参考にしてください。
まずは下の公式サイトから「GET FBX SDK」を押してダウンロードページに行き、FBX SDKをダウンロードしてください。
https://www.autodesk.com/products/fbx/overview
僕はVisual Studio Community 2017を使っているので、一番近い赤で示したVS2015用のFBX SDKをダウンロードしました。
新しいバージョンのSDKが出ていたら、そちらを使って、これからしていく説明のバージョン部分を読み替えてください。
ダウンロードしたファイルをダブルクリックした後のインストールは特に変更するところがないのでnextを押していればいいです。
新規作成->プロジェクトからWin32コンソールアプリケーションを新規作成します。
ここではプロジェクト名をFbxLoaderSampleとしてます。
下の様にプロジェクト->”プロジェクト名”のプロパティと進みます。
左上の構成を「すべての構成」にして、「C/C++」->「全般」と進み、「追加のインクルードディレクトリ」の右にあるボタンを押すと「編集」というのが出てくるので選択します。
ファイルのようなボタンを押して、インクルードディレクトリを指定していきます。
インストールされたFBX SDKの「include」フォルダを指定します。 デフォルトでは「C:\Program Files\Autodesk\FBX\FBX SDK\2018.1.1\include」となるはずです。
次に追加のライブラリディレクトリを指定していきます。
構成をアクティブデバッグ(またはデバッグ)にしてください。
リンカー->全般と進み、先ほどと同様にライブラリディレクトリを選択していきます。
Visual Studio Communityは設定しないと32ビット版のバイナリしか扱えないので、「C:\Program Files\Autodesk\FBX\FBX SDK\2018.1.1\lib\vs2015\x86\debug」を選択します。
(x64を選択したい場合はこちらやこちらなどを参考にして設定を行ってください)
次に「C/C++」->「コード生成」のランタイムライブラリを確認します。
基本的には「/MDd」となっていると思います。
「リンカー」->入力の追加の依存ファイルを編集していきます。
先ほど/MDd(または/MD)となっていたので「libfbxsdk-md.lib」と入力します。
(/MTdまたは/MTとなっていたら「libfbxsdk-mt.lib」と入力します。)
これでデバッグ時には使えるようになったので、コードを書いてきちんと設定できているか確かめます。
OKボタンを押してプロパティを閉じてください。
以下のコードを書いて、実行してみましょう(デバッグ開始はF5でできます)。
このとき必ずソリューション構成がDebugになっていることを確認してください。
#include "stdafx.h"
#include "fbxsdk.h"
int main()
{
FbxManager* manager = FbxManager::Create();
manager->Destroy(); //これを呼んでおけばFBX SDKのメモリ解放忘れはないはずです。
return 0;
}
エラーが出なければ問題ありません(すぐ終了します)。
先ほどはデバッグ構成の設定をしたので、今度はリリース構成の設定をしていきます。
プロパティを開き、構成を「Release」にします。
リンカー->全般の追加のライブラリディレクトリに
デバッグの時と同様に「C:\Program Files\Autodesk\FBX\FBX SDK\2018.1.1\lib\vs2015\x86\release」と設定します。
「C/C++」->「コード生成」のランタイムライブラリを確認します。
今回は「/MD」となっていましたので、「リンカー」->入力の追加の依存ファイルに「libfbxsdk-md.lib」と入力します。
ソリューション構成をReleaseにして実行してみて、エラーが出なければOKです。
次回からは本格的にデータを取得していこうと思います。