今さらながら、aerender

After Effectsは、ボロくなってきただの、バグがいつまでも消えないだの、結構散々言われますが、私は好きです。イカしたノードビューはないけれど、まるでガレージの工具箱のように、何でも工具が揃っていて、その気になればカットアウトをゼロから作ることだって可能です。

 

私は今後、カットアウトに関してはToon Boomに完全移行することを計画していますが、相変わらず、After Effectsは頼りになる相棒です。現在、4KHDRの作業において、After Effectsは愛馬のごとく、人馬ともに働く日々です。

 

しかし。

 

その愛馬の馬力が足りん。

 

最近、3秒のレンダリングに、144時間と出てしまった‥‥。

 

速攻でレンダリングを中止し、「何がそんなに時間がかかるか」の原因究明に切り替えました。

 

‥‥まあ、仕込みをもっと繊細に丁寧に、かつ計画的におこなえば、144時間などかからないのですが、流れるままにカットアウトを、しかも4Kサイズで作業していると、After Effectsはまるで20年前のレベルに逆戻りします。144時間って、何日よ。

 

結局、様々な因子が重なり、巨大な画像のディストーション系が特に重荷だったことが判明、すぐさまプリレンダリングして軽くしました。1ファイル20GBなんていうファイルはざらに出現するのが、4K時代の現場運用ですから、アホみたいに144時間待つことなどせず、シャキシャキとプリレンダリングしてライブラリ型制作運用を実践しましょう。

 

‥‥で、144時間が2時間まで短縮できました。

 

とはいえ、3秒で2時間なので、まあ、相当重いですよね。‥‥たまに2Kのテレビ作品を手伝うと、プリレンダリングなどしなくても軒並み数分で終わるカットばかりですから、4K時代のAfter Effectsにどんな重荷が降りかかるかは推して知るべし。

 

 

 

2000年公開のBlood劇場版は、その当時「速かった」Windowsマシンで5日間レンダリングしたカットがありました。大判の横PANで、その大判に様々なエフェクトがかかっていたので、時間を要したのです。

 

同じ状況が、2020年の今、4KHDRに姿を変えて再来しております。対処法は同じです。プリレンダンリングとマシンの分散です。

 

そんなこんなで、レンダリングエンジン。

 

After Effectsを買い増さなくても、レンダリングだけはしてくれる財布に優しいソリューションです。

 

しかし、レンダリングエンジンは正直使いにくい。「フォルダを監視」が。

 

あの「壊れかけのテレビ」が、本当に壊れてるんじゃないかと思えるほど、無反応なことがあります。‥‥もちろん、何らかの原因はあるんでしょうが(パスが通ってないとか)、たとえ実際にファイルをコピーしなくても「ファイルを収集」という段取りが面倒でなあ‥‥。

 

 

 

 

聞くところによると、After Effectsにもれなくついてくる「aerender」という実行ファイルで、renderQueue周りを自動制御できるらしいです。

 

壊れかけのテレビに頼らずとも、済みそうです。

 

私はJSのスクリプトばかりで自動制御していたので、aerenderは使ったことがありませんでしたが、今回初めて使ってみました。

 

 

 

4KHDRによって、マシン性能が20年前に戻った今、マシンの有効活用のため、aerenderの使い方を「いまさらではありますが」macOSのターミナルで調べてみましょう。

 

*ターミナルはアプリケーションフォルダのユーティリティの中にあります。

*ターミナルのコマンドは、Webで調べて覚えられます。

 

 

調べ方は簡単。ターミナルを起動して、ウィンドウにaerenderをドロップしパスを自動で記述、その後、ヘルプを呼び出します。マニュアル・ヘルプは「man」ではなく、「-h」で。

 

/Applications/Adobe¥ After¥ Effects¥ CC¥ 2018/aerender -h

 

すると、以下のように使い方が表示されます。

 

aerender version 15.1.2x69

USAGE:

   1] aerender renders After Effects comps. The render may be performed either

      by an already running instance of AE or by a newly invoked instance. By

      default, aerender will invoke a new instance of AE, even if one is

      already running. To change this, see the "-reuse" flag below.

   2] aerender takes a series of optional arguments.

      Some are single flags, like "-reuse". Some come in flag-argument

      pairs, like "-project project_path". And one comes in a triplet,

      -mem_usage image_cache_percent max_mem_percent.

   3] aerender with 0 arguments, or with any argument equaling "-help" 

      or "-h", prints this usage message.

   4] The arguments are:

      "-h"                    print this usage message

      "-help"                 print this usage message

      "-reuse"                use this flag if you want to try and reuse

                              an already running instance of AE to perform the

                              render.  By default, aerender will launch a new

                              instance of After Effects, even if one is already

                              running.  But, if AE is already running, and the

                              "-reuse" flag is provided, then aerender will

                              ask the already running instance of AE to perform

                              the render. Whenever aerender launches a new

                              instance of AE, it will tell AE to quit when

                              rendering is completed; otherwise, it will not

                              quit AE. Also, the preferences will be written

                              to file upon quit when the "-reuse" flag is

                              specified; otherwise it will not be written.

      "-project project_path" where project_path is a file path or URI

                              specifying a project file to open. 

                              If none is provided, aerender will work with the

                              currently open project.

                              If no project is open and no project is provided,

                              an error will result.

      "-teamproject project_name"    where project_name is a name of a

                              team project to open.

      "-comp comp_name"       where comp_name specifies a comp to be rendered.

                              If the comp is in the render queue already, and

                              in a queueable state, then (only) the first

                              queueable instance of that comp on the render

                              queue will be rendered. If the comp is in the

                              project but not in the render queue, then it will

                              be added to the render queue and rendered.

                              If no -comp argument is provided, aerender will

                              render the entire render queue as is. In this

                              case (no -comp), the only other arguments used

                              will be -project, -log, -v, -mem_usage, and

                              -close; the -RStemplate, -OMtemplate, -output,

                              -s, -e,  and -i arguments will be ignored.

      "-rqindex index_in_render_queue"       where index_in_render_queue specifies a

                              render queue item to be rendered. Options that make

                              sense when rendering a single render queue item

                              are available like with the -comp flag.

      "-RStemplate  render_settings_template"  where render_settings_template

                              is the name of a template to apply to the render

                              queue item.If the template does not exist it is

                              an error.

                              Default is to use the render template already

                              defined for the item.

      "-OMtemplate  output_module_template"  where output_module_template

                              is the name of a template to apply to the

                              output module. If the template does not exist

                              it is an error.

                              Default is to use the template already defined

                              for the output module.

      "-output  output_path"  where output_path is a file path or URI

                              specifying the destination render file.

                              Default is the path already in the project file.

      "-log logfile_path"     where logfile_path is a file path or URI

                              specifying the location of the log file.

                              Default is stdout.

      "-s start_frame"        where start_frame is the first frame to render.

                              Default is the start frame in the file.

      "-e end_frame"          where end_frame is the last frame to render.

                              Note, this is "inclusive;" the final frame

                              will be rendered.

                              Default is the end frame in the file.

      "-i increment"          where increment is the number of frames to

                              advance before rendering a new frame. A value

                              of 1 (the default) results in a normal rendering

                              of all frames. Higher increments will repeat the

                              same (frame increment-1) times and then render a

                              new one, starting the cycle again. Higher values

                              result in faster renders but choppier motion.

                              Default is 1.

      "-mem_usage image_cache_percent max_mem_percent"

                              where image_cache_percent specifies the maximum

                              percent of memory used to cache already rendered

                              images/footage, and max_mem_percent specifies

                              the total percent of memory that can be 

                              used by After Effects.

      "-v verbose_flag"       where verbose_flag specifies the type of

                              messages reported.  Possible values are ERRORS

                              (prints only fatal and problem errors) or 

                              ERRORS_AND_PROGRESS (prints progress of rendering

                              as well).

                              Default value is ERRORS_AND_PROGRESS.

      "-close close_flag"     where close_flag specifies whether or not to

                              close the project when done rendering, and

                              whether or not to save changes. If close_flag is

                              DO_NOT_SAVE_CHANGES, project will be closed

                              without saving changes. If close_flag is

                              SAVE_CHANGES, project will be closed and changes

                              will be saved. If close_flag is DO_NOT_CLOSE the

                              project will be left open; but the project is

                              left open only if using an already-running

                              instance of AE, since new invocations of AE must

                              always close and quit when done.

                              Default value is DO_NOT_SAVE_CHANGES.

      "-sound sound_flag"     where sound_flag specifies whether or not to play

                              a sound when rendering is complete. Possible

                              values are "ON" or "OFF".

                              Default value is "OFF".

      "-version"              displays the version number of aerender to the

                              console. Does not render.

      "-continueOnMissingFootage"  

                              Do not stop rendering on missing footage. Log and

                              render with placeholder color bars.

   5] EXAMPLES:

      To render just Comp 1 to a specified file:

          aerender -project /Volumes/Stuff/projects/proj1.aep -comp "Comp 1"

                   -output /Volumes/Stuff/output/proj1/proj1.mov

      To render everything in the render queue as is in the project file:

          aerender -project /Volumes/Stuff/projects/proj1.aep

      To render frames 1-10 using multi-machine render:

          aerender -project /Volumes/Stuff/projects//proj1.aep

                   -comp "Comp 1" -RStemplate "Multi-Machine Settings"

                   -OMtemplate "Multi-Machine Sequence" -s 1 -e 10 

                   -output /Volumes/Stuff/output/proj1/frames¥[####¥].psd

 

 

英文は根性と度胸で読みましょう。難しい英語ではないので、落ち着いて読めば読解できますヨ。プログラムの世界で「日本語訳のマニュアル」など待ち続けても学習はできんですからネ。

 

さっと流し見するに、renderQueue項目の各種設定(注)が遠隔操作できそうな感じです。ESTKでAfter Effectsのレンダリング周りをプログラムしたことのある人なら、特に悩まずに命令文が書けるんじゃないでしょうか。

注)*本式に言えば、「RenderQueueItem object」の「Attributes」です。CompItemをレンダーキューにaddするメソッドと、render開始のメソッドは、命令と共に暗黙で実行される感じです。

 

 

試しに、ターミナルからレンダリングを実行してみましょう。

 

After Effectsプロジェクトファイルは、「TEST」コンポが1つだけ、レンダーキューは空の状態です。つまり、あらかじめレンダーキューには何も送っていない状態です。

 

その状態から‥‥

 

  • デスクトップにある「test.aep」ファイルの
  • 「TEST」コンポジションから
  • 出力先と名前を、デスクトップに「test-prores4444.mov」で
  • レンダリング設定を16bitのプリセット
  • 出力モジュールをProRes4444のプリセット

 

‥‥にて自動レンダリングするよう、命令文を書きます。blogなので改行されてますが、実際は1行です。

*「私のユーザアカウント」はmacOS上の自分のユーザ名に置き換えてください。

*レンダリング設定と出力モジュールのテンプレートはあらかじめ用意してください。

 

/Applications/Adobe¥ After¥ Effects¥ CC¥ 2018/aerender -project /Users/私のユーザアカウント/Desktop/test.aep -comp TEST -output /Users/私のユーザアカウント/Desktop/test-prores4444.mov -RStemplate 16bit -OMtemplate ProRes4444

 

ターミナルに上文を入力したら、リターンキーで実行。

 

すると、早速バックグラウンドでAfter Effectsらしき実行ファイルが起動して、以下のようなログを吐きつつ、レンダリングが無事終了しました。

 

PROGRESS:  0:00:00:00 (1): 0 ?b

PROGRESS:  0:00:00:01 (2): 0 ?b

PROGRESS:  0:00:00:02 (3): 1 ?b

PROGRESS:  0:00:00:03 (4): 0 ?b

PROGRESS:  0:00:00:04 (5): 0 ?b

PROGRESS:  0:00:00:05 (6): 0 ?b

PROGRESS:  0:00:00:06 (7): 0 ?b

PROGRESS:  0:00:00:07 (8): 0 ?b

PROGRESS:  0:00:00:08 (9): 0 ?b

PROGRESS:  0:00:00:09 (10): 1 ?b

PROGRESS:  0:00:00:10 (11): 0 ?b

PROGRESS:  0:00:00:11 (12): 0 ?b

PROGRESS:  0:00:00:12 (13): 0 ?b

PROGRESS:  0:00:00:13 (14): 0 ?b

PROGRESS:  0:00:00:14 (15): 0 ?b

PROGRESS:  0:00:00:15 (16): 0 ?b

PROGRESS:  0:00:00:16 (17): 1 ?b

PROGRESS:  0:00:00:17 (18): 0 ?b

PROGRESS:  0:00:00:18 (19): 0 ?b

PROGRESS:  0:00:00:19 (20): 0 ?b

PROGRESS:  0:00:00:20 (21): 0 ?b

PROGRESS:  0:00:00:21 (22): 0 ?b

PROGRESS:  0:00:00:22 (23): 0 ?b

PROGRESS:  0:00:00:23 (24): 0 ?b

 

 

「フォルダを監視」より凄く楽。

 

壊れかけのテレビに頼らずに済みます。

 

ちなみに、AppleScriptはシェルコマンドを実行できますので、ちゃんとAfter Effectsの運用規則(ファイル名とか内部構造とか)を決めておけば、AEPファイルをAppleScriptドロップレットにドロップしただけで、上記の命令文を自動生成、レンダリングを実行してくれます。

 

レンダリング結果も正常。

 

 

 

 

なあ??

 

スクリプトやプログラムを覚えておくと、こういう時に役立つでしょ?

 

なので、コンピュータを使ってお金を稼ごうという人は、プログラムは覚えておいて損はないです。映像分野のように、レイヤーやファイルが膨大に存在する業種なら、なおさら。

 

 

 

よっしゃ。

 

これで簡単に、レンダリングエンジンだけでレンダリングの玉数を増やせるど。

 

 


関連する記事

calendar

S M T W T F S
  12345
6789101112
13141516171819
20212223242526
2728293031  
<< October 2019 >>

selected entries

categories

archives

profile

search this site.

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM