CS6のネットワークレンダリング用の設定について

CS6で、ちょっと不思議な設定が必要になっているのでメモ。

>監視フォルダーとレンダリングエンジンを使用したネットワークレンダリング
http://helpx.adobe.com/jp/after-effects/using/automated-rendering-network-rendering.html#WS3878526689cb91655866c1103a4f2dff7-79a2a
———————————————————–
 非ロイヤリティベアリングモードを有効にするには、ae_render_only_node.txt という名前の空のファイルをユーザーのアカウントの種類に応じて次のいずれかの場所に配置します。

 1.After Effects をレンダリング専用マシンにインストールします。
 2.ae_render_only_node.txt という名前の空のファイルをユーザーのアカウントの種類に応じて次のいずれかの場所に配置します。

 •Mac での場所:
 /Users//Documents/
 /Users/Shared/Adobe/

 •Windows での場所:
 C:\Users\\Documents
 C:\Users\Public\Documents\Adobe

 あと、aerender.exeのオプション設定は以下のような内容。
 試してみると、最低限 -project 又は -comp を指定しないとレンダリングしてくれないっぽい。
 また -log を使えばファイルにログを残しておくことが出来るので、標準出力から取ろうと頑張る必要とか特にない。

>aerender によるレンダリングの自動化
http://helpx.adobe.com/jp/after-effects/using/automated-rendering-network-rendering.html#WS8A8CD670-4A72-4fb5-AE8E-CB9E232EC0B5a

正規表現で、ファイル名からフレーム数を抜き出すには

とりあえず 『(ドライブ名) (フォルダパス) (ファイル名)』とあって、
ファイル名内が『ベース名.フレーム番号.拡張子』のようになっている場合の、フレーム数の取得。

参考サイト
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions

AEGPによるメニュー登録とスクリプト実行

めも。

>AEGP_COMMANDSUITE1
 >AEGP_InsertMenuCommand
  メニュー登録用の関数。
  大項目は、以下の項目を指定。
   AEGP_Menu_NONE
   AEGP_Menu_APPLE
   AEGP_Menu_FILE
   AEGP_Menu_EDIT
   AEGP_Menu_COMPOSITION
   AEGP_Menu_LAYER
   AEGP_Menu_EFFECT
   AEGP_Menu_WINDOW
   AEGP_Menu_FLOATERS
   AEGP_Menu_KF_ASSIST
   AEGP_Menu_IMPORT
   AEGP_Menu_SAVE_FRAME_AS
   AEGP_Menu_PREFS
   AEGP_Menu_EXPORT

  その下の項目指定は以下の通りで、詳細に設定は出来ないみたい。
  ※しかも、AEGP_Menu_WINDOWの場合、AT_BOTTOM, AT_TOPは長いことサポート外で、CS5以降では errorを返すらしい..
  ※そもそも大項目追加や、各項目の子要素追加方法の有無が不明。
   AEGP_MENU_INSERT_SORTED
   AEGP_MENU_INSERT_AT_BOTTOM
   AEGP_MENU_INSERT_AT_TOP

>AEGP_UTILITYSUITE5
 >AEGP_ExecuteScript
  javaScript実行用の関数。
  文字列でスクリプト本体を渡す。結果(正常値・異常値)も文字列で返ってくる。

モーダルダイアログ表示中はスクリプト実行できない

以下は、プロジェクト設定ダイアログを開いた状態で色深度設定を変更しようとすると、エラーが発生するので、エラー文字列を表示させるテストスクリプト。

プログラム中で引数の個数可変で関数を呼びたい時の記述方法

javascriptの場合は、funcって関数があったら「func.apply(null,argArray);」て感じで、第二引数(argArray)には、引数の入った配列を渡せばそれでOK.
言語毎の記述の使い分けが面倒とかあるし、深く考えないなら eval(“func(arg1,areg2,arg3..)”); って、書く方法もあるけどw
そういえば、Pythonにもapplyメソッドは存在するだっけな..

で、上の話とズレるけど、pythonの場合は関数定義でfunc(*args)とか書くと、引数の個数が不定の関数を作ることができる。
でも引数が不定の関数なんて、printf関数ってのしか思い付かない..

プロジェクト設定 – 表示形式:タイムコードベース時の 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