SyntaxHighlighter

2012年5月25日金曜日

ノード同士の連鎖についてメモ

連鎖 (concatenation) とは、特定の Nuke のノードをいくつか重ね掛けて、画像にトランスフォームや色調補正を行う時に、ノード同士の計算が連なって適用される挙動を指します。ノード同士が連鎖する時に、隣接するノード同士は各々のトランスフォーム操作を連鎖の列の最後尾のトランスフォームのノードに渡して、そこで全てのトランスフォームを一度に行います。
これは、ピクセルの再マッピングが一度のみ行われるため、画像の品質の向上に繋がります。
連鎖を成立させるために、連鎖するノード同士は隣接しなければなりません。
そのため、2 個の連鎖するノード同士 ( 例えば Transform ノード) の間に、連鎖しないノード ( 例えば Crop ノード) が挟まれた場合、連鎖は行われません。
また、ノードに互いに連鎖させるために、連鎖するノード同士は似たような操作を行うものでなければなりません。
例えば、トランスフォーム系のノードは他のトランスフォーム系のノードとしか連鎖しません。目安として、連鎖するノードは通常、色調補正系ノードか、またはトランスフォーム系のノードに所属します。
もし連鎖するノード同士に対して、1 以上でフィルタリング方式を使用している場合、連鎖の列で最後に指定されたフィルタリング方式が結果に適用されます。

http://www.nukepedia.com/written-tutorials/concatenation-of-transforms-in-nuke/

http://www.nukepedia.com/written-tutorials/10-tips-to-optimising-nuke-and-creating-efficient-workflows/

2012年5月23日水曜日

シーンファイルでdoLocalise


### doLocaliseAll

import nuke
import os
import sys

inScript = sys.argv[1]

nuke.scriptOpen( inScript )

rootNode = nuke.root()
readKnobList = []
nodeList = []
nodeList = nuke.allNodes(group=rootNode, recurseGroups=True)

for a in nodeList:
if a.Class()=='Read':
a['cached'].setValue(1)
a['cacheLocal'].setValue(0)

for n in nodeList:
readKnob = nuke.getReadFileKnob(n)
if readKnob != None:
if nuke.localisationEnabled(readKnob):
readKnobList.append(readKnob)

nuke.localiseFiles(readKnobList)
nuke.scriptSave( inScript )
print inScript

2012年5月21日月曜日

doLocalise


def doLocalise(localiseAll):
  rootNode = nuke.root()
  readKnobList = []
  nodeList = []
  if localiseAll:
    nodeList = nuke.allNodes(group=rootNode, recurseGroups=True)
  else:
    nodeList = nuke.selectedNodes()
    nodeList2 = []
    for node in nodeList:
      if node.Class() == 'Group':
        nodeList2 += nuke.allNodes(group=node, recurseGroups=True)
    nodeList += nodeList2
  for n in nodeList:
    readKnob = nuke.getReadFileKnob(n)
    if readKnob != None:
      if nuke.localisationEnabled(readKnob):
        readKnobList.append(readKnob)
  nuke.localiseFiles(readKnobList)

2012年5月16日水曜日

envの追加


import subprocess
env = os.environ.copy()
env['AAA'] = 'BBB'
subprocess.Popen('cmd', shell=True, env=env)

2012年5月14日月曜日

robocopyメモ


@title rcopyToX %1
@pause
@set yyyy=%date:~0,4%
@set yy=%date:~2,2%
@set mm=%date:~5,2%
@set dd=%date:~8,2%
@set tt=%time:~0,2%
@set ff=%time:~3,2%
@set bb=%time:~6,2%
@mkdir C:%homepath%\roboCopyLog\"%yy%%mm%%dd%"\


@rem /S サブディレクトリもコピーする。(空のものは除く)
@rem /E サブディレクトリもコピーする。(空のものも含む)
@rem /TS 転送元ファイルのタイムスタンプも表示します。
@rem /TEE LOG や /LOG+で指定したログファイルに加えて,コンソールにもログを表示します。
@rem /ETA ファイルコピーが完了する推定時間を表示します。
@rem /R:n コピーに失敗した時にリトライする回数を指定します。(デフォルトは1,000,000回です)
@rem /XD dir [dir] 指定した名前(パス名,ワイルドカード)のディレクトリをコピー対象から除外します。
@rem /XF file [file] 指定した名前(パス名,ワイルドカード)のファイルをコピー対象から除外します。
@rem /XO “Older” に分類されたファイルをコピー対象から除外します。
@rem /LOG+:file ログ出力を指定したファイルにリダイレクトします。ファイルが既に存在する場合には追加書き込みします。
@rem /NP (% copied)という進捗表示をしないようにします。
@rem /MIN:n n バイトより小さいサイズのファイルをコピー対象から除外します。


robocopy %1 X:%~pnx1 *.tif *.exr /S /TS /TEE /ETA /R:0 /MIN:1 /XD animation layout scenes textures afterEffect compo composite old tmp temp *ログ /XF log.txt Thumbs.db /XO /NP /LOG+:C:%homepath%\roboCopyLog\%yy%%mm%%dd%\log"_%tt%_%ff%_%bb%".txt
@pause

2012年5月4日金曜日

AEを複数同時に起動する

ショートカットに-Mを追記か下記コマンド
"C:\Program Files\Adobe\Adobe After Effects CS3\Support Files\AfterFX.exe" -M

AeExpressionメモ


コンポの名前を引っ張る
thisComp.name
レイヤーネームを引っ張る
thisComp.layer(index).name
コンポジションのフレームカウントを引っ張る
timeToCurrentFormat()
いっこ下のレイヤ参照
thisComp.layer(thisLayer, 1).transform.opacity

layer(otherLayer, relIndex)
otherLayer:基準とするレイヤー
relIndex: otherLayerとの相対関係番号。+2なら2つ下、-3なら3つ上のレイヤーを示す。

テキストレイヤパディング付きフレームカウント
t = time * 30 + 1 + "";
while (t.length<5) t = '0' + t;

テキストレイヤタイムコード
timeToTimecode(t = time + thisComp.displayStartTime, timecodeBase = 30, isDuration = false) 

2012年5月3日木曜日

windowsでProResQT


ffmpeg -i /path/to/file.mov -vcodec prores -profile NUMBER -an /path/to/output.mov


NUMBER
0:ProRes(Proxy)
1:ProRes(LT)
2:ProRes(Normal)
3:ProRes(HQ)

2012年5月2日水曜日

layerの文字列操作


layer = thisComp.layer(6).name;
compName = thisComp.name;
cp = "_compo_ ";
ext = layer.slice(-4);
duration = layer.match(/\d{4}-\d{4}/);
version = layer.match(/v\d{2}|v\d{3}/);
dot = ".";
compNameDot = compName.concat(dot);
compNameDot.concat(version);