Windows11環境のMSYS2でQtのビルド環境を導入してAnimeEffectsをビルドした話

コンピュータ
AnimeEffectsという静止画から動画を作成するキーフレームアニメーション作成ソフトを使っているのですが、Windows11でソースからビルドする環境を作ろうと思います。
GitHub - AnimeEffectsDevs/AnimeEffects at v1.5.2
2D Animation Tool. Contribute to AnimeEffectsDevs/AnimeEffects development by creating an account on GitHub.

AnimeEffectsは使われている言語がC++でGUIなどを構成するツールキットがQtとのこと。
Qtのバージョンは5らしいのですが、現行サポートされているQtのバージョンが6だったりします。
QtCreatorというIDEを使ってビルドすることが推奨されていたので、Qtの日本語サイトからインストーラーをダウンロードしてインストールしてみます。
Qt | ソフトウェア開発ライフサイクルの各ステージに対応するフレームワーク
クロスプラットフォーム開発向けのソフトウェアアプリケーションや組み込みデバイスの製造に必要な、企画・設計から開発・テスト、そして将来的な変更にも対応したツールのすべてを提供します。

ここで気になるのがインストールされるQtのバージョンは現行の6のはずですので、ビルドしようとしているプロジェクトには新しすぎる点です。うまくいかない場合古いバージョンを探すつもりで試してみました。

結果としてうまくいかなかったのですが、ビルド時ヘッダーファイルが見つからないエラーが1か所。こちらは懸念していたQt5とQt6の違いが原因のようですが、ヘッダーファイルが別の場所に存在するのでソースプログラムを一部書き換えて対応しました。
次にMakefileでエラーが発生していました。このあたりで筆者のスキルでは手に負えないので導入撤退を視野に入れた思考が頭の中を駆け巡ります。
ログを見るとファイルのコピーでエラーが発生しているように見えます。cp -f /C/Users/karet...が失敗しましたとのこと。コピーの文の内容をPowerShellにコピーして実行したところ、cp(Copy-Item)の-fパラメタが-forceと-filterの二通りの解釈があるので曖昧であるとのエラーでした。
???Makefileはビルド時に生成しているのにPowerShellというかWindows環境があっていないような感じがします。ただWindows用のIDE(QtCreator)をインストールしていてそのあたりの設定が必要であるとは考えにくい。
とりあえずMakefileの内容をcp -Forceに書き換えて実行すると同じコピー部分で別のエラーが発生しており、今度はパスが存在しないとのことでした。
パスは存在しており、パスを見ると/C/Users/...とWindowsのパス表記ではなく/(ルート)から始まるUNIX系のパス表記である点に気が付きました。やはりWindows向けのMakefileではない感じです。
ネット検索してもそれらしい情報もなくほぼお手上げ状態になりました。一晩寝て次の日MSYS2からQtCreatorをインストールすれば問題解決するのではないかと思いつきました。

MSYS2のインストール

Windowsのアプリケーションのパッケージマネージャのscoopを使っていますので、そちらにMSYS2が無いか調べたらありましたのでscoopからMSYS2をインストールします。

scoop install MSYS2

pacmanでパッケージをインストール

powershellからmsys2と入力しmsys2起動します。
msys2が起動しましたらpacmanというmsys2のパッケージマネージャを使って開発に必要なパッケージをインストールします。

pacman -Syu
pacman -Sy
pacman -Su
pacman -S base-devel
pacman -S mingw-w64-x86_64-toolchain
pacman -S mingw-w64-x86_64-clang
pacman -S mingw-w64-x86_64-cmake
pacman -S mingw-w64-x86_64-qt5
pacman -S mingw-w64-x86_64-qt-creator

環境変数のPathに各種binを追加

QtCreatorでプロジェクトをビルド

AnimeEffectsのプロジェクトを読み込みビルドを実行したところ今度は成功しました。

実行したところ見慣れたAnimeEffectsと見た目が異なります。

バージョンが異なるようで、いつも使っているバージョンが1.3.4で今回のソースコードは1.5.2の物だったようです。

開発者の方が変わられているようですがアップデートが期待できることは利用者として大変喜ばしいです。

msys2だったりmingwだったり役割がイマイチ理解できていなかったり、scoopだったりpacmanだったりとパッケージマネージャを複数使うと嫌な予感がしたりしますが、とりあえず目的を果たすことが出来たので良しとします。

追記:
1.5.2はエクスポートで動画書き出しが失敗、レガシーエクスポートは成功ですのでとりあえず使えそう。
1.3.2のビルドは出来ましたがツール類の項目に自由変形のアイコンが無いので使える状態ではない。

 

追記:20250208

AnimeEffectsを使っていて、拡張子が.anieのプロジェクトファイル?とAnimeEffects.exeと関連付けでエクスプローラーから開けるように出来ないか、ソースコードを眺めてみたところ、エントリーポンとでコマンドライン引数の.anieファイルを処理しているようなコードが見受けられました。

Windowsのファイルの関連付けを設定したところAnimeEffectsが起動し、プロジェクトが開かれることが確認出来ました。

そうなると気になるのが、プロジェクトファイルを保存する際と動画をエクスポートする際、出力先のファイルの場所を指定するファイルダイアログが表示されるのですが、そのフォルダがAnimeEffectsのインストールフォルダになっています。希望としては既にプロジェクトファイルが保存ているのであればプロジェクトファイルが保存されたフォルダにしたい。

こちらもソースコードを眺めてみたら、QFileDialog::getSaveFileName()の第3引数に””がセットされており、フォルダを指定していない様に見受けられました。パスをセットするように変更してみたところ希望通りの動作を確認できました。

QFileDialogが使われているコードを直接書き換える方法は修正方法として余り賢い方法とは言えませんが、ソースコードの全体像を把握できていないので、ほかに方法がありません。QtとC++だけであれば、頑張ればソースコードの解読が出来るかもしれませんが、OpenGLなど過去に学習したことの無い分野があると、難しい感じがします。出来ればどのような方法で機能を実現しているか知りたいところですが、

追記:20250216
AnimeEffectsの使い方

使っていて気付いた点などをメモしています。
文章にすると伝わらないし、説明用の図を上手く作る自信がない。

・動かしたいパーツをレイヤーに分ける
沢山の部位に分けると動きの表現性が高まる。
レイヤーの階層で、手前、奥の関係も意識する。
レイヤーの重なりで見えない部分の絵を用意する必要あり。

・動かせるボーンの数には限界がある。
レイヤーごとに10程度を明安にする。
レイヤーの切り出しも動かしたいボーンを想定する。

・ボーンの影響範囲につてい
影響範囲が重なると、想定外の動作になることがある。
なるべく重ならないようにレイヤー分けを意識する。

・メッシュについて
何もしなくともデフォルトでメッシュは設定されている。
独自のメッシュを設定すると、自由変形やボーン変形で変形する方向性をある程度コントロールすることが出来る。
具体的な考え方はLive2Dのメッシュの手動編集をGoogle検索してみるとよい。

・プロジェクトにレイヤーを追加
psdファイルを差し替えることは出来ないようですが、追加することが出来るのようなので其方で対応⇒差し替え可能かも?要確認

・瞬き表現
自由変形で表現することも出来るが、完全に閉じた瞬間違和感が出るので、以下の透明度を動かす方法を推奨する。

ベースに瞳を閉じた絵を用意、透明度100%
上部レイヤーに瞳を開いた絵を用意、透明度を0⇒100%を短い期間で切り替える。

コメント