Unity+Oculus+MMD とりあえず書き留めておく場所

Unity+Oculus+MMD VRでキャラクターと遊ぶ

Oculus Rift CV1とUnityを使用して、MMDモデルをVRで見る ー環境の構築と、MMDユーザーからのよくある質問

  普段、こんな感じでMMDモデルをVRで眺める」体験会をやっております。

bvillage.hatenablog.com

bvillage.hatenablog.com 

いつか詳細な記事を書くとして、「できるかな?やりたいかも?」と思っている、主にMMDユーザーへの「私がやってる作業の流れはこんな感じ」記事です。

※なお、当コンテンツはMMDに対する知識がある程度あり、それなりに扱える」つまりMMDユーザーが読むことを前提に書かれています。

MMDの操作に関する知識が無い方はこちら、初心者向けMMD操作解説ブログをご参照ください。こちらのブログも筆者が運営しております。

mikumikud.hatenablog.com

MMDにあまり詳しくない方へ

MMDモデルの多くは商用利用が不可となっております。商用利用を念頭に置いている方は必ずモデルに同梱の利用規約の確認をお願いします。

また、MMD以外での利用が不可のモデル・保存形式変換不可のモデル・VR不可のモデル・性的な表現や暴力的な表現不可のモデルなどもありますので、繰り返しますが必ず利用規約を確認してから使用してください。

規約を無視してモデルを使用しても、要らぬトラブルを招くだけで、あなたにとっていい結果には決してなりませんので、おすすめしません。

自分の好きなことを文句言われずにやりたい場合は、無料配布のMMDモデルを使わずに、お金を出してモデルを発注するか、自分でモデリングするのが良いでしょう。

また、基本的にここではスクリプトをあまり使用しません。

モーションも、MMDで作成できるモーション(vmd形式)のものを使用する前提で説明します。

vmdの再現性を重視するため、Animationの形式はHumanoid(vmd以外にもHumanoidモーションに対応)ではなく、Generic(vmdの再現性重視、ただし Humanoidモーションは再生できない)前提で解説します。

なので、 Humanoidモーションに関する説明は一切しません。Final IKとかも使いません。完全にガラパゴスですのでよろしくお願いします。 

概要としては

①Unityの画面構成のおおまかな説明・使い方

MMDのモデルを読み込み、vmd形式のモーションを再生する

③HeadLookControllerを使用した「モデルがカメラの方を向く」状態の実装

④照明についての解説・ Post Processing Stackを使用したエフェクト効果の解説・余裕があればパーティクルシステムとか・その他ビジュアル回りの解説を簡易に(自分のためにも英語の項目を全部日本語化して説明した資料を作りたい)

といった内容になると思われます。

MMDモデルをSceneに配置し、モーションを再生できる状態にし、場面の照明効果や色調補正のやり方がわかる…といったあたりがゴールでしょうか。

それ以上やりたい方は、ご自身でいろいろ調べて先に進むと良いと思います。

(余裕があればもうちょっと色々解説したいです…書いてみて、ここでこういうのやりたい!と思ったらやるかもしれない…)

まずは、環境構築から。

①ハイエンドHMDを手に入れる

 現在、VRを楽しむためのガジェットとして、主に

1.モバイルVR・スマートフォンを装着して映像を見る

※¥1000~¥10000以上・スマートフォンが必要・安価で手軽、位置トラッキングなし

2.デスクトップVR・PCに接続して映像を見る

※¥50000~¥80000以上・対応PCが必要・高価だが没入感が高い・位置トラッキングがあり空間の中で移動ができる

以上の二種類があります。

今回は、2番目の「PCに接続して映像を見るヘッドマウントディスプレイ(HMD)」を使用する場合のお話になります。

筆者が使用しているのはOculus Rift CV1(2017年11月現在、5万円にて購入可能)

Oculus touchと呼ばれるコントローラも同梱でこの値段なので、だいぶ安くなりました…

www.oculus.com

※購入は必ず上の本家サイトから!現時点では残念ながら家電量販店などでは購入できません。Amazonなどで高額転売されているケースあり・保証も受けられず割高でメリットなし!

Rift以外に入手しやすいのは「HTC Vive」(2017年11月現在8万弱。やや高価だが入手しやすい。VRアトラクション施設などで良く利用されている。一番売れていたがCV1の値下げにより拮抗状態らしい)Windows MR」(2017年11月現在5~6万。発売したてで情報が少ないが、比較的安価で入手が容易。日本語対応。まだあんまりおすすめしない…)など。

Riftのセットアップは英語ですが、たくさんのウェブサイトでセットアップ方法を記事にしているので、そちらを参照しながら臨めば引っかかる部分はあまりなく、スムーズ。

しかしながら発売当時と現在では同梱物が異なったりしているため、比較的新しめの記事を探すのがいいと思います。

こちらは発売当時の記事です。

www.moguravr.com

現在は「Remote」と「XBOXコントローラ」は付属しておらず、「Oculus touch」が付属しています。

こちらは「touch」のセットアップについて。

www.moguravr.com

また、Oculusには無料で楽しめるVRコンテンツがいくつか用意されています。

自作のコンテンツに向かう前に、プロが作った質の高いコンテンツを楽しむのもおすすめです。※英語のみのコンテンツが多いですが、ここで紹介したものは英語がそれほどわからなくてもなんとかなるレベルです。

VR初心者向け

「Oculus Dreamdeck」(一番最初に流れるVRコンテンツ詰め合わせ)

「First Contact」(touchのチュートリアル。かなりいい出来)

Google Earth VR」(世界の上空を思う様飛び回れます)

「COCO VR」(「リメンバー・ミー」というディズニー・ピクサー映画の宣伝用コンテンツですがものすごく良く出来ていて超おすすめ!ガイコツキャラクターになって死者の街を散策できます)

「Bullet Train」(銃を手に取り敵を撃つゲーム。特徴的なのは、「敵の弾がものすごくスローに見えるので、避けたり取ったり出来る」というところ。ビジュアル表現が面白いし、判定も甘々で簡単にクリアできると思いますので是非!)

 

現在テスター募集中の「Play Animaker」も、MMD者には馴染みのあるTda式ミクさんが登場しており、ミクさんになったりミクさんを動かしたりして楽しめます。

PlayAniMaker : Miku ver.(テスター登録ページ)

www.moguravr.com

Steam経由で無料ダウンロードできる「The Lab」も、とてもおすすめです。いくつかのミニゲームの詰め合わせ。個人的には矢を射るゲームが好きです。

store.steampowered.com

有料のものでは、「AirTone」(全身使える音ゲーRez Infinite」(映像が美しい音楽シューティングゲーム「Tilt Brush」(空間に絵を描ける)あたりが個人的におすすめです。

音ゲー2つは難度も低く(高い設定にも出来ます)、ゲーム苦手な私でもハマって楽しめました。

「Tilt Brush」は絵心ある無いに関わらず、ただ落書きをするだけで楽しいです。

 

それと、これからUnityを使用して自分でコンテンツを作るにあたって、「Oculusで自作のコンテンツを見られる設定」にしましょう。

Riftの設定をする際に使用した、Oculusのアプリケーションを開きます。

ここでは「Store」でコンテンツを入手したり、入手したものを「Library」から見たり、その他セッティングなどが出来るようになっています。

右上の歯車アイコンから「Setting」を選択し、左の「General」のタブを選択。

一番上の「Unknown sources」をオンにします(デフォルトではオフ)。

f:id:emifuwa:20171124104734j:plain

これは、端的に言えば「ストアで流通してるやつだけじゃなく、野良で作られたアプリも見られるようにする」ということです。

これをオンにしないと、自分で出力したコンテンツが見られないことになりますのでご注意を。

※歯車アイコン「Setting」からは、「Devices」タブでRift本体やセンサーの接続状況を確認したり、「Devices」タブの右上「Configure Rift」から、センサーのセットアップ・touchのペアリング、床からの距離の計測などが出来るようになっています。

 ②CV1を使用できるPC環境を手に入れる

基本的には「高い性能のグラフィックボードを積んだWindowsPC」が必要です。

BTOパソコンを買えるショップなどでは「VR対応」と銘打って発売されている機種も多数あり。「VR Ready」などの表示がされています。

Oculus Rift CV1推奨環境は以下の通り。

グラフィックボード:NVIDIA GTX 970及びAMD 290 以上
CPU:Intel Core i5-4590 以上
メモリ:8GB 以上
映像出力:HDMI 1.3
USB端子:USB3.0が3つ(+USB2.0が1つ)
OS:Windows 7 SP1以降(できればWindows10で64bit推奨)

満たさない場合は視聴クオリティに問題が生じたり、そもそも見られなかったりするので注意。

基本的にはデスクトップでの使用になると思われますが、外でデモをしたいなどの理由からノートPCを購入したい場合は特に注意。ショップに確認するが吉。

推奨スペック確認ページ

(↑自分のPCが推奨スペックに達しているか確認できるツールがDLできる)

2017年11月現在で、最も安価なデスクトップモデルで10万円くらいから購入可能。

G-GEAR おすすめパソコン

ノートPCの場合はそれより割高になるでしょう。

おすすめノートパソコン

OcuFes監修PC ゲーミングPC 

↑ここで紹介されてるLITTLEGEARは、持ち運びに便利な取っ手がついててコンパクトなので、デスクトップですがデモ用に使用してる人も居ます。

③Unityを入手する

Unityは現在広く使われているゲーム開発エンジンです。ゲームを作れるアプリケーションだと思ってもらえば差し支えありません(ちなみにポケモンGOスーパーマリオランなどもUnityで作られている)

Proでなければ無料で使用可能。趣味で使うなら問題ありません。

(※Personal(無料版)の使用条件は、個人:制作物の年間総収入$200,000以下/法人:$100,000以下であること。Unityでの制作物の売り上げが生じないホビー用途ならPersonalでOK、売り上げがあったとしても個人利用は2000万超えなければPersonalを使用してOKということになります)

Unity - Store

↑上のページの「Personal(無料)」からダウンロード…ですが、同ページを下にスクロールして「詳細→過去のバージョンのUnity」からダウンロードするのがいいかも。

筆者は現在、比較的安定している「ver.5.6.2p4」をメインに使用しています。

Unity.5.xのタブの一番上から入手できます。

Unityを開くと「ぜんぶえいごだよおお…しかもなんかすっごいすっごいいっぱい色々あるよお…」となるかもしれませんが、「いっぱい色々あるやつ」を全部わかって仕事してるプロもそうそう居ないレベルなので、気にしないでください。わかるとこだけわかればいい。

MMD4Mecanimを入手する

UnityにMMDモデルを読み込むためのプラグインMMD4Mecanimを以下のサイトからダウンロードします。

スクロールしていって下の方にある「MMD4Mecanim Beta~」と書いてあるzipファイルのリンクから。

Stereoarts Homepage

Unityを起動した状態でインポート(色んなやり方があるけど、とても簡単。同梱のチュートリアル基本編のpdfにやり方が書いてある)。

インポートが終了すると、Riftが既に接続されセットアップ済なら、とりあえずこれで「RiftでMMDモデルを見られる」状態になる。

 

この後の流れをざっくり書くと(本当にざっくりなので、後の記事でうるさいくらい解説します) 

MMDモデルとモーションを準備する(モーションはなくても読み込むだけでも出来る)

→モデルのフォルダにモーションデータ(vmdファイル)を入れておき、フォルダごとUnityの画面上にドラッグアンドドロップする

→Unity上でMMDモデル(+モーションデータ)を表示できる状態に変換する(この時モデルの利用規約が表示され、「規約に同意した上で使用してください」などのチェック項目にチェックを入れます)

→作業画面に変換したモデルを乗せる

→モデルと一緒に変換されたモーションデータを作業画面のモデルに乗せる(D&D)

→再生する

ウゴイタアアア!!しかもRiftで見られる!!

(※UnityをVRモードにしていれば、出力しなくても作業画面上で再生すればVRで見られる)

 

という感じになっております。

よくある質問 

MMD動画をそのままVRで見られるの?

2Dムービーとしてアップロードされている映像を3Dで見ることは出来ません。出来たらすごい…

VR用のデータはVR用に作成する必要があります。

通常の2Dムービーと違い、体験者がどこを見るかわからない(360度どこでも見られる)のに見た場所すべてをレンダリングしないといけないので、非常に重いデータになります。なので、ハイスペックなPCが必要なのです。

・MMEは使えないの? 

Unity上でデータを作っているので、当然ながらMMDのエフェクトは使えません。

Unityの中で使えるエフェクトは使えます。

パーティクル系などは、「パーティクルシステム」と呼ばれる機能を使い、自分で作ることが出来ます。

ただし、使用している変換プラグインは「MMD上で表示されるのと同じように表示する」ことになっているため、SSAOのようなエフェクトをUnity上で使用しても、モデルに反映されないことがあります(Unity上でシェーダ変更をすることで適用可能)。

オーバーレイや色調補正などに関しては、ある意味MMDよりかなり自由に設定することが出来ます。

参考:Unity - マニュアル: Post-processing スタック

また、照明の自由度はMMDより遥かに高いですが、もちろん度を越せば重くなります。

カスタマイズすれば、ビジュアル表現の自由度はかなり高いです。

(私はトゥーン系にもフォトリアルにもあまり魅力を感じないのでビジュアルはそっち系に寄せませんが、もちろんやろうと思えばそういう描写も出来ます)

MMDのステージは使えるの?

MMD4Mechanimが「pmd/pmxモデルを変換するプラグイン」なので、pmd/pmxモデルならそのまま変換して使えます。xファイルは使用できませんが、pmd/pmxファイルやfbxファイルやobjファイルに出力し直せば使えることになります。

参考:Unity - マニュアル: 3D アプリケーションからモデルをインポートする方法

大きいファイルは当然重くなります。

(ちなみに、pmxファイルのステージのモーフなどは再現されないことが多いです…)

また、Unityには「アセットストア」と呼ばれるストアがあり、ユーザーが作った3Dモデルが無料/有料で販売されています。

私が現在作成しているデータの背景のほとんどは、こちらで購入した部屋や建造物のアセットを使用しています。

https://www.assetstore.unity3d.com/jp/

もちろん、自作できる方はガンガン自作するといいと思います。

空に関しては、MMDで言うところの「スカイドーム」と似たような「スカイボックス」というものがあります。

スカイドームを転用することはできませんが、こちらもアセットストアで様々な種類のものを入手することが出来ます。

ちなみに、パーティクルやエフェクト、テクスチャなどもこちらで入手することが出来ます。

あえて気をつけるとすれば、Unityのバージョンによって使えたり使えなかったりするものがあるので、そのあたりでしょうか(古すぎて使えない・新しすぎて使えない両方ある)。

MMDモデルはちゃんと表示されるの?

だいたい良い具合に表示されますが、ものによってはテクスチャやtoonが反映されないなどの不具合が生じることがあります(※対応策あり)。

また、モーフなどもものによっては再現できない場合があります(通常の表情モーフなどはほぼ再現可能)。

どうしても解せない不具合が出る場合は、相談に乗れます。

MMD世界よりも少し小さく表示されるため、Unity内ではモデルの大きさを1.2~1.3倍くらいにするとちょうど良いです(モデルの大きさは簡単に変えられます)。

・視野角は調整できるの?

Riftの視野角は110度固定ですが、これは「映像の見える範囲」という意味で、MMDで言うところの視野角とは意味が違います。

なのでもちろんMMDでの視野角110度の状態で見えるわけではありませんが、やはりMMDユーザーからするとやや広角気味には見えます。体感で言えば40度くらいでしょうか。

では顔が歪んで見えるか…と言えば、VRでの見え方と2Dムービーでの見え方を同一に語ることはなかなか難しいです。

モデルの着ているアウターとインナーの隙間が広めに感じられたり、全体的に奥行きを強調された感じに映ります。

 ・モーションはちゃんと再現できるの?

現在かなり再現性は高いですが、完全に完全です!ということではないです。

IKがらみで引っかかることがたまにあります。腕IKとかは避けた方がいいかも…

・外部親機能は使えるの?

MMDじゃないので使えません。

剣を持ったアクションなどをやりたい場合、pmxエディタなどでモデルの手に剣をくっつけてしまう方をおすすめします。

・物理演算は?

MMDの物理の完全再現は無理です><

袖や裾がバサバサ系は辛いかもしれません…

MMMなどを使用して、モーションで物理焼き込みをしてしまえばOKです。

・モデルに触ることはできるの?

「触って質感を感じる」ことが出来るようになれば、すごいことになるでしょうね…

現在可能なのは「Riftに付属している左右コントローラー(Oculus touch)に左手右手を割り当て→コントローラを手にしてモデルに触れ、髪や服の裾を揺らす」といった感じになりますが、個人的にあまり魅力を感じないのと作業量が増えるので体験会用のデータにはやっていません。

やろうと思えば「任意の箇所に触れると表情を変える・モーションを変える」なども出来ます。

YouTubeにアップされている360度動画とどう違うの?

違うところは色々ありますが、最も大きいのは「位置トラッキングがある/ない」でしょう。

RiftなどのハイエンドHMDは、センサーによって体験者の位置を把握します。

なので、目の前に居るモデルに近づこうとすれば近づけますし、自分が後退すればモデルは遠ざかります。

ですが、センサーなしのVRスコープで見た場合、体験者が動けば映像もそのままついてきてしまいます。

個人的には位置トラッキングがある方が好きなので、こちらの道には進みませんでした…

ただ、重いPCを持ち歩かなくてもよく、気軽にどこでも楽しめるという点では優れています。

・メガネをかけていても使える?

一応メガネは中に入ります。あまり横幅の広いものだと入らない可能性もありますが、ほぼ大丈夫かと…

最近の作業はずっとメガネでやってます。とは言え、コンタクトにした方が楽ではありますが…

ちなみに、ViveはRiftよりもゴーグル内のスペースが広く、メガネが中に入りやすいです。

のちのちはメガネなしでも使えるようにしてほしいところ。

 

 

(とりあえずこんなところですが、「こういうことが知りたい!」「これ書き方が間違ってない?」「これも書き足した方が…」などあれば是非お寄せください)