4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Live2DをC++で組み込むため、Cubism3 Nativeのサンプルを動かした

Last updated at Posted at 2019-04-05

#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など、スマホやネイティブアプリ向けを意図しているようだ。
0050.jpg

そう。DirectXについての記載がない

つまり気合いである。

#Cubism SDK for Nativeの入手
公式からダウンロードできる。

Last update : 2019/03/28
Download Cubism 3 SDK for Native beta11
https://live2d.github.io/#native

0060.jpg
サンプルプロジェクトまであるようだ。

#構成
ここがいきなりの難関だと思う。
どう組み立てていくべきか、予測していくしかない。

  • Core
  • Framework
  • Samples

これらの立場を調べた。

  • Core → libとヘッダー。すでにコンパイル済み。
  • Framework → ソースとヘッダー。必要なものをコンパイルしてlibかDLLを作る。
  • Samples → 実際にLive2Dを使うときのサンプルプロジェクト。

#何をすべきか
やることは以下のとおりだ。

  1. Frameworkをビルド
  2. Samplesで動作を確認

#Frameworkのビルド
Frameworkのビルドについてはわりと楽だ。
ソースコードで配布されている上、なんと優しいことにCMakeのファイルまでついている。
CMakeを基に、Visual Studio 2017でのプロジェクトファイルを調整していく。
主に『DirectX関連へのパスやライブラリの追加』である。(例えば追加ライブラリへd3dcompiler.libを足すなど)
DirectXの知識はCubism3 Nativeと関係ないため割愛する。

注意点として、Renderingフォルダ内のD3D9フォルダやOpenGLフォルダは不要なことだろう。
これは、今回はDirectX11をターゲットにしているためである。
OpenGL向けなら、もちろんD3D9とD3D11フォルダが不要となる。
また、ソースコードを読めば分かるが、フォルダ階層には調整が必要なので注意が必要だ。

#Samplesのビルド
サンプルは、環境別に用意されている。
今回はDirectX11のため、D3D11だ。
0090.jpg
ResフォルダはLive2D用データだ。共通必須となる。
また、このサンプルはDirectXTKが必要となる。
ReadMe_ja.txtに従い、DirectXTKをダウンロードしてビルドし、DirectXTK.libを作っておこう。

さて、実際にビルドするといくつものエラーが出るはずだ。
(フォルダ構成に関するものは割愛する)
主な原因は、LPCSTRとLPCWSTRの型変換ができないことだ。

これはビルド環境側で吸収できるのか確認が面倒だったため、以下の対応を行った。
0150.jpg
0152.jpg
もともとC++で開発している人であれば、このあたりは問題にならないだろう。
逆に、わたしのようなC#erには分かりづらい。
追記:あとで調べたところ、該当箇所はLPCSRTで型宣言をした変数だった。そのため、型宣言をLPCWSTRに修正して対応した。可能と分かったならよりエレガントに解決すべきだ。

最後に、リソース関連のプロパティを明示しておく必要がある。
0170.jpg
jsonファイルはもちろんテキスト。画像は画像だ。
moc3ファイルはリソースだとエラーになるため、今回はメディアとした。
(構成は すべての構成 を選択しておくこと)

ここまでの作業により、サンプルがビルドでき、動くようになる。
https://twitter.com/isimiya9/status/1114068543002177536

あとはサンプルのソースコードを読み込んでいくのが中心となる。
サンプルのソースコードを読めば、C++で自前のプログラムを組むことができる。

以上。

4
6
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?