Google VR SDK for UnityでMMDモデルを眺めるアプリ作成とそのやり方の話。
この記事は古いため現在とは差異がある可能性があります。
VRです。世界中で来てるVRです。響きが強そうなVRです。Google Cardboardとかで簡単なものなら安く体験できるVRです。
VRで諏訪子ちゃんを眺めたくてGoogle VR SDK for Unityつかったらすごく楽にAndroidアプリができたので 感動してやり方を広めようと思った次第です。
多分他にもっといい神記事がどこかにあると思うけど自分用メモでもあるので一つ。 多分iOSでも出来るんだろうと思うけどiOS端末を持っていないのでAndroid向けです。
※この記事は素人が素人向けに書いた記事のためより詳しい技術的な情報は別サイト等で調べてください。
目次
準備するもの
- Unity
- Android SDK
- Android Studioとかよくわからない!って人はGet just the command line toolsからインストーラをダウンロードして下さい。
- JDK
- Google VR SDK for Unity
- download the repo directlyと書かれているところからダウンロード。
- 好きなMMDモデル
- 好きなモーションデータ(*.vmd)
- MMD4Mecanim
セットアップ
Unity、AndroidSDK、JDKをインストールします。Pathの設定やJAVA_HOMEの設定も済ませておくと吉です。 これらの解説はもっとわかり易いサイトがたくさんあるのでそれらを参考にしてください。
その後は以下の手順を実行します。
- Unityを起動し適当なプロジェクトを作成。
- Google VR SDK for UnityのUnity Packageファイルをダブルクリックして下の画像のようなウィンドウが出てきたらImportをクリックしてインポート、MMD4Mecanimも同様にインポート
3.読み込みたいMMDモデルをフォルダごとProjectにドラッグ&ドロップしてAssetsに入れる。
※以下の操作はカメラがキャラクターの周りを回るようにしたい人向けの操作。
ProjectにあるGoogleVR > Scripts > GvrHeadをダブルクリックして開く。
何らかのエディタでGvrHead.csが開いたら次の操作を行う。
下記サイトの「void Update ()に下記を追記 」以下をコピーし、画像のようにif(trackposition)のカッコ内の末尾に追記
if(trackRotation)のカッコ内にある「var rot = ~」をif(trackRotation)の上に出す
だらだら開発日記: Unity+diveで視線の角度に合わせて、特定のオブジェクトにカメラを向け続ける
シーンの設定
ProjectにあるGoogleVR > Prefabs > GvrMainをSceneにドラッグ&ドロップし、VRで使うカメラを用意し、Main Cameraと同じ位置に移動させます。 その後Main Cameraは削除するか無効にしてください。
MMDモデルを読み込みモーションを設定する方法については開発者様のチュートリアルが非常にわかりやすいのでこれを参照してください。
このとき、セットアップの※以下を実行した人は見回したいMMDモデルの座標が(0,0,0)になるようにしてください。モデルを選択した時のInspectorからTransform > Positionの値を変更することで移動できます。
次にモデルを選択した時のInsepectorにあるMMD4MecanimのAnimタブを選択し、Delayed Awake Frameの値を0にしてください。それ以外ではAndroid端末上でモーションが再生できません。
モーション設定もモデルの位置調整も終わったら中央上部の再生ボタンを押して間違いなく動いていることを確認してください。
好みでマテリアル調整や地面の配置などを行うと良いでしょう。MMDモデルのエッジが気になっている場合はマテリアルのShaderをMMD4Mecanim/MMDLitにするかEdgeって書いてないシェーダを選べばとりあえずエッジはなくなります。
アプリのビルド
画面上部のFile > Build Settingsを開きます。開いたらとりあえずPlatformからAndroidを選択しSwitch Platformを押しましょう。Androidアプリのビルドがこれでできるようになります。
プラットフォームの切り替えが終わったらSwitch Platformの隣にあるPlayer Settingsをクリックして左に出てくるメニューを次のようにいじります。
- Resolution and Presentation > Default Orientation*をLandscape Leftに
- Other Settings > Bundle Identifierの内容を好きな内容に書き換え(デフォルトの状態だとビルドできません)
その後Scenes In Buildの内容を確認し、自分が設定した記憶のない名前のシーンがあったら全てチェックを外します。
終わったら開発者向けオプション > USBデバッグをオンにしたAndroid端末をPCに接続しBuild&Runボタンを押して気長に待つと
(development buildの文字列は気にしない)
キャラクターが召喚できます。めでたしめでたし。
画質調整
「キャラクターは召喚できたけど画質が悪い」とか「影が描画されてるせいか重い」という事があります。
そういう時は画面上部のEdit > Project Settings > Qualityを開きます。開いたらAdd Quality Levelを押し、 Levelsと書かれたところに何か追加されたことを確認します。 そして、ドロイド君(Androidのキャラクター)が描かれている列のチェックを新たに追加した物以外全て外し、 下の各種設定をいじって画質を調整します。
参考までに、自分はこのようにしています。影は描画されませんが、自分の端末(Xperia Z1f)でも軽くよく動く設定です。とりあえず画面のギザギザが気になる人はAnisotropic TexturesやAnti Aliasingの値を、影の質が気になる人はShadowsの値をうまいこといじってみてください。Otherの値はどうでもいいです。
最後に
お疲れ様でした。VRヘッドセットを注文してから届く前にこの記事を書いたのでVRを体験した感想はありませんがお役に立てれば嬉しいです。 そしてこの内容で動けばよいのですがよく確認していないので手順の不足があるかもしれません。
質問はお答えできるかわかりませんが、もしこれらの内容を知っている、または詳しい方で 不足があると感じたならばtwitterに連絡していただけると幸いです。
(追記) VRヘッドセットが届いたのでつけてみたらめっちゃ諏訪子ちゃん可愛くて脳みそ溶けた