[VRC向け]EmoteSwitchにAnimation Overrideを適応する
ー前置きー
最近いろいろなところを転々としていると、EmoteSwitchを使いこなす人が多く見え、「時代が進んだなー」と感じる事が多かったのですが、ある日「変形武器をEmoteSwitchで使いたい」という人達が何人かいました。
「変形ってAnimation Override使えばいけるんじゃね?」と気になって聞いてみると、「Animation Overrideをいじったことがない」と言う人も多くいて、「昔の知識はやはり難しいんだろうなあ」とか考えていました。実際難しいしね。出来る方が凄いと思う。
とりあえず口頭で説明しようとしても割かし長めになってしまうので新しく記事を書かせていただきます。もし詰まってる方がいたら「こんな記事もあるんだぜ」っておすすめする選択肢になると嬉しいです。
この記事は2020/05/04日時点、Unity 2018.4.20f1の頃の話をしている
ー本題ー
ーーーーーーーーーーーーーーーーーーーーーーーー
超最低限の必要なモノ
・入れたいアバター(今回は自分の愛用しているアバターである「シンシアちゃん」の改変後の姿を使用しています。シンシアちゃんはいいぞ。)
・変形機能付きのアクセサリー
・VRCSDK2 (3だと壊れる)
・EmoteSwitch (2018に移行したときにバージョン変わってます。URLからどうぞ)
・やる気
ーーーーーーーーーーーーーーーーーーーーーーーー
よろしくお願いします。
今回は「岬のプレハブ」さんの「のびのびおばけねこ」を使って記事を書きます。後述するBlendShapesの項目さえあればほぼ同じように設定できるはずです。URLはこちら。
これを配置しました。で、注目してほしいのはこれ。
「Skinned Mesh Renderer」の中に「BlendShapes」っていう文字があると、変形機構とかが付いてる場合があります。左側の▼マークを選択すると、変形できるパラメータが出てきます。
例えばこの傘の「longlong」を100にすると...
いいね
こんな感じにパラメータを弄って変形できる物があるって認識で大丈夫です。今回はこういうBlendShapesを持つアクセサリーを対象にして話を進めていきます。
いつも通り、持たせたい手に追従させていこう。今回は右手に持たせたいので、Armature→Hips→Spine→Chest→Shoulder.R→Upper Arm R→Lower Arm R→Hand Rに配置します。左手につけたい場合はLの方に配置してね
そこから上のタブ、「File、Edit、Assets..」と並んでる状態から、「EmoteSwitch」を押します。するとタブが開くので、
Avatarに大本のアバター(VRC Avatar Descprictorがついてるもの)を配置し、Prop Objectsにエモートスイッチ化したいものを配置します。先ほど手に配置したモノを選択してください。後はEmoteSwitchを入れる欄を1-2、3-4、5-6、7-8のいずれかから選んで、Set Emote Switchを押してください。
すると手にEmoteSwitch適応したよ!って名前付きで、中に「Joint」、「Toggle1」、「Object」が入っています。どうやらEmoteSwitchはこの「Object」を表示、非表示を切り替えてるみたいだね。実際、Objectをアクティブ化すると出てくるからね。
で、このまま設定してもいいんだけど、アニメーションを覚えさせるためにコピーを作ります。アバターを選択して「Ctrl+D」で複製できます。複製元は非表示にしておくといいと思います。
(余談だけど、複製しなくても出来るっちゃ出来ます。が、プレイする時に変なポーズになります。VRCでも動作変わるっぽい?ので、あまりおすすめしません。
↑ このポーズやね)
さてここから、アニメーションに仕込む時に「既存のアニメーションに入れ込む」か、「新しくアニメーションを作る」の好きな方を選ぶ事が出来ます。表情を変えずに変形させるか、表情を変えたまま変形させたいか、是非自分のしたい表現にしてみてね。
ーーーーーーーーーーーーーーーーーーーーーーーーー
「新しくアニメーションを作る」
Assets(画面下部)にて右クリックするとCreateって言うものがあって、いろいろなモノを新規で作れます。その中からAnimationを作成できます。
名前変えておくと後でわかりやすいかもしれない
これで新規アニメーションのひな形が完成です。
「既存のアニメーションに入れ込む」
そのアバターのAnimationファイルがあるフォルダから、ベースに使いたい表情を選択します。それだけです。
ーーーーーーーーーーーーーーーーーーーーーーーーー
で、仕込みたいアニメーションまたは新規アニメーションを作成したら、それを複製したアバターにドロップ&ドラッグしてください。
すると、そのアバターは「アニメーションを覚えさせる素体」になります。
次に上のWindowからAnimation、さらにその中からAnimationを選んでください。
するとタブが開くので、そこから「Add Property」を選択します。するとそのアバターの階層が表示されるので、Armatureから階層を開いていき、先ほどのEmote Switchの中まで開きます。
対象のアクセサリーの場所まで開くと、「Skinned Mesh Renderer」があると思います。その中から「Blend Shape」から、一番最初に行ったパラメータがあるはずです。それを選択してください。
右側に数値があるので(デフォルトだと0だと思う)、その数値を100にします。すると、右のメモリに四角マークが出ると思うので選択、「Ctrl+C」でコピーします。その後、上の0.00と表記されているところをスライドするとメモリの場所を変えれるので、すぐ隣に移動させます。
(2つメモリがないとうまくいかないらしい)
↑ こんな感じ
また、この作り方だとなんか1秒ぴったりで別のメモリがついてるようなのでそれを消しておきます。
右クリックから「Delete Key」で削除できます。
完成したら、Animationタブの三角マーク(▶)を押すと、実際に見れます。確認する時はEmoteSwitch内部のObjectをアクティブ化させておいてね。
おそらくこれで出来てると思います。ここまで出来たら複製した方を非表示にしておいてください。使わないなら削除でも大丈夫です。
最後に本体(コピー元)をアクティブにし、VRC Avatar Descripsterから使用されているアニメーションコントローラーを選択してください。
最後に表情に合わせた箇所に、先程調整したアニメーションを入れるとその表情の枠でアニメーションが適応されます。
これで設定は完了です。VRCにアップロードし、EmoteSwitchを起動後、設定した表情ボタンを押して動作を確認してみてください。
上手くいった方はお疲れ様でした。そうでない方はもう一度試してみてください。
今回はここまで書きました。参考になったなら嬉しいです。ありがとうございました。