ビログ

自作ゲームやツールの紹介、VRデバイスやVRゲームのレビュー、VRChatプレイヤー向けのUnity講座などを書いています。

VRChatに食べ物オブジェクトを持ち込み食べる(アニメーションオーバーライド解説)

f:id:bironist:20180819195411p:plain
VRChatのアニメーションオーバーライド機能を使い、食べ物オブジェクト持ち込み食べる方法チュートリアル

はじめに

この記事はVRCSDK2を対象に書かれています。現在はVRCSDK3が標準になっておりSDK2はメンテナンスでしか使用しないことが推奨されています。
VRChat内で食べ物出して食べたり食べさせたりしたくないですか?
食べ物が置いてあるワールドもあるけど、どこでも食べたいのでアバターに仕込むことにしました。
というわけで下記の条件で食材を選定。

  • 握れて、かじって減っていく表現をしたいのでスティック状がよい
  • 見た目でそれがなにかすぐわかるほうがよい
  • DynamicBoneで動きを表現したいのでカタイものより柔らかいものがよい

というわけでちくわ作ることにしました。
モデリングしてテクスチャ描いてボーン入れてかじって減った状態のシェイプキーを入れてモデルは完成!

f:id:bironist:20180814175200p:plain

左からちくわ、一口かじったちくわ、二口かじったちくわです。
モデル作成の解説は優れた情報がたくさん公開されているので、自作する方はググってみてください。ぼくもググりまくって先人たちの解説を参考に作りました。アバターを作るのに比べればずっと簡単なので初モデリングチャレンジにVRChatに持ち込む追加オブジェクトを作るというのはありかと思います。
この記事はこのちくわをモデルにもたせて食べるまでを解説しますが、もたせるものがなんであれやり方は同じなので、他のモデルを使う場合はちくわの部分を適当に読み替えてください。
なお、このちくわモデルはBOOTHで100円で販売もしています。(宣伝)

3Dモデル「ちくわ」 - bironist - BOOTH(同人誌通販・ダウンロード)

f:id:bironist:20180819012447p:plain

余談だけど、この画像はスーパーのチラシっぽくしようと思って作ったのだが情報盛りすぎて「ぽさ」がうまく出なかった。

アバターにちくわオブジェクトをもたせる

ちくわをもたせたいアバターを開きます。
今回はバーチャルのじゃロリ狐娘Youtuberおじさんことねこますさんのモデル「みここ」に持たせたいと思います。
アバターとしてのセットアップは完了済みの状態から解説していきます。
一応簡単に説明するとけもみみおーこく国営放送 公式WEBからfbxモデルをダウンロードしてunitypackageをImport、VRChatSDKもImportしてHierarchyにMikokoモデルを登録してAdd ComponentでVRC_Avator Descriptorをアタッチするだけです。
詳しくはアバターの作成 - VRchat 日本wikiなんかを見るとわかるかと思います。

オブジェクトをHierarchyに追加する

f:id:bironist:20180816200855p:plain食べ物オブジェクトをProjectタブにD&Dして登録しよう。
上記のちくわモデルを購入された方は、chikuwa.unitypackageをImportすればおkです。その後モデルをHierarchyウィンドウにD&D。アバターの足元にちくわが現れました。繰り返しになりますが、以後ちくわを前提に解説しますが、別に他のオブジェクトでも一緒なので適当に読み替えてください。
また、ImportしたちくわのシェーダーはUnlit/Textureになっているので、アバターに合わせて設定しなおしてください。

オブジェクトの位置をあわせる

f:id:bironist:20180816201514p:plain

適当に移動してもたせる場所、今回の場合は右手に持たせたいので右手に移動していきます。ちくわモデルは下側が根本でかじったときは上から減っていくので向きに注意。

f:id:bironist:20180816201644p:plain

位置、回転、サイズなど右手にもっていそうな場所に合わせていきます。普通の人間アバターならサイズ0.7くらいがちょうどいいかと思います。(現実世界のちくわを考えるとデカすぎるけど)
さて、一見このままでもいい感じの場所に持っていそうな気がしますが、まだちくわはアバターの外にいるので、ちゃんと手の中に入れて手と一緒に動くようにします。

f:id:bironist:20180816202044p:plain
Hierarchyのmikokoツリーを開いていって、chikuwaをHand.Rの中に入れてあげます。
これだけでもう、VRChatの世界にちくわを持っていけます。ただ、この状態だと常にちくわを持ち歩くおかしな人、しかもどんな手の形をしていても手のひらにちくわが張り付いている異常事態になってしまうので、特定のハンドサインをしたときにちくわを握るようにしていきます。

オブジェクトを表示させるアニメーションを作成する

アニメーションファイルを作成するためにちくわを持ったアバターを複製します。Hierarchyのみここモデルを選択肢、Ctrl+Dを押します。

f:id:bironist:20180817192037p:plain
コピーされてMikoko(1)が現れます、わかりやすいように適当に名前を変えておくといいかも。
f:id:bironist:20180817192216p:plain
続いてアニメーションファイルを作ります。ProjectタブのCreateボタンをおしてAnimationをクリックし、適当な名前をつけます。ちくわを握ってる手の形を作りたいので、「ChikuwaHand」とでもしておきましょう。
上記のちくわモデルをご購入された方は、作らなくてもすでにちくわを握ってるっぽい手の形をつくってあるAnimationファイルがChikuwaHandとして同梱されているので、そちらを使うと楽ちんです。

f:id:bironist:20180817195717p:plain
そうして作った(もしくは同梱の)ChikuwaHandを、Mikoko(anime)の上にD&Dします。ついでにアバターのMikokoと、アニメーション作成用のMikoko(anime)が重なってて見づらいので移動しときましょう。

f:id:bironist:20180817195945p:plain
そして上のメニューバーからWindow→Animationを選択し、Animationウィンドウを開きます。このときHierarchyウィンドウではMikoko(anime)が選択されている状態にしておこう。

f:id:bironist:20180817200638p:plain
そしてちくわを握ってるぽい手の形をつくっていきます。Right Hand.ほにゃららの項目を追加していきます。ちくわモデルを購入して上の工程で同梱のChikuwaHandを登録した人は、すでに必要な項目は追加済みでしかも手も握った形になっているのでこの作業はスルーできます。
登録が終わったら左上の赤い●を押してみよう。

f:id:bironist:20180817231247p:plain
みここモデルが膝に負担をかけそうな中腰体勢になるが正常な動作なので気にしないで大丈夫。この状態で各指の形を編集してちくわを握ってる的な形にしていこう。ちくわモデル同梱のChikuwaHandを導入した場合は大体すでに握った形になっているはずだけど、モデルやちくわの位置・サイズなどでしっくりこない場合もあると思うので調整しよう。

f:id:bironist:20180817232259p:plain
いい感じにちくわハンドが作れたら、ちくわを表示する動作を入れていきます。Add Propertyをクリックし、chikuwaを入れている場所までツリーを開いていき、Is Activeの+をクリックする。

f:id:bironist:20180817232613p:plain
そして0:00の◆を全部選択状態にして(Ctrl押しながらポチポチしたり範囲選択したり)Ctrl+Cでコピーし、0:01のところにCtrl+Vで貼り付ける。
以上でちくわを持つアニメーション作成は完了。

食べた状態のアニメーションを作る

先程作ったChikuwaHandアニメーションはすでにちくわを握った手と、ちくわを取り出す動きが登録されているので、それを流用すれば簡単に作れます。

f:id:bironist:20180817233524p:plain
ChikuwaHandを選択してCtrl+Dを押して複製して・・・

f:id:bironist:20180817233626p:plain
わかりやすいようにChikuwaHitokuchiにリネーム。さきほどChikuwaHandでやったように、ChikuwaHitokuchiをMikoko(anime)にD&Dしてアニメーションファイルを登録しておきます。

f:id:bironist:20180817233849p:plain
そしてAnimationウィンドウを開き、左上のドロップダウンからChikuwaHitokuchiを開きます。

f:id:bironist:20180817234109p:plain
Add Propertyを押して、ちくわのBlend Shapeを探して、hitokuchiキーとfutakuchiキー両方共登録しておきます。

f:id:bironist:20180817234357p:plain
今作っているのは一口目なので、hitokuchiキーだけ100を入力、futakuchiキーは0にしておきましょう。その後ChikuwaHandを作ったときのように、0.00を0.01にコピペしておきます。これでChikuwaHitokuchiアニメーションは完成。

f:id:bironist:20180817234535p:plain
さきほどChikuwaHandをCtrl+Dで複製してChikuwaHitokuchiを作ったように、今度はChikuwaHitokuchiを複製してChikuwaFutakuchiに改名しておきます。あとは一口目を作ったときと同じです。

f:id:bironist:20180817234804p:plain

ChikuwaFutakuchiをMikoko(anime)にD&DしてAnimationウィンドウでChikuwaFutakuchiを開いて、今度はhitokuchiキーは0、futakuchiキーは100にしておきます。
これで必要な3つのアニメーションファイルの作成ができました!

カスタムオーバーライドを作成する

f:id:bironist:20180817234958p:plain
ProjectタブからVRCSDK→Examples→Sample Assets→Animationと開いていってCustomOverrideEmptyを選択し、Ctrl+Dで複製し、CustomOverrideChikuwaとでも名付けておきます。その後CustomOverrideChikuwaはchikuwaフォルダなどに移動しておきましょう。

f:id:bironist:20180817235243p:plain
CustomOverrideChikuwaをクリックすると、Inspectorタブで開くので、ChikuwaHand,ChikuwaHitokuchi,ChikuwaFutakuchiの3つのアニメーションを割り当てたいアニメーションに登録します。

f:id:bironist:20180819001014p:plain

ぼくはこんな感じに設定しています。Oculus Touchだと中指を握るとちくわを持ち、そのまま親指でボタンやスティックにタッチするとひとくち食べ、続いて人差し指でトリガーを握ると二口、その状態で手を離したり親指を上げれば消えるという一連の動作がスムーズにできるのでこうしてます。環境や使用方法に合わせて使いやすいところに登録するといいかと思います。

作成したカスタムオーバーライドをアバターに登録する

HierarchyウィンドウからMikokoを選択します。アバターとしてアップロードするほうのモデルです。

f:id:bironist:20180819001454p:plain

そこのVRC_Avator DescriptorのCustom Standing AnimsとCustom Sitting Animsに作成したCustomOverrideChikuwaを登録します。

f:id:bironist:20180819001932p:plain
この登録したAnimationでちくわの出現を管理するようにしたので、最初からちくわが表示されていたら意味がありません。なのでMikoko内のchikuwaはチェックを外して表示されないようにします。
これでちくわをもって食べることのできるアバターは完成!
アップロードすればVRChatで使えます。

DynamicBoneの設定をする(持ってる人のみ)

ちくわを食べるまでなら上の項目まで完了ですが、DynamicBoneを持っているならちくわをプルプルしたり持っていないほうの手でペシペシしたりできるようになります。その設定をしていきましょう。

ちくわにDynamic Boneをアタッチする

HierarchyウィンドウのMikokoを開いていきchikuwaを探し選択状態にしたあと、InspectorウィンドウのAdd Componentを押しDynamic Bone→Dynamic BoneとクリックしてDynamic Boneを追加します。
f:id:bironist:20180819004900p:plain
そして各パラメータをこのように設定します。RootはBoneではなくBoon.001にしてください。もちろん自分好みの設定でもかまわないのですが、ちくわは食べたあとの形状をシェイプキーによりちくわの根本に隠すことで表現している都合上、激しく揺れる設定にするとかじった後のちくわがはみ出て見えてしまうことがありますのでご注意ください。

ちくわをペチペチできるようにする

左手でちくわをペチペチしてプルプル震えると楽しいですね。

f:id:bironist:20180819011355p:plain
左手にDynamicBoneColliderをアタッチして触りたい位置に円がくるようにRadiusやCenterを調整します。大体こんな感じでいいと思いますがお好みで調整してください。大きく上にハミ出てるじゃないかと思うかもしれませんが、基本触るのは手のひらになるので手の甲側にハミでても案外気にならなかったりします。

f:id:bironist:20180820025653p:plain
そしてちくわ側のDynamicBoneのRadiusを0.02くらいに設定してf:id:bironist:20180819015131p:plain
CollidersのSizeを1にして、Element 0に先程DynamicBoneColliderを入れた左手を登録します。これで左手とちくわの当たり判定が生まれるので、ペシペシできるようになります。

完成

完成です。あとはアップロードすればどこのワールドでもおもむろにちくわを取り出して食べたり、人に食べさせたり、プルプルさせたりペシペシしたりできます。やったね。
ここまでの設定をすべて終わらせるとこんな感じになります。(ちくわ販売開始のときの動画ツイート)


以上ですべて完了です、おつかれさまでした。