概要
Asset Publisher によるパブリッシュ処理は、プラグインによって細かくモジュール化されている。
デフォルトの処理の流れ
デフォルトの処理の流れは baseProject/conf/AssetPublisher.xml.default に記述されている。
たとえば、Maya でのアセットのパブリッシュは以下のように定義されている
<maya> <assetPublishEngines> <publishEngine name="JCGS.Asset.plugins.initAssetPublisher" /> <publishEngine name="JCGS.Asset.plugins.setAssetNodeProperty" /> <publishEngine name="JCGS.Asset.plugins.mkDir" /> <publishEngine name="JCGS.Asset.plugins.inputComment" /> <publishEngine name="JCGS.Asset.plugins.selectAssetNodes" /> <publishEngine name="JCGS.Asset.plugins.texturePublisher" /> <publishEngine name="JCGS.Asset.plugins.geomCachePublisher" /> <publishEngine name="JCGS.Asset.plugins.diskCachePublisher" /> <publishEngine name="JCGS.Asset.plugins.particleCachePublisher" /> <publishEngine name="JCGS.Asset.plugins.assetScenePublisher" /> <publishEngine name="JCGS.Asset.plugins.storeMetaData" /> <publishEngine name="JCGS.Asset.plugins.ignorePublishedElement" /> <publishEngine name="JCGS.Asset.plugins.checkTextureSize" /> </assetPublishEngines> </maya>
プラグインで使用される引数
assetManager : asset manager assetGroupPath : path of asset group assetInfo : asset info got from asset manager baseNode : base node to be published. this node indicates path like /assets/human/sato/satoHero/publish [optional arguments] revisionGroupPath : path of revision group rev : revision number destNode : destination node to be published. this node indicates path like /assets/human/sato/satoHero/publish/rig/renderHigh/rev001
※optional arguments となっているものは引数として渡されていればそれを使用して、渡されていなければプラグイン側で独自に用意する。
各プラグイン解説(abc順)
プラグインには、標準で以下の引数が渡される
※rev, assetInfo, destNode は initAssetPublisher プラグインにより生成される
destNode : destination node to be published. this node indicates path like /assets/human/sato/satoHero/publish/rig/renderHigh/rev001 assetGroupPath : path of asset group revisionGroupPath : path of revision group rev : revision name assetInfo : asset info got from asset manager
assetScenePublisher
checkTextureSize
preProcess で、パブリッシュする素材の一覧とパブリッシュ元、パブリッシュ先、サイズなどを表示し、更に素材ごとにパブリッシュする/しないを選択できるようにする
パブリッシュ元が同じノードが複数ある場合(複数のノードで同じパスが指定されているなど)は、表示上は一つの項目としてまとめられ、まとめてオン/オフができる。 素材を一まとめにするのが bindPublishElements() である。
copyToCurrent
パブリッシュしたファイルのうち、 revXXX 直下にあるファイルを リビジョン 0 としてリンクし、リビジョン 0 をアクティブなリビジョンにセットする。 通常使用する必要はないが、特定のディレクトリを常に自動更新したい場合に使用する。
diskCachePublisher
geomCachePublisher
ジオメトリキャッシュのパブリッシュをおこなう。対象は DCCTools.util.listupGeomcacheNodes() で取得されるノード。
ignorePublishedElement
preProcess で、既にパブリッシュされているものを再度パブリッシュしないようにする。ただし、同じアセットのものは通常通りパブリッシュを行う。
これは、同じアセット内にあるものはリビジョンが上がったり別の LOD になったりして再度パブリッシュが必要になることが多く、 さらにパブリッシュされたものを一まとめにしておく必要があるためである。
パブリッシュを行わないようにするためには、publishElement.active を False にする。
initAssetPublisher
パブリッシュに必要な変数の生成を行う
in : assetGroupPath : path of asset group revisionGroupPath : path of revision group out : rev : revision name destNode : destination node to be published. this node indicates path like /assets/human/sato/satoHero/publish/rig/renderHigh/rev001 assetInfo : asset info got from asset manager revisionGroup : revision group got from asset manager
inputComment
process で、コメント入力を行うためのダイアログを表示し、パブリッシュ時のコメントを取得する
mkDir
mrGIPublisher
※Maya 限定
mental ray の GI キャッシュをパブリッシュする。 パブリッシュ後のパスは絶対パスで指定される。
mrFGPublisher
※Maya 限定
mental ray の Final Gathering キャッシュをパブリッシュする。 パブリッシュ後のパスは絶対パスで指定される。
particleCachePublisher
reduceImageSequence
テンプレートをパブリッシュするときに、サンプルとして読み込んでおくファイルの数が多いと無駄な上にパブリッシュやテンプレート読み込み時に時間がかかるようになってしまう。そのような時に、フッテージの連番ファイルの数を制限する。
AssetPublisher.xml で
: : <publishEngine module="JCGS.Asset.plugins.texturePublisher" /> <publishEngine module="JCGS.Asset.plugins.reduceImageSequence" namePattern="\${footage\(".+"\)}" start="1" end="1" /> <!-- add here --> : :
こんな感じで記述すると使用できる。texturePublisher の後に入れる必要がある。
setAssetNodeProperty
process で、 assetNode の名前の変更や、各種アトリビュートのセットを行う
このときの名前の生成には Template Engine を使用して、projectInfo.nameTemplates.assetItem の設定を参照する
selectAssetNodes
storeMetaData
postProcess で、libAsset を通してパブリッシュ情報を登録する。
パブリッシュ処理としては、実質的には一番最後に処理が行われる。