SOP でなんでも処理したいマンの最大の悩み「SOPでアニメーションを扱いたい!」を解決すかもしれない、FBX アニメーションを取り込む SOPノードを開発しました、という話をしたいと思います。
#モチベーション
Houdini 18ベータテスト中のある日、BoneDeform のマニュアルに以下の記載をみつけました。
https://www.sidefx.com/docs/houdini/nodes/sop/bonedeform.html
Since Houdini 18.0, Bone Deform can also be used with point attributes in its second and third inputs.
The capture paths in the boneCapture attribute in its first input are matched with the point name attribute in the second and third inputs. Instead of using the rest transform within boneCapture, it is taken from the second input’s P and transform (matrix3) point attribute values. Instead of using the transforms from bone objects, they are instead taken from the third input’s P and transform (matrix3) point attribute values.
解説すると、Houdini 18 の Bone Deformer はインプット2 及び 3 にポイントアトリビュートを使用できるようになりました。bone object の代わりに、ポイントアトリビュートの name は boneCapture にマッチした名称、P、transform(matrix3) へ姿勢を与えることでボーン変形を解けるようになりました。インプット2 はバインドポーズ、インプット3 はカレントポーズになります。
と、これを発見した時に、あとはアニメーションさえ取り込めればいいのでは? という思いに至りました。
#FbxAnimationSOP
前置きはこれくらいにして、FBXアニメーションを読み込み SOP を開発しました。Houdini をゲーム開発で活用している、活用していきたいと奮闘されている同志の助けになればと思いソースコードを公開しました。
https://bitbucket.org/hideki/houdinifbxanimation
ビルド方法を解説します。
#準備
事前に用意するものは以下です
- Houdini 18
- Visual Studio 2017
- cmake
- 恐らくv3.6以上
#ビルド
ビルドはcmakeでプロジェクトファイルを生成する必要があります。プロジェクトファイルは以下の手順で作成できます。 ※フォルダは例ですので、環境に合わせて変更してください。
>mkdir d:\work
>cd d:\work
>git clone https://bitbucket.org/hideki/houdinifbxanimation.git
>cd houdinifbxanimation
>mkdir build
>cd build
>cmake -G "Visual Studio 15 2017 Win64" ..
Houdiniのプラグイン開発に慣れていない方は以下の手順でコマンドプロンプトを開いてください。
無事プロジェクトファイル (SOP_FbxAnimation.sln) が生成されたら、Visual Studioでプロジェクトを開いてビルドします。
ビルドが成功したら
%USERPROFILE%/Documents/houdini18.0/otls
に SOP_FbxAnimation.dll が追加されます。
#最後に
コードの解説をと考えていましたが締め切りを死守するために割愛しました… 公開したコードはこれから Houdiniでプラグインを実装したいと考えられている方に向けて、出来るだけコンパクトに実装しています。Houdini で FBXSDK を扱う方法や SOPノードでジオメトリを生成する方法を理解するためのサンプルコードとしても活用してもらえれば幸いです。