#Live2DをKuinに組み込みたい
プログラミング言語KuinにLive2Dを組み込むため、C++で提供されているCubism3 Nativeを試すことにした。
今回は、サンプルプロジェクトを実際に動かしたい。
#環境
今回は以下の環境で行う。
これはプログラミング言語Kuinに組み込むときのために環境を合わせる意味がある。
- Visual Studio 2017 C++
- ターゲットプラットフォーム8.1
- ツールキットv140
- DirectX11
#情報が無い
Cubism3 Nativeだが、驚くほどに情報が無い。
これは主に業務で使う人が多いためだと思われる。しかし私は趣味で試していく。
もっとも大きな情報源はSDKチュートリアルだ。
SDKチュートリアル : https://docs.live2d.com/cubism-sdk-tutorials/top/
これによると、基本的にはCocos2d-xや、OpenGLなど、スマホやネイティブアプリ向けを意図しているようだ。
そう。DirectXについての記載がない。
つまり気合いである。
#Cubism SDK for Nativeの入手
公式からダウンロードできる。
Last update : 2019/03/28
Download Cubism 3 SDK for Native beta11
https://live2d.github.io/#native
#構成
ここがいきなりの難関だと思う。
どう組み立てていくべきか、予測していくしかない。
- Core
- Framework
- Samples
これらの立場を調べた。
- Core → libとヘッダー。すでにコンパイル済み。
- Framework → ソースとヘッダー。必要なものをコンパイルしてlibかDLLを作る。
- Samples → 実際にLive2Dを使うときのサンプルプロジェクト。
#何をすべきか
やることは以下のとおりだ。
- Frameworkをビルド
- Samplesで動作を確認
#Frameworkのビルド
Frameworkのビルドについてはわりと楽だ。
ソースコードで配布されている上、なんと優しいことにCMakeのファイルまでついている。
CMakeを基に、Visual Studio 2017でのプロジェクトファイルを調整していく。
主に『DirectX関連へのパスやライブラリの追加』である。(例えば追加ライブラリへd3dcompiler.libを足すなど)
DirectXの知識はCubism3 Nativeと関係ないため割愛する。
注意点として、Renderingフォルダ内のD3D9フォルダやOpenGLフォルダは不要なことだろう。
これは、今回はDirectX11をターゲットにしているためである。
OpenGL向けなら、もちろんD3D9とD3D11フォルダが不要となる。
また、ソースコードを読めば分かるが、フォルダ階層には調整が必要なので注意が必要だ。
#Samplesのビルド
サンプルは、環境別に用意されている。
今回はDirectX11のため、D3D11だ。
ResフォルダはLive2D用データだ。共通必須となる。
また、このサンプルはDirectXTKが必要となる。
ReadMe_ja.txtに従い、DirectXTKをダウンロードしてビルドし、DirectXTK.libを作っておこう。
さて、実際にビルドするといくつものエラーが出るはずだ。
(フォルダ構成に関するものは割愛する)
主な原因は、LPCSTRとLPCWSTRの型変換ができないことだ。
これはビルド環境側で吸収できるのか確認が面倒だったため、以下の対応を行った。
もともとC++で開発している人であれば、このあたりは問題にならないだろう。
逆に、わたしのようなC#erには分かりづらい。
追記:あとで調べたところ、該当箇所はLPCSRTで型宣言をした変数だった。そのため、型宣言をLPCWSTRに修正して対応した。可能と分かったならよりエレガントに解決すべきだ。
最後に、リソース関連のプロパティを明示しておく必要がある。
jsonファイルはもちろんテキスト。画像は画像だ。
moc3ファイルはリソースだとエラーになるため、今回はメディアとした。
(構成は すべての構成 を選択しておくこと)
ここまでの作業により、サンプルがビルドでき、動くようになる。
https://twitter.com/isimiya9/status/1114068543002177536
あとはサンプルのソースコードを読み込んでいくのが中心となる。
サンプルのソースコードを読めば、C++で自前のプログラムを組むことができる。
以上。