概要
パブリッシュをおこなうときには条件が揃えば複数のパブリッシュタイプを一度に実行することができる仕組みがあります。
この機能を使用することで、たとえばモデルとシェーダを分けて管理するようにしていた場合にそれぞれ別々にパブリッシュするのではなく、二つを一度に処理することができます。 もちろんパブリッシュをした結果はそれぞれ別の場所に格納され、別々のリビジョンとして管理されます。これにより、パブリッシュを行う際の手間を減らしたりパブリッシュ忘れによるトラブルを避けることができます。
この機能は複数の種類のデータを一度にパブリッシュできる反面、設定を行う人にとっては中でどのような処理が行われているのかわかりづらいものでもあります。
本ページではこの動作について解説していきます。これから行う解説はプロファイルを既に読んでいる前提で進めていきます。
パブリッシュタイプの選択
一つだけを選択した場合
下図は Publisher で rig, lookdev, shaderLink の三種類のパブリッシュタイプを選択した例です。
この状態でパブリッシュを行うと、
- rig → publish/rig/RenderHigh/revXXX
の一か所にデータが格納されます。
複数選択した場合
下図は Publisher で rig, lookdev, shaderLink の三種類のパブリッシュタイプを選択した例です。
この状態でパブリッシュを行うと、
- rig → publish/rig/RenderHigh/revXXX
- lookdev → publish/lookdev/RenderHigh/revYYY
- shaderLink → publish/shaderLink/RenderHigh/revZZZ
の三か所にデータが格納されます。
内部処理
ここでは話を分かりやすくするためにシンプルにしたプロファイルを使用して解説をします。
この例では
- model
- rig
- lookdev
という三つのパブリッシュモードが存在し、
AssetPublisher.plugins.initAssetPublisher
AssetPublisher.plugins.texturePublisher
AssetPublisher.plugins.materialPublisher
AssetPublisher.plugins.assetScenePublisher
AssetPublisher.plugins.storeMetaData
の5つのプラグインが使用可能になっています。
一つだけを選択した場合
最初に簡単な例として、rig だけを選択した場合について解説します。
この状態で publish ボタンが押されると、プロファイルの中から使用するモードだけ選びだします。今回は rig の列だけが選ばれます。
更に、引数が空でない項目が選ばれます。
これで、実際に処理に使われるプラグインと各プラグインへの引数が決まります。あとは Plugin Architecture の仕様に沿って上から順に実行されていきます。
複数選択した場合
rig, lookdev の二種類のパブリッシュタイプを選択した場合を用います。
この状態で publish ボタンが押されると、プロファイルの中から使用するモードだけ選びだします。今回は rig と lookdev の列が選ばれます。
選ばれた二つの列をマージします。この時、横に並んでいる引数のうち空になっているものは無視され、空でないもの同士で矛盾が無ければその値が使用されます。
マージをした結果は下図のようになります。ここまでくると一つだけを選択した場合と同じ状態になるので上から順に実行するだけです。
マージ後の引数を注意深くみると、revisionGroupPath の値が異なっていることがわかります。これによりパブリッシュ先がプラグイン毎に変わります。