見出し画像

VRMお人形遊びを作った話

この記事はプロ生ちゃんプロ生ちゃん Advent Calendar 2018の12/22分です。

まえがき

VRM、ご存知ですか?
ニコニコ動画やってるドワンゴさんが、来るVR時代に打ち出した3D人型モデル向けのファイルフォーマットです。と言いつつも、暫くはVRデバイス普及率の問題もあるので、「VR用!」とは行かなそうですね。ニコニコには10年以上続くMMD文化があり、VR時代への変遷で色々あった訳ですが、その辺りを解決すべく立ち上がった(と信じて)VRMコンソーシアムさん?の動向に注目して行きたいと思います。

VRMお人形遊び?

コンソーシアム!?なんじゃっそら!と思った人も居るでしょうが、そういうのは偉かったり凄かったりする人にお願いして、庶民は新しく生まれたこの遊び場の土台で、自分が好きな遊びをするのが良いでしょう。という事で突然ですが私はお人形が好きです。

この子はアゾンさんのルルナという子なのですが、スケールサイズは1/3です。定番のリカちゃんサイズは1/6で、最近流行りのfigmaFAGはだいたい1/12です。一概には言えませんが、大きければ高く、場所も取ります。であればまさにVRの出番という事です。

UniVRM

VRMはUnityに機能を取り込んでFBXという形式を変換して作成するのが、恐らくよくあるパターンかと思います。詳細はVRMファイルを作ってみたいをご覧ください。この中でVRMへの変換機能を入手するのですが、それがUniVRMとなります。GitHubで公開されており、releasesでは読込サンプルが提供されています。

これを空プロジェクトに入れてサンプルシーンを読み込めば、それだけでVRMビューアーです。exeに書き出しておくと、確認用として便利だったりしますよ。

このサンプルが非常に簡単である事の例を挙げると、肝心のVRM読込処理はたった一行で済んだりします。が、残念ながらその方法は旧型式扱いになったらしく、そういうの気にするとちょっと面倒です。ただ、グーグル先生に聞けば情報は出てきます。VRM対応アプリの一つであるバーチャルモーションキャプチャーの作成者様がUniVRM0.44時点のサンプルを記事にしてくださっています。はい、これで後は自分の好きな機能を付けたすだけです!

VRMお人形遊びの話

ある意味やっと本題ですが、VRMお人形遊びはSteamVR Plugin 2.0を使っています。ご存知の方も多いと思いますが、2.0になってから現時点ではVRTK使えません。(間違った認識でしたら訂正お願いします。)私はOculus使いですので、いっそSteamVRを切る手も考えましたが、トラッカーを理由としたVRChat/VCasでのVive使いの多さや、そもそも少ない母数をさらに目減りさせるのも……、と悩み格闘が始まりました。

とは言えSteamVRにもサンプルはあるので、これを真似れば大抵の事はできます。ただし、個人的には癖があると思ったので、今回のVRMお人形遊びに実装したコントローラ系の操作は、この画像のコントローラそのままの感じで真似して作りました。やり方次第と思いますが、具体的に一例上げると、掴んだオブジェクトが手オブジェクトの子になり、子になった事により手に追従して動くという形になるため、親子関係の処理がややこしくなりがち、などです。

手で掴んだオブジェクトの角度を関節に使う。というのが今回の基本部分ですが、親子関係の問題があるので、着手時、クォータニオンの差を使ってーみたいなのが分かっておらず、暫くの間はワールド角から親子関係を辿って子オブジェクトに反映させる、とかまどろっこしい無駄な努力をしていました。

あとはVRMのライセンスUIを自分で作ると地味ながら大変という事です。このあたりは先人に頼った方が賢いと思います。

それ以外は正直Unity初心者講座のサンプルをコピペすれば済むような内容が多いです。初心者講座は言い過ぎかもしれませんが、検索してコピペで済ませたような所が数多くあります。あらゆる先人とその橋渡しをしてくれる検索エンジンに感謝します。

あとがき

もうちょっと簡素にサクっと書きたかったんですが、思ったより文章量多くなったわりに、殆ど情報が詰め込めませんでした。細かい所はツイッターのモーメントをまとめたので、そちらをご覧頂ければ幸いです。悪戦苦闘の様子が見れると思います。


この記事が気に入ったらサポートをしてみませんか?