バーチャル3Dクリエイター神部まゆみです(*^_^*)
この記事はunityでシェイプキー(ブレンドシェイプ)がない不具合に遭遇したので解決した備忘録です。
微妙に違う不具合だけど、unityでVRM1.0モデルのブレンドシェイプが動かないケースもあったので、その場合は↓を参照。
動作確認した最新の環境はblender4.2と4.5、unity2022.3.22とunity6000.2.7だけど、もっと前のバージョンでも発生していたのであまりバージョンは関係ないかもしれません。
不具合:blenderでシェイプキーを設定してunityに持っていったら、シェイプキー(ブレンドシェイプ)がない
↓これ親子関係なし、メッシュ一つだけのオブジェクトなんだけど、blenderで作ったシェイプキーがない…。


blenderではちゃんとシェイプキーが設定してあって動くんだけどなぁ。


というかスキンメッシュレンダラーがない
よく見たらスキンメッシュレンダラー自体がない…。


unityでシェイプキーはどこにある?
blenderではシェイプキー、unityではブレンドシェイプという名前なのだけど、正常に設定してあればスキンメッシュレンダラーのところに表示される。
↓はVRoidモデルのFaceメッシュだけど、正常ならばスキンメッシュレンダラーのBlendShapesのところにblenderで作ったシェイプキーが表示されます。


VRoidだとFaceはモデル名のプレハブ(↓画像だとMayumi)の下の階層にあります。たぶんどのモデルでも同じかな?


VRoidは通常ならFace,Body,Hairメッシュしかないけど、↑の画像のモデルはblenderでBodyを分割して分けてあります。
解決:勝手に追加されてたモディファイアを削除したらいけた
最初からあったのか不明だけど、↓勝手に追加されてたこの二つのモディファイアを削除したらいけた。
どちらか一方だけではダメで両方削除したらいけました。恐らく削除か適用をしておけば行けるのかな?たぶん。


サブディビジョンサーフェスと…頂点グループ関連のモディファイアかな?頂点グループの整理をしていたから、元から指定されてた頂点グループが消えたのかもしれない。
これでunityに持っていったらちゃんと表示されました。


そういえば、前も何度か同じような不具合に当たったことがあったような…?
その時もモディファイア削除して直ったことがあったっけな?
VRM関係のシェイプキーの場合、アドオンをバージョンアップすれば解決するかも
↓の記事でも書いたけど、以前VRoidモデルをblenderで編集してVRMエクスポート、その後unityに持っていったら、同じようにシェイプキーが全部なくなっていたことがあった。
でもその時はVRMのアドオンをバージョンアップしたら直ったので、VRM関係の場合はこれで直るかも。
VRMじゃなくても、blender関連のアドオンの不具合の可能性があるかもしれない。
アドオンのバージョンアップや、blenderのバージョンアップもしくはバージョンダウンで解決する可能性があるかも。
あとはVRMモデルの場合はUniVRMでUnityにインポートする場合が多いと思うけど、UniVRMのバージョンによる不具合もあるかな?
その場合も別のバージョンを入れてみると直る可能性があるかもしれません。
blenderでFBXエクスポートの場合:ジオメトリ ⇒ モディファイアーを適用 のチェックを外す
Umotion Proアセットを使うためにVRMをFBXに変換する必要があったんだけど、FBXエクスポート時に↓ここのチェックを外さないとFaceメッシュに設定してあった表情シェイプキーがすべて消滅していたΣ(゚Д゚)


「注:シェイプキーのエクスポートがおかしくなります」なんて物騒なことが書いてある割に、デフォルトでチェックがついているのはどうなんだ(^_^;)
これを外してエクスポートしたらちゃんとシェイプキーが使えました。
ここで躓く人多いかも?
しかし原因になる可能性の一つでしかないと思うので、別の要因だったらこれだけではダメかもしれません(^_^;)
追記:blenderでシェイプキーがミュートになっているとエクスポートされない可能性があるっぽい
何気なくVRM_Addon_for_BlenderのGithub Issueを見ていたら同様にシェイプキーがない不具合の人を見つけたんだけど。
バグ報告: Blender4.0以降でVRMモデルエクスポート時にシェイプキーが反映されない。 · Issue #1046 · saturday06/VRM-Addon-for-Blender
この人の場合はBlenderでシェイプキーをミュートにしていたことが原因だったようです。


こちらシェイプキーが反映されない原因は、添付いただいたデータのシェイプキーが全て「ミュート状態」になっていたのが原因でした。
そのため、ワークフローの変更を強いてしまう形となってしまい大変申し訳ないのですが、エクスポート前に全ての「ミュート状態」を解除お願いします。
前のバージョンのVRM_Addon_for_Blenderだとミュートでもエクスポートされてたようだけど、VRMの親仕様であるglTFの都合で変わったっぽい。
シェイプキーにミュートなんてあるんだと思ってBlender4.5で見てみたら、確かにチェックボックスありますね(^_^;)


でもシェイプキーをミュートにしたい状況ってあまり思いつかないから、よくわからずいじっちゃった感じかな?
まぁこれも原因の一つと言うことで。
追記終わり。
おわりに
案外簡単に解決して良かった。
しかしこれ何度かなった覚えがあるし、原因は複数あるかもしれない。
まぁまた同じ不具合が出たら追記します(;^_^A




