Contents
Alembicとは
Alembicとは、3Dモデルのファイル形式の一つです。大きな特徴として、アニメーションの結果をジオメトリーにベイクすることで、アプリケーションに依存しないファイルの受け渡しを可能にしています。
このほかにも、メッシュ構造の変化をベイクすることができるため、ボーンアニメーションだと表現が難しい形状変化にも対応しています。
Alembicのメリット
曲線的なジオメトリーの変化をベイクできる
Alembicモデルの最大の特徴は、動きを持ったシェイプキーを使えるという点です。
普通のシェイプキーをUnityに持ち込んだ場合、その形状変化は線形になります。線形になるということをもう少し丁寧に説明すると、頂点と頂点が直線的に移動するということです。このため、シェイプキーは移動範囲の小さい形状変化や変化スピードが速いものに使われることがほとんどとなっています。
一方でAlembicの形状変化は、アニメーションを頂点キャッシュとしてベイクするため、まるでボーンを使ったアニメーションのようにジオメトリー形状を変化させることができます。
プリベイクで高品質
形状変化をプリベイクするため、シミュレーションに準拠した高品質な動きを表現することができます。映像系のソフトだとあまり恩恵を感じないかもしれませんが、ゲームのようなリアルタイムレンダリングを前提としたソフトだと、リアルタイムでは不可能なリアリティを表現できます。
先に上げたサンプルにある、布のようなオブジェクトだと、特にその効果を大きく感じることができるはずです。
Alembicのデメリット
ファイルが重たい
フレーム毎に頂点位置をベイクするわけですから、頂点数とフレーム数に比例してファイルサイズが大きくなっていきます。
動く頂点が少ないモデルであれば、ファイルサイズはそれほど大きくなりませんが、それでもfbxなどと比べるとファイルは大きくなる傾向にあります。
リアルタイムな動きができない
プリベイクとリアルタイムはトレードオフの関係にあると言えます。プリベイクによって、よりリアルな表現が可能な一方で、リアルタイムな表現は一切できなくなります。
このことから、使える場面は割と限られることに注意してください。
UnityにAlembicファイルをインポートする
UnityでAlembicファイルを扱うには、Package Managerより「Alembic」プラグインを導入する必要があります。
初心者でパッケージマネジャーの使い方がわからない方は、以下の記事を参考に、プラグインを導入しましょう。
シーン上のAlembicファイルを変形する
Alembicプラグインを導入すれば、自動的にAlembicファイルはシーンに配置できるようになります。普通のオブジェクトファイルと同様にシーンに配置してください。
Alembicファイルの形状を変更するには、インスペクターからTimeをコントロールします。
また、直上にあるTime Rangeを調整すれば、Alembicファイルが持つ変形情報をトリミングすることができます。
AlembicStreamPlayerにはアクセスできない
実はこのAlembicStreamPlayerクラスですが、スクリプトからアクセスすることができません。先述したTimeをコントロールするには、アニメーターもしくはタイムラインを経由する必要があります。
こうしたこともあって、Alembicファイルは多少扱いにくいことに注意してください。
まとめ
Alembicファイルは、fbxでは到底できない頂点アニメーションを可能にしてくれます。しかし、その代償としてファイルサイズがかなり大きくなっています。
映像制作ならともかく、ゲーム制作でAlembicファイルを取り入れるのは、すこし慎重になった方がいいでしょう。
とはいうものの、Alembicはプロシージャルモデリングと非常に相性がいいです。これから、多くのソフトはHoudiniのような非破壊系のモデリング手法を取り入れることでしょう。そうしたなかで、このAlembicファイルは大きな役割を担うことが予想されます。
まだ使ったことが無い方はぜひ、AlembicファイルをUnityで使ってみてはいかがでしょうか。
公式ドキュメント
https://docs.unity3d.com/Packages/com.unity.formats.alembic@1.0/manual/index.html