
こたつに入りながらビーセイした話
冬だからね!
こちらは「Beat Saber Advent Calendar 2022」2日目の記事です。
やあ。うみねこたつ(@uminekotatsu)です。
今回は、1年前の「ビー祭 2022 冬」で私が行ったパフォーマンス……とは呼べない何かについてお話ししたいと思います。
誰?
うみとねことこたつが好きな人です。
ビーセイは2, 3年前くらいからちょくちょくやってます。ここ数か月はちょっといろいろ(※1)あってプレイできてないけど。
ScoreSaber見るとこんな感じ。

何したの?
見たほうが早いよ。
(ビー祭運営様ありがとうございます)
何これ?
こたつに入りながらビーセイしました。それ以上もそれ以下もないよ!
どうしてこんなことやったの?

……と、これだとさすがに身も蓋もないので、ここからどうやってアレをやったか、具体的に書いていきます。
真似してもいいですよ?
どうやったの?
まとめると、
①こたつに入った状態のアバターを用意して、
②ボーンとメッシュを分離して、
③ばもきゃ(※3)で読み込ませてキャリブレーションはせずに、
④CameraPlus(※4)でなんかいい感じに映す
だけです。簡単だね。
前提
使用したツール、およびアバターを以下に示します。
A. Blender
こたつに入ったアバターを用意するのに使用します。難しいことはなーんにもしないのでBlenderアレルギーの人も安心。
なお、今回こたつに入ったアバターを用意するのにBlenderのバージョンに異存するような操作はないため、任意のバージョンでOKです。
B. Unity
VRMを作成するのに使用します。UniVRMインポート済。
UnityおよびUniVRMもバージョン依存の機能を使用することはありません。普段使いの環境でいけるはず。
C. 任意の3Dモデル
アバターははみにさんのほむらちゃん。ほむらちゃんはいいぞ。
こたつの3Dモデルはおもちやさんのこたつを使用します。あたたかみあるデザインが良いですね。
その他、ばもきゃとビーセイと適宜必要なMODと……。普段お使いでしょうし割愛します。わからない人はググって。
①こたつに入った状態のアバターを用意する
Blenderに任意の3Dモデルをインポートします。服違うとか色ついてるとかこたつだけじゃなくて畳があるとか違いはありますが、概ね以下の画像の通りになるはずです。

このままだと、下半身がこたつと融合している謎のアバターになってしまうので、ちゃんとこたつに入らせてあげます。
まずはアバターの姿勢ですね。ポーズモードでアバターのボーンをぐりぐり動かしてあげて、それっぽいポーズにしてあげます。

それっぽいポーズになったらオブジェクトモードに戻り、任意のメッシュを選択して、アーマーチュアモディファイアーを”シェイプキーとして適用”(下図赤枠)。これをアバターを構成する全てのメッシュに対して行います。

こたつに入ってる風ポーズが取れるシェイプキーが一通りできたら、ポーズモードに戻って右クリック→”ユーザーのトランスフォームをクリア”で元の状態に戻します。
オブジェクトモードに戻ってシェイプキーを確認すると、”Armature”とか”アーマーチュア"ってシェイプキーができているはずです(便宜上、以下”アーマーチュア”シェイプキーと呼称します)。各メッシュに対してそのシェイプキーの値を1.0にしてあげると、事前にポーズモードでぐりぐりした通りにアバターがこたつに入ってる風ポーズをとってくれるはずです。ボーンが動かないのは狙い通りなので気にせずに。
シェイプキーの確認が済んだら全てのメッシュを選択して位置を良い感じに動かしてあげると、

アバターがこたつに入ってくれます。わぁい。
ボーンは動かさないでね。
続いて、必須ではありませんがシェイプキーをBasisに適用しましょう。シェイプキーがあるとVRMの容量も増えちゃうからね。
体系変化用のシェイプキーを使用している人は、先ほど作成した”アーマーチュア”シェイプキーとミックスしたシェイプキーを作成します。
任意のシェイプキーを任意の値(普段改変で使用している値)に設定、”アーマーチュア”シェイプキーは1.0にした状態で”ⅴボタン”を押下→”新シェイプをミックスから作成”。すると体系変化とこたつ入ってる風ポーズを同時に行ってくれるシェイプキーが出来上がります。


先ほど設定したシェイプキーの値を”アーマーチュア”シェイプキー含めて全て0.0に戻し、先ほど作成されたシェイプキーを1.0にしましょう。
これを全てのメッシュに対して行います。体系変化用のシェイプキーを使用せず、”アーマーチュア”シェイプキー以外0.0なら本工程はスルーでOKです。
その後、シェイプキーをBasisに適用してこたつに入ってる風ポーズがデフォルトになるようにします。
先ほど作成したシェイプキーを選択して”ⅴボタン”を押下→”選択したシェイプキーをBasisに適用”。すると、任意のシェイプキーの値を1.0にした状態がBasis(デフォルト)になります。

Basisに適用後は、”-ボタン”を押下してシェイプキーを消しちゃいましょう。
これを、全てのメッシュに対して行います。
!注意!
Body(顔)のシェイプキーは、Basisに適用したときに作成された”(任意のシェイプキー名)-Reverted"とかいうシェイプキー以外は消さないように!
これで、アバターがデフォルトでこたつに入った状態になります。
②ボーンとメッシュを分離する
今のままだと、もし何か間違えてキャリブレーションしてしまったら腕とか足が変に動いて阿鼻叫喚な事態になっちゃいます。
キャリブレーションしなきゃいいだけの話なのでこのままでもいいのですが、事故らないように一工夫。頂点グループを消してボーンを動かしても手足が動かないようにしちゃいましょう。
オブジェクトモードで任意のメッシュを選択し、頂点グループ右側の”ⅴボタン”を押下→”全頂点グループを削除”して、全ての頂点グループを削除します。

ただ、頂点グループが1つもないと、それはそれで何かよくない気がする(※5)ので、Hipsの頂点グループを作り直して、ウエイトを1で塗りつぶしちゃいましょう。
頂点グループは"+ボタン"を押すとできるので、名称をHipsにします。
そうしたらウエイトペイントモードに移動して、ブラシではなく頂点選択ができるようにします。

全てその状態で頂点を全部選択して、ブラシメニューのウエイトさを1.0にして、"Shift+K"を押下。すると、選択された全ての頂点のウエイトが1.0になります。


他のメッシュに対しても同じようにします。これで間違ってキャリブレーションしちゃったときも安心です。Hipsが動くと全部動いちゃうけど。
ここまで出来たらウイニングラン。軽量化するためにHumanoidで使用する基本的なボーン以外のボーンは削除して、こたつをリギングして他のメッシュと同じように頂点グループをHipsだけにして、ウエイトを1.0で塗りつぶします。
あとは、あたかもビーセイやってる何かの後方でこたつに入って眺めてるような位置にメッシュを移動させてあげて、……そうしてできたのがこちら。


これでアバターの準備はおしまい。
……じゃないけど、Unityに持ってってVRM化するくらいだから割愛します。VRMに入れるBlendShapeは、Bodyのシェイプキーを残しておいたからいつものように設定できるはずです。アバター動かないからSpringBoneも考えなくていい。すばらしいですね!
③ばもきゃで読み込ませてキャリブレーションはしない
これは手順じゃなくて簡単な注意点ですね。
前述しましたように、アレをやるのにばもきゃは使いますが、ばもきゃは(作者が意図した形で)使いません(※6)。
通常、ばもきゃを使用する際は
ばもきゃ起動→アバター読み込み→キャリブレーション
と、操作しますよね。
しかし今回は
ばもきゃ起動→アバター読み込み
→キャリブレーション
アバターを読み込みしたところでおしまいです。これでOKなんです。
理由は簡単で、ばもきゃはキャリブレーションするまではアバターのボーンは動かない仕様ですが、一方でキャリブレーションしなくてもBlendShapeは動く仕様なのです。いや意図的に仕様として定めてるのかはわかりませんが、きっと私みたいな人が頭の悪いことができるようにしておいてくれたのでしょうスゴイナー(※7)。
④CameraPlusでなんかいい感じに映す
これは書かなくていいですよね。好きな位置にカメラ置いて、いい感じに動かすだけです。
私はそんな難しいことやってないので、このnoteを読むような方であれば何も書かなくてもできるかと思います。君だけの最強のアングルをうんぬんかんぬん。
結局、これってどうなの?
以上、こたつに入りながらビーセイした話と、その手法でした。
我ながら一見どころか二見三見してもよくわからない手法ですが、楽しかったらなんだっていいよね。
さて、最後にこの手法を利用することによるメリットをいくつか挙げて本noteを締めたいと思います。
メリット
・キャリブレーションからの解放
- キャリブレーション不要
- トラッキングが飛ぶことによるアバターがゲッダン☆がなくなる
- 口や感情表現、まばたきは動作するため、通常通り(※8)アバターがしゃべっているように見せることが可能
・パフォーマンスからの解放
- 自分の体の動きは(セイバーの軌道を除き)反映されないため、自らが見られているという感覚の低減が可能
- かわいいアバター映しときゃいけるいける
デメリット
・これに慣れるとフルトラ配信をやる気がなくなる
もし興味が出たら本手法を試してみてください。わからなければ私のTwitterアカウント(@uminekotatsu)へご連絡いただければ、何かします。
※1:これも全て仕事とイカってやつが悪いんだ。私悪くない。
※2:逆に考えるんだ。「上手いプレイもパフォーマンスもできないならパフォーマンスをしないパフォーマンスをする」と考えるんだ。
※3:バーチャルモーションキャプチャー(https://vmc.info/)の通称(?)。いつもお世話になってます。
※4:すのーさんがメンテ/改良を行っているMOD
(https://github.com/Snow1226/CameraPlus)。カメラ動かせたりするよ。
※5:それはそれで何かよくない気がするだけ。私にもわからん。
※6:この手法だとモーションはキャプチャーしてないんだよなぁ。
※7:仕様の隙を突くような使い方してほんとごめんなさい。
※8:通常通りってなんだろう。哲学的ですね!