見出し画像

UnityだけでBlendShapeを削除,整理,合成をしよう


UnityでBlendShapeを整理したくない…?


BlendShapeを追加,削除,リネームとかしたいと思ったことはありませんか?
僕の場合はFaceTracking用のBlendShape調整中の時に必要になるんですが、しかし調べると「Blenderで作業しよう!」みたいな話が多い…。

ARKit用いたperfectSyncでは、BlendShapeを52個新規登録する必要がある。
Blender使いなよって意見はそれはそうなんだけど…。

確かに3DモデルをUnityだけでどうにかしようとするのはVRChatterの悪いところなんだけど、それでもUnityでBlendShapeいじります。

UnityだけでBlendShapeを編集できるツール「BlendShapeEditor」


ということで、今回はUnityだけでBlendShapeを変更できるツール「BlendShapeEditor」を使っていきます。
シンプルで使いやすいです。

実際に使ってみる


一つ一つが非常に強力な機能なので、順を追って解説していきます。
まずは上部メニューを見ていきましょう。

① SkinnedMeshRendrerに編集したいメッシュを入れる。(InspectorにあるBodyとかHairですね)
② モードを選ぶ。

モードには、それぞれSort,Blend,Separateの合計3つがあります。順を追って見てみましょう!

Sortタブ - BlendShapeの管理画面です


Soetタブでは、BlendShapeの並び替え,名前変更,削除を行える機能です。

① 名前を変更できます。順番を入れ替えも可能。
② BlendShapeの削除が行えます。
③ Applyを押して編集確定します。

これだけでも便利なのですが、新しくBlendShapeを作る機能も用意されています。それがBlendです。

Blendタブ - 新しいBlendShapeを作成しよう


既存のBlendShapeをベースにして、新しいBlendShapeを作成できる非常に強力な機能です。

使い方は、

① BlendShapeを選んで、お好みのウェイトを入力します。複数選択可。
② 新しいBlendShapeの名前を決める。
③ どれかを押す

これで既存を元に新しいBlendShapeが追加されます。

③の各ボタンを押すとどう変化するのか、検証gifと一緒に詳しく説明します。

Blendタブがどういう動きをするのか見てみよう


[まばたき]と[vrc.v_aa]の2つを100%にした状態。目を閉じ口を開けている。
この2つのBlendShapeを変換することで動作の違いを見ていく。

まず、ボタンの違いを確認するために、検証用の表情をBlendShapeEditorに登録しました。上記の画像の通りです。
今回は[まばたき][vrc.v_aa](以下略[aa])の二つを100%にしたBlendShapeを選択しました。
この状態で、③のボタンを押して生成されたBlendShapeを比較していきます。動作は以下の通りでした。

Blendモード
複数のBlendShapeを一つにまとめて新規作成してくれる。シンプル。
Inverseモード
マイナス100%のBlendShapeが生成される。
胸を逆に潰したいといった場合に使えそう。
Connectモード
リストを上から順番で変化するBlendShapeが生成されている。
今回は[まばたき]→[aa]の順に設定されているため、
 0% [まばたき]0% [aa]0% 
50% [まばたき]100% [aa]0%
100% [まばたき]0% [aa]100%
と切り替わるBlendShapeが生成されているのが確認できる。
一つのBlendShapeで複数の動作をしたい時に使えそうです。
Blend & Connectモード
リストを上から乗算で変化するBlendShapeが生成されている。
 0% [まばたき]0% [aa]0% 
50% [まばたき]100% [aa]0%
100% [まばたき]100% [aa]100%
と最終的に全てが結合されたBlendShapeが生成されているのがわかる。
徐々に変化していくアニメーションみたいになってますね。
だんだんと照れていく…みたいなBlendShapeができるかもしれない。
Apply Base Shapeモード
これは設定したBlendShapeをデフォルト表情にするもの。
今回は[まばたき][aa]がデフォルト表情として設定されているのがわかる。
そして、そのデフォルトを元に戻すBlendShapeが新規作成される。
デフォルト表情を変更したい場合に使用する。

最後に今一度使用シーンをまとめると、

  • Blend BlendShapeを一つにまとめたい時に使う。

  • Inverse 真逆に動くBlendShapeを作りたい時に使う。

  • Connect 別々のBlendShapeを1つのまとめて順々に再生したい時に。

  • Blend & Connect 別々のBlendShapeを乗算で再生したい時に。

  • Apply Base Shape デフォルト表情を変更したい時に。

といった感じ。便利!

【Tips】BlendShapeを選択する場面で縦に長すぎて選ぶのが大変な場合
あらかじめBlendShape名称を確認しておき、選択画面で「blink」なら「b」といったように頭文字を直接文字入力をすると当該のBlendShapeまで飛ぶことができる。日本語には対応していない。

Separateタブ - BlendShapeをX軸で左右分割できる


Separateタブでは、1つのBlendShapeを左右別々に自動作成してくれる機能。

① BLendShapeを選択する。
② 境界部分のぼかし設定(後述)する。
③ ボタンを押す

すると、左右に分割されたBlendShape生成されます。

Separateタブがどういう動きをするのか見てみよう


これはまばたきのBlendShape。両目同時に動きます。
この両方同時に動くまばたきを今から左右に分割します。
[まばたき]を選択して、このままSeparateを押します。
まばたきがL/Rに分かれたBlendShapeが自動追加されました!

アバターによっては左右分かれてないBlendShapeがありますので、そういう時に間違いなくとても便利ですね!

次に、先ほど後述するとした「SmoothRange」の動きを確認してみます。

[aa]というBlendShapeです。
口ですが、これも左右に分けてもらいます。
できました!ですが口がぶった切られてる…!
SmoothRangeは0.001でした。変更しようと思います。
次はSmoothRangeを0.01に設定して生成しました。
すると、分割部分がなめらかになっています。
左右を100%にするとキレイに口を開きます。

Separateタブの使い方はいかがでしたか?
X軸で左右にBlendShapeを分けることができるのは、もうハイテクの極みのような感じがします。

【余談】BlendShape限界突破をしてみる


便利なツールですが、BlendShape限界突破できるかどうか気になります。
実際にやってみます。

胸を大きくするなら桔梗ということで用意しました。
胸を大きくするBreasts_bigをがあります。
同じBrendShapeを重ねて選択します。
このままBlendボタンを押してみましょう。
できた限界突破…!
Apply Base Shapeボタンを押せば、
限界突破したサイズをデフォルトサイズとして登録することもできます。
100%にすると初期サイズに戻るBlendShapeが自動生成されます。

メッシュ保存先


メッシュは新規作成される。元に戻す際などに参照できる。

作成されたメッシュはAssets > BodyMorphToolの中に自動的に作成されます。作業を途中まで巻き戻す際などに参照しよう。

本ページに登場してる3Dモデル

VRCDeveloperTool でもBlendShapeの調整はできますが、今回はBlendShapeEditorの説明をさせていただきました。

もしこの記事が役に立ったらいいねボタンで反応してくれると嬉しいです。(Noteに未登録でもできるらしいです。)

いいなと思ったら応援しよう!