abxRenderLayer

CreativeCrash にも登録されている、RenderLayer保存&復元ツール。

使ってみたところ、確かにコネクションが砕けたRenderLayer設定もある程度復元してくれる模様。

レイヤー設定の保存も出来るが、出力するのはあくまでもObjectやShadingGroupの関連が主な情報。
RenderLayerで上書きしているShaderノード本体の方は出力しないので、レイヤーに関連する情報が全て保証されると思っていると痛い目に会いそう..

しかし、かなり頑張って作ってあるので、RenderLayerが壊れて困っている人には救世主になる..かも?
中身はMELで記述されているので、不満がある人は abxRenderLayerをベースに自分で手を加えてみるのもいいかもしれない。

’14/04/27現在。
v1.5が$20で、販売されています。

砕けたデータに復活の呪文を唱えたいだけなら、こういうコマンドもあるのですね。

レンダレイヤ 調査

Maya起動直後の状態。

defaultRenderLayer_justAfterBoot

レイヤーを作成。
ChannelEditor下の Renderタブにて。

renderLayer_UI_sample

レイヤーを追加すると、ノード構成はこんな感じ。
defaultRenderLayerには基本すべてのオブジェクトが属する。その他のLayerに対してのみ追加削除が行われ、その際にコネクションが作成される。
defaultRenderLayer_AddLocator1ToLayer1

Layer2を作成。
よく判らなくなってきたので、要所の接続を調べてみた。
※renderLayerManager->, ->defaultRenderingList1, ->locator1
defaultRenderLayer_addLayer2

renderLayerの並びを変えてみたが、コネクションは変化なし。
細かく調べると、Layerのアトリビュート(.do)の値が変化していた。defaultRenderLayer_changeLayerOrder

renderLayer_displayorder


masterLayer は、内部的には defaultRenderLayer という名称のノード。
renderLayerManager は、レンダレイヤ全体の管理ノード。renderLayer_simpleNodeConnection_sample

Layer1 にpSphere1を追加すると、こんな構成になる。
Layer1 → pSphere1 というコネクションが見える。
(メンバとしての、コネクションが作られている。
これは defaultRenderLayerの場合には存在せず、全てが属している扱い。)

renderLayer_simpleNodeConnection_sample2

さらに、pSphere1に phong1シェーダーを追加。
今度は pSphereShape1 → layer1 の入力が見える。

renderLayer_simpleNodeConnection_sample3

また、layer1 → phong1SG への入力が見える。

renderLayer_simpleNodeConnection_sample3b

lightlink の場合は、以下のような具合に。

renderLayer_default_lightLinkConnection_sample renderLayer_lightLinkConnection_sample

break lightlink を使ってライトの影響下からオブジェクトを外したら、
以下のようなコネクションが生成される。
(影響を受けない、ということを示す接続ができるパターンも存在する。ということで。)

renderLayer_lightLinkConnection_sample2

color アトリビュートを override した場合は、以下のような感じ。
phong1 → layer1, defaultRenderLayer にそれぞれ入力されているのが見える。
( phong1.color からの接続ができている。)renderLayer_simpleNodeConnection_sample4

renderLayer_simpleNodeConnection_sample4b

 

コネクションのことしか見ていないが、実際はアトリビュートの状態も見てsetAttr文を生成しないといけない..

プロジェクト設定 – 表示形式:タイムコードベース時の fps値取得 など

以下、覚え書き。

// AfterEffects CS5 で確認
// 表示形式: タイムコードベース時の fps値取得
{
var fps = 0;
switch(app.project.timecodeBaseType){
case TimecodeBaseType.FPS100:  fps = 100; break;
case TimecodeBaseType.FPS24:  fps = 24; break;
case TimecodeBaseType.FPS25:  fps = 25; break;
case TimecodeBaseType.FPS30:  fps = 30; break;
case TimecodeBaseType.FPS48:  fps = 48; break;
case TimecodeBaseType.FPS50:  fps = 50; break;
case TimecodeBaseType.FPS60:  fps = 60; break;
}
alert( fps );
}

//フィート+フレーム
{
var mm = 0;
switch(app.project.timecodeFilmType){
case TimecodeFilmType.MM16:  mm = 16; break;
case TimecodeFilmType.MM35:  mm = 35; break;
}
alert( mm );
}

//表示形式: タイムコードベース/フレーム/フィート+フレーム
{
var typename = “”;
switch(app.project.timecodeDisplayType){
case TimecodeDisplayType.FEET_AND_FRAMES:  typename = “Feet+Frames”; break;
case TimecodeDisplayType.FRAMES:  typename = “Frames”; break;
case TimecodeDisplayType.TIMECODE:  typename = “Timecode”; break;
}
alert( typename );
}

//開始フレーム番号
alert( app.project.displayStartFrame );

その後

CS6から”app.project.timecodeBaseType”とかなくなってた…今更そんな事知るとは…orz