Bakulog

獏の夢日記的な何か。

【QUMARION】お人形でMMDモデルを動かす【MMD/MMM】

人型入力デバイスQUMARION(クーマリオン)」のMikuMikuMoving(MMM)用プラグイン作ってみましたという話題です。

※2016/5/30追記: 使い方の説明で重大な誤記があったので直しました。

 

もくじ

 

概要

人型入力デバイスQUMARION(クーマリオン)とは何か」みたいな話題は公式ページに普通に載っているので割愛します。本記事では「なぜこんなプラグイン作ったか」を主眼において紹介します。

 

しかしその前に、本記事を書く上で私が以前にやってきたQUMARION関連のアウトプットを簡単に紹介します。以前に書いたブログだとこんな感じ。

一番上のCLIP STUDIOを使った記事ではQUMARIONの「本来の」と呼ぶべき、もっとも典型的な使い方を紹介しています。いっぽう下の2つは私が自分でQUMARION SDKのラッパーから書いて実践したリアルタイム制御系の実践事例になっています。

で、それに続いて今回作ったプラグインではこんな事が出来ます。

https://twitter.com/baku_dreameater/status/690522748536299520

まあ記事タイトルの通りなんですが、MikuMikuMovingのモデルがその場で動かせますというデモです。

 

先に断っておきますが本記事は「QUMARIONをもとにモーションファイル(.fbxとか)を出力して何か別のソフトでボーンアニメーションとしてインポートしたい」というシナリオを直接サポートするものではありません。上のUnity用ライブラリやPepperの操縦と同様、リアルタイムにQUMARIONと同期を取ってなんかしよう!という需要をおもに意識しています。平たく言うと「MMD以外のソフトでQUMARIONからモーション作ってMMD/MMMにインポートするのは手順が面倒なので直接MMD/MMM上でやろう」と。それに(Unityもですが)MMMのようなソフトであれば他ソフトと連携するプラットフォームとしても使いやすいですし。

逆に「モーションの.fbxを作りたい」系の用事であれば本記事で紹介するような手段ではなく、普通にセルシスが公開しているCLIP STUDIO系列のアプリケーションを使った方がいいです(あまり詳しくないのですが、何か対応ソフトがあったはずです)。

 

プラグインのダウンロードと使い方

プラグインは"MikuMikuMoving64_v1272"をターゲットに作成しています。他のバージョンでの動作は保障してないのでご注意下さい。プラグインGoogle Driveにzipで固めて置いてあります。後述しますがソース版もあります。

 

プラグインの配置方法ですが、まずプラグイン本体である"QumarionForMMM.dll"は通常のプラグインと同じように"Plugins"フォルダに入れてください。次に"QumarionDotNet.dll"を"MikuMikuMoving64.exe"と同じフォルダに配置します。

これに加え、セルシスの公式ページから"QUMARION SDK"をダウンロードして配置します。まずSDKのページにアクセスし、利用規約を確認したうえでSDKをダウンロードします。ダウンロードしたzipを解凍すると中に"lib/release/x64/QmPdkDll.dll"と"lib/release/x86/QmPdkDll.dll"というファイルがあるので、これらをMMMの実行ファイル以下に次のように配置します。参考として"QumarionDotNet.dll"と"QumarionForMMM.dll"の配置場所も示しています。

※2016/5/30修正: ファイル配置の方法が間違っていたので直しました。参考として、修正前の誤ったファイル配置についても本記事の末尾に残しておきます。

MikuMikuMoving64.exe
QumarionDotNet.dll
..
Plugins/
  QumarionForMMM.dll
  ...
dll/ #dllフォルダは普通無いので新規作成
  release/ #フォルダを新規作成
    x64/ #フォルダは新規作成
      QmPdkDll.dll #"lib/release/x64"フォルダからコピー
    x86/ #フォルダは新規作成
      QmPdkDll.dll #"lib/release/x86"フォルダからコピー

(上記の手順では各フォルダを手で作って"QmPdk.dll"を持ってくるという事にしていますが、別にreleaseフォルダを丸ごとコピペしても構いません。)

 

このようにしたら配置終了です。QUMARIONをPCに接続し、MikuMikuMovingを起動してください。

 

配置がうまく行った場合、モデルを選択した状態で「プラグイン」から「QUMARION」をクリックしてONにすることでQUMARIONMMDモデルの動きがだいたい同期します

quma_mmm_usage

例えば社畜ちゃんのMMDモデルに使ってこういう感じになります。

quma_mmm_shachiku_chan

ちょっとピントがアレですが、およそ動きが取れているのが分かるかと思います。

ただしQUMARIONを使ってもMMDの全身まで動かせるわけではありません。というのもQUMARIONの関節は通常のMMDモデルの全自由度には対応してないからです。今のところ準標準ボーンの中でも以下のボーンにQumarionの動きを適用するようにしています。

  • 全ての親(角度のみ、条件つき)
  • 上半身
  • 上半身2
  • 左腕
  • 左ひじ
  • 左手首
  • 右腕
  • 右ひじ
  • 右手首
  • 左足
  • 左ひざ
  • 左足首
  • 左つま先
  • 右足
  • 右ひざ
  • 右足首
  • 右つま先
  • 左足IK
  • 右足IK

また初期版の時点ではIK周りをうまく制御できておらず、足をキレイに動かすのがかなり厳しいです。ご了承下さい。

 

私が想定している使い方としては、以下の4ステップでポーズを着けていくことを想定しています。

  1. 操縦対象のモデルを選ぶ
  2. QUMARIONプラグインをオンにしてだいたいのポーズを取らせる
  3. QUMARIONプラグインでは制御していない部分のボーンも微調整
  4. 最後はQUMARIONプラグインをオフにして微調整

 

最後にプラグインの設定についてですが、タイムラインの表示場所にある「プラグイン」タブで色々弄れるので試してみてください。特に動きが変わるものとしては「加速度センサを使用」というチェックボックスがあり、これをONにすると上記ボーンのうち「全ての親」にQUMARION全身の傾き情報が入力されるようになります。全身を傾ける(飛ぶような)動きを作りたい場合は使い道があるかもしれません。

 

 

作りたいけど作れてない機能

以下の機能は作ろうと思っているものの手を付けられてない部分です。下にも載せてますがソースはGitHubに公開しているので誰かやってくれると非常に嬉しいです。

  • 足のIKをキレイに動かす
  • 腕や手首をよじらずに「右腕捩」や「右手捩」ボーンにねじり方向の回転を転嫁する

 

ソースコード

GitHubにMITライセンスで公開しています。注意ですがソースコードのライセンスとQUMARION SDKのライセンスは全く別です。ソースは緩いライセンスで公開してますがQUMARION SDKのライセンスはそれなりに厳しいので二次利用にあたってはその辺ご留意ください。

ソース版を改変する場合でもQUMARION SDKの入手は(もちろん)必要となるほか、参照dllとして"QumarionDotNet.dll"が別途必要になるのでこちらのDLLだけzip配布版のを使うか、あるいはコチラについてもGitHubのソースからビルドしてください。

なおQumarionDotNetプロジェクトについてはビルド時の設定に若干クセがあるのでコチラの記事に載っているビルドの話題を参考にしてください。ただしUnity用にビルドする時と違いUNITYシンボルを定義せずにビルドしてください。間違うと実行時エラーになります。

 

 

質問とか要望

twitterかブログの右側に載せてるメールアドレスで受け付けています。

 

 

(2016/5/30追記)ファイル配置の手順紹介ミスについて

本記事の修正前ですが、dllファイルの置き方を下記のように書いていました。修正後と比べるとreleaseというフォルダがすっぽり抜け落ちた形になっています。

MikuMikuMoving64.exe
QumarionDotNet.dll
..
Plugins/
  QumarionForMMM.dll
  ...
dll/ #dllフォルダは普通無いので新規作成
  x64/ #フォルダは新規作成
    QmPdkDll.dll #"lib/release/x64"フォルダからコピー
  x86/ #フォルダは新規作成
    QmPdkDll.dll #"lib/release/x86"フォルダからコピー

コレだとプラグインが動かないだけでなくMMMが起動しなくなります。リリースしてから数か月気づかなかったのは酷いとしか言いようが無いですね…。