UE4にSpineが来た
※ UE4.15の正式リリースに合わせて、UE4ランタイム実装が正式リリースとなりました。
Spineとは、2Dアニメーションにもボーンを取り入れて、3Dアニメーションのように、2Dアニメーションを作れるようにするツールです。誤解を恐れずに言えばSpriteStudioの親戚のようなものです。
長らくUE4への対応は行われなかったのですが、次のバージョンアップで対応されることになりました。UE4.15から対応という予定ということで、UE4.15pre2で、動かしてみました。
UE4.15pre2 でSpineランタイム動いたー! プロジェクトはSpine公式のサンプル pic.twitter.com/LHfpZKT3pv
— katze (@katze_7514) 2017年1月30日
まだβ版ということもありSpine側のコードを変更する必要がありました。先行して触りたい人向けに、どこをいじれば良いかをざっと紹介したいと思います。
Spnieが用意したUE4への導入ドキュメントはこちら。
1. SpineのUE4ランタイムをDLする
Spineのランタイムは、Githubで公開されてますのでDLします。
UE4ランタイムが含まれているのはspine-ue4フォルダです。テスト用のUE4プロジェクトも含まれていますので、それをそのまま動かすことにします。
2. spine-ue4にspine-cのソースをコピーする
spineランタイムの本体はspine-cフォルダのソースです。
spine-c内のspine-cフォルダをフォルダごと、「spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Public」にコピーします。
コピーしたら、VSプロジェクトを再生成しておきます。
3. SpinePlugin.Build.cs にAssetToolsを追加する
以下の2行を追加してください。
PrivateIncludePathModuleNames.AddRange(new string[] { "AssetTools" }); DynamicallyLoadedModuleNames.AddRange(new string[] { "AssetTools" });
4. コピーしたspine-c内にある「c」拡張子を「cpp」拡張子に書き換える
Spineの製作者がcファイルをコンパイルできるようにするためのプルリクをしていて、UE4.15に含まれています。しかし、VSのプリコンパイルヘッダーの仕様でそれだけではコンパイルが通りません。そのため、cppとしてコンパイルすることにしました。
5. ソースを修正する
- 拡張子を書き換えたcppファイルすべてに「SpinePluginPrivatePCH.h」を一番最初にincludeするように書き足す
- 「SpineAtlasImportFactory.cpp」で「IAssetTools.h」をincludeする
- 「SkeltonJson.cpp」の_spLinkedMesh構造体宣言をコメントアウトする
- 「Atlas.cpp」266行目274行目あたり
- 「if(!(count = readTuple(&begin, end, tuple))」の条件式を外に出す