EMG
ようやく複数のスプライトとアニメを持つフォーマットについて一定の区切りがついた
demo
このGIF画像はプレビューで、1枚のテクスチャ画像とJsonファイルで、バラバラの素材ファイルとして扱うことができる
テクスチャファイルを参照している
これらはUnityなどのエンジンではインポートすると個別の素材として扱うことができる
EMGの目的
アセットの管理
アセットは何が最新で、何がどこに入っているのか?ということがわからなくなることはしょっちゅうだと思う
またプレビューファイルを探すのも何を探していたのか忘れてしまうことがある
アニメーションGIFやプレビューの動画ではわりと圧縮される関係で本来の雰囲気と変わってしまうことがある
ゲームでは膨大なアセットをそれぞれで管理することが必要だが、EMGではEMGのプロジェクトファイルを更新した出力をpushするだけで最新版に差し替えることができ、エンジニア、デザイナともに負担が減る
簡易的なアバターフォーマットとして
アバターフォーマットとして使用する場合は、これまでは全身の差分などで、大きなファイルを幾つもパラパラアニメのように切り替えるなどの運用が多かったと思う
YMM4などではPSDを読み込むことで差分の設定などが出来たが専用フォーマットになりがちであった
EMGはPSDを読み込んだ座標ファイルのjsonと、一枚のテクスチャファイルなので、PSDファイルを渡したくない場合などにも容易にアバターデータをEMGファイルとして共有できる
(これまでは)アバターへの新しいギミックを仕込むにも元データの編集が必要であったが、後でアクセサリファイルなどを追加したい場合、差分を読み込んで一緒にパッキングできるため、手離れが良い
ただ、注意することはPSDの機能を最低限使えるようにしているだけなので、マスクや描画モードについてはまだこれから
高品質な動画ファイルの代替として
テクスチャファイルと座標データのみの保存なので、高品質なデータでレンダリングが可能
容量だけで比較すると、透過動画データを共有する場合と比べて、容量は何千分の1で済む
ただし、レンダリングコストは加味していないので、あくまで中間データとしての扱いではある
フォーマット自体は定義のみ
以下がEMGのフォーマットの定義
https://pxrllc.github.io/emg/spec/
詳しいことは別のエントリで書くが、仕様を公開しているので好きに実装してくれると嬉しい
UnityやGodotについてインポーターを準備している
冒頭でも少し触れたが、そのまま読み込むとまとまったアセットとして素材を使用できるインポーターを準備している
Githubにはあるが、少し対応が甘いため待ってほしい
これから
感想
色々あって、約1年半ほどかかった
ようやくかなり満足の行く仕様になったと感じている
本当はYMM4などのゆっくり動画などのワークフローにも影響を与えられるようなことを考えていたが、エコシステムが出来上がってしまっているし、UIを改めて考えるのが難しいので一旦ペンディング
次に
どこかのプロダクトにEMGを試験的に導入してもらえるようにしたいと考えている
また、まだ結構Editorが中途半端なので、改善をしたい
リファレンスを見てもらうと、仕様が複雑すぎると感じるかも知れないが、いってみればTexturePackerでしかない
簡易なemgを生成するpackerはこちら
https://pxrllc.github.io/emg/packer/
viewerと併せてよければ遊んでほしい
https://pxrllc.github.io/emg/
次はEMGの仕様を細々と書いていこうと思うが、基本的にはspecに書かれているものを解説していこうと思う


