見出し画像

FBXは多重ブレンドシェイプを受け付けない

ブレンドシェイプと言われたりモーフ(モーフィング)といわれたり、環境によって呼び方はさまざまですが、モデル形状を変えるデフォーマーの一種で、あるモデルを別のモデルの頂点位置情報を使って変形させるアレです。

各種デフォーマーは環境間で概ね互換性が無い一方、ブレンドシェイプはFBXで渡すことができます。DCCツールからFBXを出力してゲームエンジンに読み込んで、といったことが可能となっています。

ゲームエンジンなどでは、最終的にはそのモデルについた形状変形用のパラメータとして利用できればいいのですが、DCCツール上ではスタックベースであったりノードベースであったりを利用したデフォーマの多重掛けします。それによって、モデリングをプロシージャルに行なったりですとか、アニメーションでは複数のデフォーマを組み合わせて形状をミックスして絵作りの柔軟性を上げたりですとか、そういったことをします。

ブレンドシェイプにブレンドシェイプを挿す( x n階層)、なんていうこともままあるわけです。

試行:

画像1

そんなわけでこのような状況を作ってみました。ある形状をブレンドシェイプで転送した形状をブレンドシェイプで転送してます(?)
左から順にモーフターゲットとなっていて、一番右が最終メッシュです。
…これ単体ではシンプルすぎるので、どう便利だからこうするのかピンときづらいシチュエーションではありますが、そこはひとまず置いておいていただきたい。実際的には、多様なデフォーマーも絡ませたり骨アニメーションとSimされたメッシュをよしなに混ぜたり、部分的に形状修正するブレンドシェイプを別に設けたりetc etc... で、より複雑な構成になります。

これをFBXで出力し

画像2

読んでみると…

結果:

たとえばMaya上では、このようになります。

画像3

ちょっとわかりづらいですが、上図でいうところの中央のメッシュの情報だけが、最終メッシュに転送されるという流れになっています。それより先にあった形状(上の方に凸してた形状)は失われました。少し値を入れて形状を変形させていたとしても、反映されていません。

FBXは多重ブレンドシェイプを受け付けない

もしかしたらほかに方法があるのかもしれませんが、ざっと眺めた感じではFBX形式で多重ブレンドシェイプを保つ方法は見当たりませんでした。

映像用にリグを組んだキャラクターアセットなどは複雑にデフォーマを組んでいることはそう珍しくないと思います。

例えばそういうアセットをゲームエンジンに持っていこうというとき、「ブレンドシェイプならFBXで渡るはず」と思っていると、半分正解、半分誤解、みたいになってしまいます。そして最終メッシュの直前のブレンドシェイプしか来ないと気づかずに出力してしまうと、その背後にある多くのデータをうっかり失うことになります。ブレンドシェイプは(条件付きで)渡る、と心に留めていきましょう💦

この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
note.user.nickname || note.user.urlname

よければサポートいただけますと喜びます。

2
技術本を作るサークル、Circke Qtのksです。 BOOTHにて既刊お求めいただけます > https://circleqt.booth.pm  普段はフリーランスCG屋、テクニカルライター、講師業などしています。

こちらでもピックアップされています

CG
CG
  • 22本

CG制作とその周辺情報などの記事をこちらにまとめています。

コメントを投稿するには、 ログイン または 会員登録 をする必要があります。