バックアップ:ブロマガ たんさま!:VRC用にブレンドシェイプの名前と順番を編集

※この記事は2019-06-29 01:15に投稿された記事のバックアップです。

転載時注釈:
当時VRCはSDK2しか存在していませんでした。そのためアバター内のブレンドシェイプの一部が自動割り当てされる仕様でした。これに対してSoftimage、Mayaなど一部のツールは、ブレンドシェイプの順序、名前をじゅうぶんにコントロールすることが難しいという事情がありました。
この記事はそれに対応するための方策を検討したものです。

-----

さて、相当に久々の更新。
今回は、FBXデータ内の、ブレンドシェイプの名前と順番について。
自分の備忘録も兼ねて。

●VRC用

最近は、専らVRC用のアバターを作って遊んでいるのだけども。
VRC用アバターは、基本的に頂点モーフであるブレンドシェイプを使い、リップシンク、自動まばたき、その他の表情を使うことができるんだけどね。

で、その作り方はというと、MMDの頂点モーフとまずかわらない。
僕はメタセコイア4を主に使っているので、メタセコイア4上でモーフとして普通に作成して、それをFBXフォーマットに書き出し、Unityに持ち込んで設定する。

このとき、メタセコイアは「モーフ」と呼ぶけど、Unityは「BlendShape」と呼ぶ。
モーフと呼ぶかブレンドシェイプと呼ぶかは、この際、単にソフトウエアの中の呼び方、つまり方言に過ぎない、と考えちゃおう。
ややこしくなるので、以降は「ブレンドシェイプ」と名称を統一するよ。

●VRCが決めているルール

VRC側はアバターのデータの中にある『決められた順序・名称』のブレンドシェイプを自動制御する。これが違っていると、全く制御できないんだな。

MMDでも、モーフはモーションデータ中で名称で一致するものに自動割り当てされるようにできてるので、それと同じように考えればいいかもしれない。
ただし更に厳しいのは、順番も守らないといけないってこと。

これは、VRCで使う基本的なブレンドシェイプを示すショット。

画像1

自作アバター(偽リーチャ隊長)の奴なんだけど、基本的なもののみしか作っていない。
最低限必要なもの」くらいに思ってもらえればいいかなと。

上の4つは、自動まばたきと自動視線コントロールに使われるもので、そのほかは全てリップシンクに使う。

リップシンクは、実は名前も順番も、あとでVRCSDKで設定するときに、割り当てを手動でやるから、別に変わってても問題は無いんだけどね。

だけど、上の4つだけは、絶対にこの順序でないといけない。

※実際にどんな表情なのかは、いろんな方が記録されているTipsか、VRCSDKに含まれているチュートリアルアバターでも確認できるよ。

画像2

●名前と順番、これが意外とクセモノ

これらを踏まえて、実際にアバターを製作していくわけだけど、なんらかの理由で「ブレンドシェイプの順序が意図したものにできない」とか、「名前が勝手に変わってしまう」なんてことが発生する。

具体的には
・FBXに出せたんだけど、順番が違ってたとか、
・文字化けとか別の名前に置き換えられてしまい、どれがどれだかわかんない!

ソフトの仕様によるものなんだけど、これが意外とダメなんだ。
例えばMayaでは、ブレンドシェイプ名称に日本語を扱うことができないし、FBXエクスポート時に名称が<大分類_小分類>みたいな命名法則になって出てくる。
例えばSoftImageでは、ブレンドシェイプの順序をコントロールすることができない。

FBXファイルを扱えるソフトでも、内部ではデータの持ち方を変えてしまうから、うまくコントロールができず、「PMDEに比べて融通が利かないなあ」って思う。


●Unityで編集してしまうという手段

そんなこんなで困っていたところ、Unity上でブレンドシェイプを編集することができるツールが、UnityJapanから出ていることがわかった。
それがこの『BlendShapeBuilder』だ。

https://github.com/unity3d-jp/BlendShapeBuilder

だけどこれだけでは、ブレンドシェイプ自体を作成・編集することはできても、名称と順序を自在にコントロールすることはできないわけで…
そこで嘆いていたところ、Furiaさんがばっちり素晴らしいツールを用意してくれた!やったね!

画像3

これらのおかげで、ようやくFBX内のブレンドシェイプの名称と順序を任意にコントロールすることが可能になった!

●では、その効能を実際に見てみよう!

(ここだけ政宗一成のナレーションで脳内再生)

今回はコンセプトとして「FBXファイルを読み込んで、編集して、FBXファイルを書き出す」という、あたかもPMDEみたいな使い方をやってみることにするよ。

そのために、Unityは2018を使い、無料アセットの「FBXexporter」をあとで使いFBXファイルを書き出すことにする…けど、それはここでは割愛しようかな。

まあそのへんは各自の判断でご自由に。


1.まずはUnityに、上記で紹介したツールを入れよう。
BlendShapeBuilderのほうは、入れ方がGitのサイトに入ってる。
Furiaさんのツールのほうは、スクリプトデータ単体なので、これどうやって入れたかな?ちょっと忘れたけど、たぶんスクリプトエディタ立ち上げてコピペしたとおもう。。。


2.Unityの準備が整ったら、FBXデータを入れて、ヒエラルキーにドラッグ。
そんで、ブレンドシェイプを入れてあるメッシュを選択。

画像4

3.その状態で「Window」→「Blend Shape Inspector」

画像5

4.そうすると、編集用ウインドウが立ち上がるので、ブレンドシェイプの名前を弄れたり、順番を弄れたりできるぞ!


名前を変えたら「Update」で反映される。
順番を変えたら「Extract」で反映される。

画像6

画像7

●まあかんたん!

というわけで、できたよ!
例えばこれでヒエラルキーにあるモデルを、Export to FBXしてしまえば、編集済みのFBXデータを得ることができるわけですよ。


やったね!

この記事が気に入ったらサポートをしてみませんか?