VRMのセットアップは
UniVRMの公式ページでおおよそわかる。個人が(俺も含め)日記帳風に書いているものの大元の正体はコレだろう。
何らかの動きを再現して具合を確かめるには作成中のVRM Prefavを開いたら一旦ロックして、任意のAnimationControllers(※)を、VRMのAnimatorのController欄に(ドラッグ&ドロップして)アタッチする。
※Assets StoreのFreeモーションなど。例えば、BasicMotions@Run
プレイボタンを押し、自動的にGameタブに切り替わると動作を確認できる。
ところが、カメラの初期位置が被写体の背後になっている。したがって、これを直さないといけない。それには、カメラを選択してtransformのRotation欄Yに180を入れ(※)、ギズモで(被写体の正面まで)引っ張ってくる必要がある。ズームはカメラのField of View値を小さくすることで実現できる。
※ギズモの[移動/回転]切り替えは、Editorウィンドウのメニューバーの一段下にあるので、それで切り替えてもいい。
さらに、Scene画面には妙な遅延が発生することがあって、プレイと一時停止を繰り返していると、いきなり初期化されて(巻き戻って)しまうことがあった。プレイモードをExitしないと保存できないとダイアログがでるし、Exitすると弄っていた値が初期化されてしまう?――パラメータをFIXしてからExitできないのだろうか? Unity Editorはblenderよりもとっつきにくい。
VRM Spring Boneの設定方法は
公式ページのこの辺に書かれている。パラメータの詳細説明がないけれど。
ウェイトをかなりきつめにつけないと揺れないのかな?……と見えたが、値を煮詰めていくと、ちょっとずつ揺れるようになってきた。
VRM Spring Boneのギズモを表示させると、ルートボーンから伸びてる「アンテナ」状の先に剛体があることが(Sceneタブで)分かる。なお、プレイモードを一旦有効にしてある最中か、さもなければ一時停止中でないとギズモを見ることが出来ない。それもGameタブではなく、Sceneタブで、である。
VRM Spring Boneは、Sceneに放り込んだVRMのSecondary階層を見る必要がある。ギズモ表示は、プレイモードにしてからのSceneに限られる。VRMのAnimatorにアタッチするには、一旦VRMの親階層を選ぶ必要がある。rootの座標はまた別でVRMの足下がそれになる。Secondaryを選んでも、座標としては足下がアクティブとして表示される。この辺り、慣れないとけっこう紛らわしい。
異星人少女のカチューシャみたいなコレ(下図)はなんだろう? MMDでお馴染みのPMX Editorでの剛体表示とも異なる。

剛性、重力、空気抵抗の値を極端にしてみると、上方に跳ね上がっていたアンテナが下方にぶら下がるような案配になることが分かった――プレイモード中で、なおかつ一時停止していない状態で、Sceneタブ内であれば、リアルタイムで変化を見ることができる。どうやら、このアンテナはバネ作用の向きを表しているらしい。
Gravity Dir(重力の向き)のY方向にプラスを入れるかマイナスを入れるかで反り方(バネの力の向き)が正反対になるようだ。
マイナスは内向きに反る=内向きの力が強いとアンテナが垂れ下がる
プラスは外向きに反る=外向きの力が強いとアンテナが跳ね上がる
髪の毛にVRM Spring Boneを設定している場合、この外向きか内向きかで髪の毛が広がる向きが変わる。頭部に密着している髪の毛であれば、外向きに広がって欲しいし、逆に、もともとふわっと広がりのある髪型であるなら、内向きに狭まっても問題ない。

上図:内向きに作用させ過ぎるとワカメちゃんになってしまった。
試しに水平の拮抗状態ができるものか少し頑張ってみたが、アンテナを水平にすることはできても、作用が拮抗とはならなかった。水平が均衡状態ではないようだ。どちらかの向きに作用していないと揺れない、ってことだろう。
極端な反り方では、内向きの「巻いた板バネ」か、はたまた外向きの「広がったホウキ」みたいな感じになる。
Runのモーションである程度揺れる(コマ送り|Stepで違いが出ている)ことを確認してVRMに出力しなおして確かめてみると、ビューワーではさほど揺れなかった。微妙に、動いていることは動いている、ことが分かる程度。動きが「揺れ」と認識できるほどの細かな振幅と回数を持っていないらしい。
当初は、初期値のままで十分揺れていたような気がしたのだが、出力し直しているせいだろうか、何かをきっかけに、そんなに揺れてないな、という状態になってしまった。
大げさに突き出た竿状のもの――ルートボーンからの水平の長さがある揺れ物――であれば、効果を如実に感じることが出来そうに思う。垂れ下がっている前髪を繊細に揺らすコツの方は生憎とわからない。
MMDでの物理制御ほど巧みに揺れないようだ。けっこう難しい。
また、当たり判定のVRMSpringBoneColliderGroupは、ScriptをAdd Componentして自分でアタッチしないといけない。アタッチのターゲットは髪が揺れているのなら、頭(のボーン)になる。髪のVRMSpringBoneからは、ColliderGroupsのElementに“それ”を指定する。
ここまでの体験からVRM形式というものへの全体の感想を述べてみたい。
VRMは、まだ発展途上の段階にある。黎明期のMMDみたいなものに違いない。VRMは既に様々な場面で活用されているように見えるが、その実体はまだ仕様策定中に近い。スカートが貫通してしまう、という内容も散見するし、今書いたように髪の揺れ一つ見ても、いい感じに仕上げるのは難しい――少なくともMMDそのままでは通用しない。
ポリティカルには、VRMで覇権を取りたい思惑のドワンゴ=角川の見切り発車に感じなくもない。
VRM形式への変換はさほど難しくはなかったが、クオリティーを求めていくと、既に醸成が完了したMMDに軍配が上がるだろう。ようするに、VRMはまだまだこれからなのだった。とはいえ、この体験は無駄ではない。FBX形式によるUnityへのImportはVRChatでも体験するであろうし、FBX形式はゲームエンジンへのImportの基礎である。
良いリグでよく動くモデルを作っておけば、それは後々の転用に先んじた先行投資、ひいては財産になるのだ。MMDではちと出遅れた俺でも、VRMでなら、その発展を見守ることができる。