Oculus Questで「ミライアカリ」にGirlsを踊ってもらった
先週、「ミライアカリ」の新作フィギュアの紹介記事を見つけました。
そういえば、いつだったか KEI 氏がデザインしたキャラだったな? 思い出し、そのフィギュアを見てみると、
「ああ、そうだ、見たことがあるな、そうだ結構可愛いかったなぁ」
で、さらに思い出して、「確か MMD が提供されていた覚えがあるなぁ」と、本家ページで確認。早速ダウンロードしてモデルを確認…

素晴らしい…、かなりの出来栄え…、モデラーの「念」を感じます(モデラーさんは結構昔から知っていて、素晴らしい作品が多く、良く利用させてもらってる海外のモデラーさんでした)。

で、MMD を確認したときに、思ったことは、
- 先月入荷したOculus Quest(以下 Quest)買ったし、VR で眺めるか…
- でも、このモデルなら「Girls」映えるのでは?
まずは、この二つが思い立ったわけで、週末に一気に作ってみました。
まずは、Quest 用の準備。「下書きで止まっている Quest の苦労記事」が沢山ありますが、それらを乗り越えての今ということで(書いているうちにムカついて止めてしまうこと多々)、
環境
- Unity 2018.4 LTS
なんで 2019.x じゃないかって? 2018でできて、2019でできなくなった細かい不具合が多くて、ブチ切れたので止めました…。教訓「時間を無駄にしたくないのなら LTS 一択である」と- Oculus Integration
専用 API 使用のため、あと Quest 用に正しく配置するために必要 - HTC VIVE Input Utility
VR 機器に依存しない入力のため、本家 SDK には無い「支援効果」がすばらしいので - Final IK
いろいろ補正のために使用 - Puppet Master
おさわりではなく、すり抜け防止のために使用(建前)
- MMD4Mecanim
言わずと知れた MMD を Unity で使えるようにするプラグイン
- Oculus Integration
- Oculus Rift CV1(センサー2つ)
開発中の確認用(RIFT S に替えたい…)。 - 「Girls」MARiA(メイリア)
大好きな曲で、VMD にトレースしてくださった方が居るので、個人的に昔から MMD 関連で何かあるごとに使用させてもらって鑑賞しています。
本人出演の「踊っちゃってみた~」は必見ですよ(YouTube に公式が上がっていないのでリンクは割愛)。
準備
プロジェクトを作成して、ビルド対象を Android にしてから、プラグインを一通りぶち込みます。
VIVE Utility のダイアログが立ち上がり、Oculus の Android なら設定はこうした方が良いよ?という素晴らしい提案が来ます。 これは Oculus のガイドにある面倒な設定をしてくれるという優れもの(これって本来 SDK の仕事だよね?)。
ただ、個人的に時間を無駄にする行為が一番嫌いなので、Texture Compression の ASTC は最終段階まで使用しないことにしています。なぜなら、この方式、テクスチャのサイズがかなり小さくなるとのことですが(講演では10分の1?だったかな?)、圧縮にすさまじい時間とCPUを消費します。これがすべての画像ファイルに適用されるので、使用しないサンプルやアイコン集など多数あると、選んだら最後、変換に数十分から最悪数時間かかる羽目になるでしょう…(Oculus Interactionのサンプル群を入れちゃったら、まず数十分は帰ってきません…、無駄なものをプロジェクトに入れてはいけないという教訓ですね…)
シーン
Quest 用なのでなるべく軽くして、キャラクターの動きのみに全力投球できるようにしよう。 舞台は薄いプリミティブなシリンダーの板を数枚、テレポート可能な台として設置。VIVE Input Utility でテレポートは簡単にできるのでコンポーネント、Prefab を設置。
背景にはフリーの銀河 Skybox アセットを使用しました。
Final IK
おさわりに直接関係ないですが、モーションの補正や Look at IK にために使用します。
キャラクターの Rig を Humanoid にすれば設定が楽なのですが、今回は Generic のままやってみました。

今回もモーションの補正のため、ちょっと使っています。巣のままだと、左右の足がぶつかって気持ちが悪いので、足の Effector Offset をずらしています。Final IK のデモに「Effector Offset」のスクリプトがあるのでそれを追加してます。

Puppet Master
物理コンポーネント付きのパペットが作成できます。また「デス」または「ザキ」が使用可能になります。


また、プレイヤー(頭)に物理コライダーを設けることで、キャラクターへのすり抜けを防止できるようになります。 スカスカな内部など見たくないでしょう?
内部コライダーを有効にすると、モーション中の手や足のすり抜け等が強制的に防げます(モーションがおかしくなるかもしれませんが)。

どうも腕等の Bone 軸が標準化されていないようです… Look at IK も逆の挙動を示すので Aim IK に変更しました。

完成

感想
このミライアカリの MMD は結構なポリゴン数です。思った以上に Quest の能力は高いかと。PS3 と同等ぐらいというの納得。こらならまだまだ盛れる。
そう確かにいい。かわいい。だがプログラマーとして、そして「紳士」としてこれで満足してはいけない。 非現実でしかできないことをしないと…現実なら「スタァァァップ!」と 衛兵さん止められるものをw
でも動いているの触るの難しくね? 踊ってるの速いし…
そうか…時間を止めればいいんだ。
続く…
コメントを残す