本ブログ初のR-18がらみ案件ですが記事自体は全年齢向けです。 開発系の内容はほぼゼロで、主目的は「MOD作りました」の紹介になってます。
5/29: Axis Neuronの設定部分で古い画面を紹介してしまっていたので更新しました。
もくじ
1. 何を作ったのか
自らのモーションで、CM3D2のキャラをリアルタイムで動かせるMODを作りました。 現時点ではVRとの相性まで検討していませんが、メイドさんになったような気分が味わえます。
- 「撮影モード」で選択中のメイドに対して有効
- 通常のモーションを停止させることでモーキャプが動き出し、メイドさんを動かせるようになる
プラグインの雰囲気は下記動画でだいたいわかると思います。
https://twitter.com/baku_dreameater/status/867737880570900481
https://twitter.com/baku_dreameater/status/867022540840902656
https://twitter.com/baku_dreameater/status/868641865137926144
使ってるモーションキャプチャはPerception Neuronです。 モーションキャプチャの価格破壊したことで一部界隈では有名なデバイスですね。
本記事作成している時点の価格ですが、日本の代理店で21万で買えます。
今回このプラグインを作った理由は、モーションキャプチャの魅力をもっとみんなに知ってほしいからです。
嘘です。
単にCM3D2を買ったら衝動で作りたくなっただけです。
2. インストール手順
※注意: CM3D2のMODなので例によって自己責任で導入してください。
他の多くのCM3D2向けMODと同様、しばりすを導入している状態でインストールします。 ただし、Sybarisフォルダじゃない場所に置く必要があるファイルがあるので気を付けてください。
※ライセンスについては下記手順で取得するzipファイルの中に入っています。
- しばりすを導入する(導入方法についてはググってください)
- Google Driveからzipを落としてきて解凍
Sybaris/Plugins/UnityInjector
フォルダの下へ、zipに入ってるCM3D2.RealtimeMotionPlugin.dll
をコピーSybaris/Plugins/UnityInjector/Config
フォルダの下へ、zipに入ってるrealtimemotionplugin.ini
をコピー(CM3D2.exeがあるフォルダ)/CM3D2x64_Data/Plugins
フォルダの下へ、zipに入ってるNeuronDataReader.dll
をコピー
アンインストールは、3,4,5で配置したファイルを削除すればOKです。
3. モーキャプ買わなくても動作チェックはできます
インストール手順の延長みたいなものです。 CM3D2側の準備だけでは動かないため、続けてモーションキャプチャ側を準備します。
※実機のNeuronを持っている場合は本手順の準備以外にもキャリブレーションとか色々あるのですが、 ここではより手軽に「NeuronがなくてもサンプルモーションでMODの動きが見られるよ」という手順だけ紹介します。1
まず、公式のダウンロードページでAxis Neuron Standard
をダウンロードしてインストールします。
インストール完了したら早速Axis Neuronを起動します。起動時にTipsのダイアログみたいのが出るかもしれませんが、消してしまってかまいません。
起動できたらメニューバーのFile > Settings
を開き、Broadcasting
タブで次のように設定していきます。
5/29追記: 私の手元で使っていたAxis Neuronが最新版でなかったため、情報を修正しています。
設定は以下のようにしていきます。
画面はこんな感じになっているはずです。
[expand title="※修正前の情報(クリックで展開)"]
こちらは古いほうの情報です。おそらく最新版の設定画面だけ見てもらえれば大丈夫ですが、参考ということで残しています。
Tcp/Udp
でUdp
を選択Udp Ips
でIPアドレスに127.0.0.1
を設定BVH
で、Enable
チェックをオンFormat
はBinary
ServerPort
は7001
ClientPort
は7777
画面はこんな感じになっているはずです。
[/expand]
設定が出来たら、File > Open
で適当なサンプルを開きます。
通常の方法でAxis Neuron
を導入すると以下のフォルダにサンプルモーションのファイル(拡張子は.raw
)があるはずです。
どれでもいいので適当に選んでください。
(マイドキュメントのフォルダ)/Noitom/Axis Neuron/Motion Files
ファイルを開いたら再生バーにある再生ボタンとリピートONを押し、サンプルモーションを無限ループ再生させます。
もし再生バーが表示されていない場合はWindow > Layout
でFull Function
などを選び、表示させてください。
再生中の画面イメージはこんな感じです。(再生中なので、再生ボタンが一時停止ボタンに切り替わってます)
準備が出来たらCM3D2を起動して撮影モードに入ります。 動かしたいメイドさんを選択し「モーション」ウィンドウでモーションを停止させます。 すると、メイドさんが動き始めます。 冒頭で紹介したツイートの再掲になりますが、実物MODの動きに一番近いのはコレです。
https://twitter.com/baku_dreameater/status/867737880570900481
キャラの身長によっては「動きはするけど足が浮いてる」という状態になるので、 そのときはキャラクター選択ウィンドウで基準座標や倍率を調整していい感じにしてください。
- 座標(とくにY座標)を調節 → 足がきちんと床につく
- 倍率を調節 → 足がツルツル滑ってるように見えにくくなる
倍率をいじる時のイメージとしては、大まかに 「モーキャプスーツを着てる人とキャラの身長が一致している方が見栄えがいい」 という話だと思ってください。
また「キャラが見えなくなったんだけど?」という場合は背景を非表示にしてみてください。 Axis Neuronのサンプルモーションの中には、 モーキャプスーツを着ている人が非常にながい距離を歩くようなデータもあるので、 モーションによってはメイドさんが部屋を突き抜けてどっかに行きます。ご愛嬌です。
4. (開発者向け)どうやって動いてんのコレ
完全にFK(Forward Kinematic)で動かしています。 モーキャプで全身の姿勢取れてるからIK不要でしょう、というコンセプトがベースになってます。
ソフト的なシステム構成ですが、まずAxis Neuronのソフト側で 「姿勢情報のバイナリをUDP通信で投げる」という所までしてくれます。 受信側についてもUnity向けSDKがあるので、 受信処理まではSDKに任せられます。
じゃあ開発者は何を組まなければならないのか、という話になってきますが、 UDPで飛んできた姿勢データはNeuron形式と呼ぶべき少し特殊な角度情報になっているので、 CM3D2用のボーン情報に再整形する必要がなります。 ここが開発者の出番で、要するに算数っぽいプログラムを組まなければなりません。
計算の理屈は一年半前の記事に書いた方法と同じです。
CM3D2もそもそもUnity
なので、計算のコンセプトに加えてコードも上記記事から流用しています。
理屈が知りたい、という方は上の記事を追ってもらってコードをじーーーっと見てください。
その他、細かい内容ではありますが、もとの記事に対する違いは以下のような感じです。
Hips
ボーンの位置情報も投げ込むようにしてる → キャラがきちんと動き回れる- 指とかのモーションも全部投げ込むようにしてる → 指まで動くと非常にそれらしくなる
- ただし
Head
の回転情報は投げ込まない → 頭の動きはCM3D2のカメラ追尾機能に任せる - Tポーズの情報はコード中に仕込んでおく → キャリブレーションしないでも動くようにするため
- その他パッと見では分からないことをごにょごにょして解決する
ごにょごにょ以外については、元記事の内容を使って自力で改造できるはずです。 ほんとはコードを公開してしまいたいのですが、ごにょごにょの内容を露骨に公にするのもちょっとアレなので、公開はしないつもりです。
5. 注意とか要望等
導入の所にも書いてますが、ご使用は全て自己責任でお願いします。 それなりに複雑なことをしているので、「Neuron買ってきたけど動かないぞ」 みたいなパターンも可能性ゼロではありません。 Neuron自体も調子悪いときは調子悪いですし。
不具合報告とか要望はTwitterか、あるいは本記事のコメントへお願いします。
6. 追記
この記事を書いている途中で自宅のNeuronのケーブルが調子悪くなってしまい、 「いい機会だし投げ銭も兼ねて!」ということでNeuron新調しました。 21万なので安くないですが、まあ、VR小道具というのは高くつくモンです。
今にして思えば、Neuronは初クラウドファンディング出資ということで、 KickStarterで4万円ほど払って手に入れた思い出深いデバイスです。 (※当時は学生だったので、この価格がどれほどヤバいか理解してませんでしたが。) 私が色々とこじらせる原因になったアイテムでもあります。
皆さんもモーキャプに限らず、積極的に何かしらをこじらせていきましょう。