AE=ハンドメイドツール

After Effectsはその名から「アフターでエフェクト」のソフト、後処理ソフトみたいに思われがちです。まあ、実際、開発当初はそんな感じだったんだと思います。

 

しかしそんなAfter Effectsも最新版のバージョンは「15.1.1」。私が使い始めたのは「3.1」。‥‥随分とバージョンを重ねたものですが、そのバージョン更新の間に、アフターでエフェクトを追加する目的には収まりきらない機能を獲得しました。

 

エフェクトをゼロから作るソフト=何かのアフターではなく、作り出すソフト。‥‥もっと言えば、エフェクトに限らず、「動く何か」を作るソフトへと姿を変えてきました。

 

「アフターのエフェクトのはず」が、どんどん「エフェクトを処理する前の、素材作りまで可能になった」ソフトに変わってきたわけです。After Effectsを「After Effects」と呼ぶのは、意味不明になりつつあります。

 

私がNukeなどの後発のソフトウェアに中々興味がもてないのは、「ゼロからアニメを作れる」か否かで立ち止まってしまうからです。私が今、日々手元において使いこなしたいのは、前工程で用意された素材ありきで機能するソフトウェアではなく、ゼロからアニメを作れる「アニメーションのツールボックス」、ゼロから映像を作れる「映像作りの道具箱」なのです。

 

たとえば、下図は、After Effectsの平面レイヤーで作ったキャラクター(と空の背景)です。前工程から受け継いだ素材は全く無しで、ガチでAfter Effectsだけで作っています。他のソフトで描いたり作ったりした素材は一切使用せず、After Effectsの内部の平面レイヤーとシェイプレイヤーだけで構成しています。

 

 

*4〜5年前にテスト目的で描いた「After Effectsのベクター系ツールで描くキャラ」をもとに、キャラを全面的に描き直した2018年バージョンの「ベクターガール」です。2D描画スタイルの研究材料です。

*ちなみに、この絵の描線は基本「1ピクセル」設定です。4800pxのキャンバスに1ピクセルなので、相当細いはず‥‥ですが、アンチエイリアスで太って見えるんでしょうネ。

*上図のサイズだとわかりにくいですが、別ウィンドウで画像だけ開いて等倍で表示すると、描線が全く無機質なのがわかります。まあ、線に後付けで鉛筆風のゆらぎやムラやノイズを加味することも可能ですが、せっかくのスッとしたテイストですから、無機質なパス線が活きるキャラデザインと演出法=作る人間側の逆転の発想に重きをおきたい‥‥と思います。なんでもかんでも鉛筆時代に執着するのではなく、です。

 

 

After Effectsだけで作っているので、容量は以下のように軽いですし、外部のフッテージ(素材)なしに、このファイルだけで全てが完結します。

 

*ベクター描画のレイヤーだけで5.6MB‥‥なのは、考えようによっては重いとも言えますが。

 

 

オリジナルは4800pxの16:9で、ダウンコンして3840pxの規格サイズに合わせています。淡白な表現にしていますが、もっと濃い表現にしたければ、いくらでも。

 

「After Effectsの平面レイヤー・シェイプレイヤーだけで作るとどんな感じになるか」のテストなので、このテイストで何か映像を作ろうとは今は考えていません。わざと無機質な描線(=単なるパスの輪郭線の1本線だから)で作っていますが、私はやっぱり、描き手の筆致が表れる描線が好きなので、当面は「パスでキャラを描く」のはテスト目的です。

 

でもまあ、その気になれば、After Effectsだけでこのくらいの絵はすぐに描けるのです。After Effectsにはその能力が十分に備わっています。‥‥まあ、「その気になる方法」「その能力」が広く認知されていないだけで、After Effectsにはもう10年くらい前からこのくらいのポテンシャルは実装されています。もちろん、この絵を動かすことも可能です。全てのシェイプがキーフレームで操作可能ですし、Birth&Deathの手法(現われて消える)を使えば、Z軸回転の動きも可能になります。

 

 

ただ、ちまたで言われるように、たしかに‥‥After Effectsの設計は色々と古いです。HDRの対応なんて立ち遅れもいいとこ‥‥です。

 

ビジュアルエフェクト観点で言えば、たしかに、After Effectsは古さを感じるでしょうし、もっと新しいソフトも使ってみたいと思うでしょう。私もビジュアルエフェクトやアニメ旧来の撮影で言えば、After Effectsの限界をありありと感じます。いつまで古い仕様のままなんだ‥‥と。

 

でも、私らの技術グループは、After Effectsを本番のコンポジットだけで使う‥‥なんて狭い使い方はしません。After EffectsはそれこそVコンテからカラースクリプト、キャラクターアニメーション、エフェクトアニメーション、ビジュアルエフェクトなど、様々な制作工程の要所で活用できるソフトウェアです。私らのフローでは監督・演出や作画においては随分前からAfter Effectsによる作業を組み込んで活用していますし、もしかしたら未来的には色彩設計も美術も、After Effectsを(補助的にでも)使うこともありえます。

 

逆に、後発のソフトウェアがどんなにいまどきのUIだろうと、HDRに対応していようと、ハンドメイドで自分の思うようにゼロから映像素材を作れなければ、少なくとも私にとっては魅力の少ないソフトウェアです。

 

After EffectsがRec.709しか書き出せない旧態依然とした仕様でも、ゼロから色々な映像を作れる底力は魅力なんですよネ。HDRへの対応は、他のソフトウェアとの組み合わせでなんとかなりそうですし。

 

 

After Effectsはツールボックスとしか言い表しようがないです。決して、「After Effects」ではないス。

 

でもさあ‥‥、開発のアドビさんには、もうちょっと未来の映像フォーマットや映像技術を意識してもらって、After Effectsに「今日的」な機能を実装して欲しいんですよネ。

 

HDR観点で見ただけでも、旧式化は否めないですもんネ。最近、また、ProRes4444 XQが呼び出せなくなったし。

 

After Effectsはツールボックスとして非常に柔軟性の高いソフトウェアですが、すぐそこの未来の4KHDR、そして60pなどへの対応能力は残念ながら低いと言わざる得ません。

 

 

一方、Blackmagic社のDaVinci Resolveは、今後、期待大です。バージョン15の機能追加はワクワクしますネ。After Effectsの代わりにはなりませんが、アニメーション(=絵を動かす)工程とは別のエリアで、色々なジャンルにまたがって活用できる予感がヒシヒシと伝わってきます。

 

ぶっちゃけた話、Blackmagicは弱者の味方です。だって、他の放送プロ機器・映像プロ機器に比べて格安でしょ。

 

もっと言えば、アニメ制作会社は、せめてBlackmagic社の製品くらいの価格帯に慣れる意識は、今後必要です。なんだかんだ言いながらも最終的には「デジタル」で飯を喰うのが2010〜2020年代のアニメ会社なのですから、安マシンと安PCモニタで「安くアニメが作れるようになった」なんてアマチュアみたいなことを言い続ける意識は2020年代には淘汰されるべき‥‥とも思います。

 

「デジタルデータ」の納品でお金を稼いでいるのに、「デジタル機器」にできるだけお金を使いたくない‥‥って、ある種、背信行為とすら思えます。工業の世界では「性能の偽装」って社会問題にまで発展する行為ですが、アニメ業界の「HD」って‥‥、まあ、いいか、ソレは。

 

まあ、とにかく、ちゃんと、必要最低限のスペックの機材は揃えたい‥‥ですよネ。

 

 

話を戻して、After Effects。

 

After Effectsの今後の要望は、とにかく、4KやHDRのすぐ先の未来をもっと意識して欲しい‥‥ということです。今すぐに実装すべきは、Rec.2020やP3などの色域を扱える機能拡張です。After Effectsの古い仕様に合わせて、周りのソフトウェアや機器がフォローしまくっている‥‥というのは、明らかに「お荷物状態」なんですよね。

 

実は、After Effectsの有用性と未来性を一番わかっていないのは、開発元‥‥だったりしてね‥‥。‥‥そうじゃないことを祈るばかりです。

 

 

 

 


TC&0フレ

アニメ業界ではフィルム時代のタイムシートの影響か、コマ数表示(=フレーム数表示)で作業することが多いようで、受け取ったAEPはもれなくプロジェクト設定の「時間の表示形式」が「フレーム」に設定されています。

 

 

タイムシートとにらめっこして時間軸の現在位置を合わせる場合は、「フレーム」表示でいいのですが、それだとグローバルな「時間の感覚」が把握しにくいので、必ず、以下のように設定を変えます。私は、After Effectsを扱う時は、必ずタイムコード表示に設定し直して作業します。

 

 

「でもさ、コマ数に慣れていれば、すぐに秒数に脳内変換できるじゃん?」と思う人は多いでしょう。

 

しかしそれは、あくまで「24コマの世界でしか仕事をしない旧来のアニメ業界の感覚」だけの話であって、1秒間が30、48、60、96、120...と分解能が変化した際には全く通用しません。

 

私も24コマの仕事が圧倒的に多いので、72は3秒、144は6秒...とすぐに思い浮かびますが、何でもかんでも24コマで思考していると、直感的な時間の感覚が24コマに固定されます。それは色々な映像制作、そして60や120fpsの時代に、いらぬハンデとなります。

 

なので、私ら技術グループは、1秒は1.0、3秒は3.0‥‥というような小数点で捉える習慣をベースにしています。24コマでいうところの「3+12」は3.5‥‥というあんばいです。

 

 

実際のところ、24コマ縛りで1スタートのフレームでの数え方は、アニメ業界独特です。他の映像ジャンルや映像処理工程に踏み込んだ途端、「話が通らなくなり」ます。

 

私は20年前くらいに、タイムシートからタイムコードへと習慣を変える際に、とても違和感を感じてひっかかった経験があります。しかし、独特なのはアニメ業界のほうで、映像制作のスタンダードは今やコマ数でもなくフィートでもなく、タイムコードが主流と言って過言ではありません。もはや、ほとんどの映像制作が、最終媒体をデジタルデータに占領されておりますから、フィルム時代のコマ数やフィートではなく、タイムコードで時間の感覚を身につけるほうが現実的です。

 

 

‥‥で、最近、AEPファイルの受け取りで(=本当はAEPの受け取りはしたくないんですけど)、この「フレーム数、1スタート」でハマったことがありました。

 

まずは、これを見てください。

 

 

アニメ業界ではよくある「フレーム表示」です。

 

このようにフレーム表示にすれば、タイムシートと合わせやすいですよネ。フレーム数表示が1スタートなので、タイムシートと同じコマ数になります。

 

しかし私は、こういう「漠としたフレーム数表示」がイヤで、目で見てすぐに秒数が知りたいので、表示を「タイムコード」に直します。

 

すると‥‥

 

 

拡大しますと‥‥

 

 

‥‥極めて見辛いです。秒数が進んでいく様子が、直ぐに判読できません。

 

「01,05,09,13,17,21」と進んで「01」に戻りますし、そもそも、秒数区切りの表示が消えています。

 

どうなっているのでしょうか、このタイムコードの表示は。

 

原因は、コレです。

 

 

開始タイムコードが「:01」になっています。表示されるフレーム数を1スタートにしたいがために、コンポジション設定上で1スタートに設定すると、タイムコードも1スタートになり、かなり妙なことになります。

 

このコンポジション設定での1スタートが原因で、タイムラインでのタイムコードの表示から秒数が消えていたのです。

 

加えて、書き出したムービーファイルのタイムコードメタデータは、なんとも気持ち悪い「00:00:00:01」スタートになります。タイムコードはゼロスタートが基本ですから、もし受け取る側のソフトウェアがムービーファイルのタイムコードを反映する設定になっていると、タイムコードが中途半端な「00:00:00:01」スタートに設定されます。

 

‥‥なので、0スタートに設定し直せば、以下のように、いつもの表示に戻ります。

 

 

 

「いやでもさ‥‥、フレーム数じゃないと、見辛いんだよ」という場合は、プロジェクト設定で設定すれば1スタートに表示されます。コンポジションの設定は、書き出されるムービーファイルのタイムコードに関連するので、コンポジション設定ではなく、プロジェクトの「時間表示の設定」で解決するのが、トラブルを未然に防ぐ方法です。

 

以下のように。

 

 

「フレーム数」を「1から開始」にすれば、わざわざコンポジションの開始フレームを1にしなくても、表示上は1スタートになります。

 

 

でもまあ、未来のことを考えると、24コマ感覚ではなく、小数点感覚とタイムコード感覚に慣れた方が良いと思うんですよネ。1秒を1.0と捉える感覚は絶対的ですから。

 

とは言え、です。「自分の体内感覚の話よりも何よりも、何秒何コマかを、知りたいんだよ」というのはごもっともです。タイムシートの打ち込みにはどうしてもフレーム数・コマ数は目で確認したいですもんネ。私だって、頭ですぐに小数点から当該フレームレートのコマ数へ正確無比に暗算できるわけではないです。

 

そんな時はエクスプレッション。テキストレイヤーで多機能なフレーム数表示のレイヤーを作りましょう。タイムラインの表示をフレーム数にするよりも遥かに目視が容易です。

 

 

「162コマ目、2枚目のシートの18コマ目、6秒18コマ目、2枚目のシートの0秒18コマ目」を自動表記するエクスプレッションです。

 

After Effectsでフレーム数表示にしても、何秒シートの何枚目か?‥‥までは表示してくれない「中途半端な表示」にしかならないですから、いっそのこと、フレーム数・コマ数の目視確認はテキストレイヤーのほうが良いと思うんですよ。

 

変数の値を書き換えれば、3秒シートにも対応できますしネ。

 

ガイドレイヤーにしておけば、間違って表示したままレンダリングすることもないです。

 

ちなみに、エクスプレッションのコードはこんな感じ。少々散らかっててスミマセン。

 

var tsDuration=6;//何秒シートかの設定


var fps=1/thisComp.frameDuration;
var frCount=timeToFrames(time, fps, true);
var tsCount=Math.ceil((frCount+1)/(fps*tsDuration));
var sec=Math.floor(time);
var kt=Math.pow(10,(String(Math.floor(thisComp.duration))).length);

 

var frCountStr=String(frCount+10001).slice(1);
var frCountStrTS=String(frCount%(fps*tsDuration)+10001).slice(1);
var frCountStrMod=String(frCount%fps+101).slice(1);
var currTsCount=String(tsCount+100).slice(1);

 

frCountStr+" | "+currTsCount+":"+frCountStrTS+" ;;; ("+String(sec+kt).slice(1)+"+"+frCountStrMod+") | "+currTsCount+":("+String(sec%tsDuration+kt).slice(1)+"+"+frCountStrMod+")";

 

大したことはやってません。timeとframeDurationをコネくりまわせばできることで構成しています。

 

途中で「Math.pow(10,(String(Math.floor(thisComp.duration))).length);」のような妙なことをしているのは、尺の長さに合わせて、ゼロの数を合わせたいからです。1〜9秒なら「1〜9」、10〜99秒なら「01〜99」、100〜999秒なら「001〜999」‥‥とゼロを揃えないと、文字列の長さが現在時間で変わってしまい、表記がピコピコ動いちゃうのがイヤなのです。他の箇所で101や10001を足すのもそういう理由です。0=スタートフレームに10001を足して先頭の1の文字を削れば「0001」になりますもんネ。

 

数字の1は、文字の"0001"ではないので、まず1に10000を足して10001にしたのち、10001を"10001"に変換して先頭の1文字を削れば"0001"になる‥‥というわけです。昔から、この方法で、ゼロの数を合わせています。揃えたい桁数で10をべき算すれば、この方法で容易に4ケタでも5ケタでもゼロを揃えられます。

 

ちなみに、「秒数なんて99秒、2桁あれば、十分でしょ」‥‥と思う人は居るかもしれませんが、甘い‥‥甘いです。過去に、100秒超えのカットは、数カットではありますが経験しました。カット数の尺=秒数は2桁で必ず足りる‥‥とは限りません。

 

あと、いちいち「String()」しなくても、JavaScriptはNumberからStringへの暗黙の型変換をしてくれますが、暗黙のうちに何がうまくできて何がうまくできないのかが信用できないので、大した手間でもなし、ちゃんと型を明示的に変えています。

 

なので、例えば6秒シートで12秒以上のカットならば‥‥

 

 

‥‥のような具合に、自動で表記されます。「294コマ目、3枚目のシートの6コマ目、12秒6コマ目、3枚目のシートの0秒6コマ目」です。秒数が2桁になったので、「0,1,2,3,4,5,6,7,8,9,10,11,12...」ではなく、「00,01,02,03,04,05,06,07,08,09,10,11,12...」のようにゼロで桁数を揃える表記に自動で変化します。

 

 

‥‥とまあ、After Effectsをわざわざフレーム数表示に変えなくても、映像制作標準のタイムコードのままで、こうしたエクスプレッションを用意してひな形AEPに組み込んでおけば、いつでもフレーム数とタイムシートの「(秒+コマ)」を目視確認できます。フレーム数ではなく、タイムコードベースで運用すれば、様々な映像ソフトウェアの標準規格に合わせられます。

 

作業用のキャラ表示を簡単な数行のスクリプト文で、しかも自分の思うままの書式で、極めて短時間に自作できるのは、After Effectsの強みとも言えましょう。未来の60fps時代には、24コマ表記と60fps表記を列記して、60fpsコンポジション上において旧来の24コマだと何コマ目にあたるか?‥‥みたいな表示も簡単にできちゃいます。

 

私は昔からタイムコード&0フレームスタート派ですが、アニメ以外の様々なジャンルの映像制作、新しい映像フォーマットのアニメ制作の際に、非常に役立っています。

 

2018年現在の映像制作における「公用語」はタイムコードと0フレームスタートでしょうから、アニメ制作者と言えども、未来の映像技術を活用しようと思うのなら、「タイムシートのコマ数」という感覚だけに頼るのは、そろそろ卒業したほうが良い‥‥と、少なくとも私は感じます。

 

 

 


DNxHR、CC2018

私は特に何の縛りもない場合は、ProRes4444コーデックを標準として使用しています。なぜかと言うと、画質の劣化が極めて微小で、高い品質で映像を保存できるからです。

 

そんなこともあり、しばらくAvidのDNxHDコーデックを使っていませんでしたが、最近、必要に迫られて書き出そうとしたら、NG。

 

CC2017以降のmacOS環境では、以前のDNxHDプリセットが使えなくなっていました。

 

DNxHDは、新世代のDNxHRを含む「DNxHD/DNxHR」にまとめられ、プリセットの内容も大きく様変わりしております。

 

*数年前に作ったOutputModuleの内容が、CC2017以降では強制的に「DNxHR / DNxHD」「8bit」(数百万色)に変更されておりました。

 

*コーデック設定はグレーアウト状態で、以前のプリセットを選択することすらできません。

 

 

では、昔のバージョンのDNxHDコーデックをインストールすれば良い(要は、/Library/QuickTimeのコンポーネントですね)と思ったりもしますが、After EffectsでのDNxHRコンポーネント(正式名称やからくりは不明です)を優先するらしく、/Library/QuickTime以下に昔のコンポーネントがあっても、After Effects上からは呼び出すことができません。

 

まあ、2020年を間近に控えた今のご時世、DNxHDに固執する必要もなく、上位互換でDNxHRにすればいいじゃん‥‥と気を取り直し、DNxHRの10bitの「444」や「HQX」を選んでみましたが、After Effects上で肝心の「数兆色」を選択できません。

 

 

 

以前、ProRes4444XQを出力しようとした際も、After Effectsの旧バージョンは似たようなことがあり、新バージョンで解決したことがありました。‥‥ので、After Effectsを最新版の2018にしてみました。

 

 

AEPファイルのアイコンが変わった‥‥。わたし的には、「怪電波を発信している初期のアイコン」が好きなんですけどね‥‥。

 

まあ、それはいいとして、問題は「数兆色」です。

 

で、CC2018で再度確認してみたんですけど、「数百万色」しか選択できません。改善されておりません。‥‥がっかり。

 

 

でもまあ、それでもダメ元で「DNxHR」の10bitコーデックを選択し「数百万色」で出力して、After Effectsに読み込んでみると、

 

 

‥‥なんだ、「数兆色」でレンダリングできているじゃないか。

 

‥‥って、今までの、「数兆色を選択して出力しないと、ファイルの色深度が10bitにならない」という操作上の縛りは何だったんじゃい!‥‥と思うことしきり。

 

まあ、10bitって言えば、数百万色でも数兆色でもなく、数億色(RGBだと1024の3乗)なので、どちらに丸めるか‥‥だけの話なんでしょうかね。

 

しかし、今までのAfter Effectsの慣用とは違うので混乱します。今まで「数億色」を出力する場合は、「数兆色」を選択しないとNGだったのにね‥‥。

 

でもまあ、いいや。After Effects上から、DNxHRで10bit出力できることは判りました。

 

 

20年前にも同じようなことで混乱した記憶があります。コンピュータの世界って、いつまで経っても同じですよね。「進歩」はするけど、「調和」はしない。

 

考えても見れば、多くの会社が存在して、多くの思惑が錯綜して、きっちり足並みが揃うわけもないのです。もし、コンピュータの世界に完全な調和と整合性が実現できる日は、人間社会から争いごと=戦争がなくなる日でしょうから、そんな日は永遠に来るわけもなく‥‥。

 

まあ‥‥人間社会が滅亡するまで、コンピュータの世界では「xxの環境だと、ooは動作しない」なんて言い続けるんでしょうね。

 

つまりは、整合性が実現する日を待つのでなく、非整合な現実の中で、どのようにして自分の欲する結果物を獲得するかを考えれば良いのです。環境が揃うのを待ってたら、何も成し遂げられずに一生を終えることでしょう。

 

 

ちなみに、After EffectsのCC2018。

 

色々と小変更は加えられましたが、特筆すべき大きな機能拡大はないです。2Dアニメーションの視点からだと、ほとんど何も変わっていない‥‥と言えます。

 

 

より一層、新時代の映像フォーマットに馴染んできた印象はありますが、まだまだ今後の発展の余地は残しています。

 

パスの頂点をエクスプレッションから個別にアクセスできるようになった‥‥とか、結構、地味な機能が多いです。でもまあ、After Effectsは、「基本的に変わらないこと」が魅力でもあるので、わたし的はCCの年貢を払いつつ、徐々に4K時代に対応していくさまを見守りたいと思います。

 

私がAfter Effectsを使い始めたのは、1997年の年明けからですから、もう20年経過したことになります。その頃から基本的な操作系は変わらず、他のいくつものコンポジットソフトウェアの盛衰を横目で見つつ、今まで生き延びてきたのは、それはそれで凄いことです。

 

操作系がノード連結型だろうがレイヤー積載型だろうが、結局は、出来上がった絵・映像が全てだもんね。

 

After Effectsはいざとなれば、スクリプト文で細かく制御できるし、プリコンポーズとコラップストランスフォームを駆使すれば能率的な運用も可能だし、時流に日和ることなく、いつまでも「映像専門分野」のソフトで在れば良いと思っています。

 

 


3桁fps

最近までAfter Effectsのコンポジションのフレームレート欄は、「99」で打ち止め、つまり100以上のfpsは入力不可だったのですが、最新のAfter Effectsでは「120fps」がプリセットの中に含まれており、いよいよAfter Effectsもフレームレート3桁の時代に突入した‥‥みたいです。

 

いつ対応したんだろ?

 

でもまあ、ようやく対応してくれましたか。

 

ちなみに、240を入力してもちゃんと受け付けてくれますし、タイムラインも0〜239で1秒になってくれます。

 

 

 

 

「240fps」なんて使わねーよ‥‥なんて言う人は、狭い視野の人

 

最終出力だけが映像出力の全てじゃないじゃん?

 

24fps作品だからって、素材まで24fpsだけで作るのは‥‥、って、まあいいか、それは。

 

フレームレートって、色々と使い道があるんですよ。

 

 

After Effectsが3桁fpsに対応してくれたおかげで、かなり融通の利く運用が可能になります。

 

目下は60fpsがメインですが、120や240fpsも可能になったことで、運用次第でマシンの負担を軽減できます。‥‥まあその代わり、HDDの容量は一段と逼迫するでしょうが、HDDも今や3TBで8000円の時代ですから、2000年前後に比べればむしろ楽です。

 

 

ソフトウェアを含め、作業環境や世の中が徐々に4K8K時代に移行してくれて、嬉しい限りです。

 

最近、UHD BDの案件にいくつか立会いましたが、フィルム作品でも4Kの効果は絶大ですよ。

 

フィルムに記録されたセル画と背景美術のディテールが、生々しく4Kテレビで描写されます。

 

フィルム作品を本当に楽しみたいのなら、今後発売されるであろう、ちゃんと再スキャンした4Kのタイトルをお勧めします。旧作でも4K&HDRの効果は目に見えて素晴らしく、フィルムのポテンシャルを映し出すには、2K程度&SDR程度では全くの役不足だったんだ‥‥と実感した次第です。

 

HDRの効果も素晴らしく、2KとSDRの膜の向こうのぼやけて見えていたフィルムの真のエッジと発色が、4KとHDRで蘇ります。

 

 


ぶっちゃけ、今のAE

After Effectsは、私の「第2の鉛筆」とも言えるソフトウェアで、あんまり悪くは書きたくないんですけど、実際に2017年春現在のAfter Effectsには使いにくさや障害が増えてきて、ぶっちゃけ「悪ければ、悪いとしか書きようがない」です。

 

イメージキャッシュが更新されずに「ゴースト」が居続ける

 

非リアルタイムで遅く再生するときに、わざわざ音声トラックを遅回しで音出しする必要‥‥ある?

 

プレビューのキャシュが虫食いの場合、スキップして繋げて再生する必要‥‥ある? 逆に混乱しない?

 

フル画面でプレビューすると再生の途中で突如暗転して真っ暗になって戻ってこなくなることが3回に1回くらいある

 

ここのところのAfter Effectsの数バージョンは、どちらかというと「改悪」のベクトルに向いているように思えます。いいなと思える部分もありますが、日頃使いの部分が使いにくくなっているので、印象として「改悪」に感じるのです。

 

日頃使いの部分が使いにくくなった‥‥というのは、今までの慣習から変わったからで、要は使う自分側の問題だ‥‥と思おうとしても、プレビューすると暗転して絵が全く出なくなったり、イメージキャッシュが「あるはずもない絵を表示し続けたり」みたいなバグにいくつも遭遇すると、さすがに暗い気持ちにもなってきます。

 

新しい機能を追加したり、仕様を小変更することで、今まで安定していた部分が大きく崩れてしまうのなら、「そんな新機能いらんわ」という感情になっても致し方なし。

 

 

また、サブスクリプションの使用料金形態も、「不出来を許容する方便」になってしまっているのだとしたら、ユーザにとってはとんだ貧乏くじです。

 

 

「いや、これはたまたま、ケアレスミスで」と開発側は言うのかも知れませんが、こうしたミスが頻発してたら、決して「ケアできないミス」ではなくて、「ケアしようとしないミス」でしょう。

 

使う側としては、「ケアに至らない内部的な事情」すら邪推したくなります。

 

 

Creative Cloudを「アドビ税」とか言う人もいますが、システム要件の変化に追随してソフトウェアが安定して使い続けられ、機能も時代に合わせて向上していくのなら、「税」は喜んで支払います。

 

しかし、「税制」が「税を受け取る側の手抜きに繋がる」のなら、絶望しかないです。‥‥ぶっちゃけな。

 

私は職場とは別に、自分の自己研究用に2ライセンス分、つまり年間12万円をCCに支払っていますが、さすがに、1ライセンス分は削ってしまおうと思い始めています。多少やりにくくなっても、しょうがないです。今のAfter Effectsを含むCCに価値を見いだせなくなっています。

 

After Effectsの開発側の内部で、どのような変化が起きているのか、アウトサイダーの私は伺い知る事はできませんが、確実にAfter Effectsは不安定な動作状態になっている「今ここにある危機」があります。

 

 

ソフトウェアに限らず、アニメでも同じことが言えますが、会社の方針が変われば作品の傾向は変わりますし、現場の人員編成が変われば作品の品質も変わります。会社のブランドというものは、玄関の表札のロゴが作り出しているものではなく、中の人々が作り出しているのです。

 

After Effectsの「中の人たち」は何を想っているのか。After Effectsの今の状態を「これで良い」と想って送り出しているのか。

 

 

会社やグループ、そして個人においても、「良い波」「悪い波」の時がありますから、短気にならずに、まったりと接していくべきとは思います。

 

After Effectsも「今は悪い波の時だ」と心得て、ユーザとして、大局を見据えていこうと思っています。

 

 

追記:

RAMプレビューについて、YouTubeで「新バージョンで良くなった」的な映像が公開されてます‥‥が、

 

 

あのねえ‥‥‥‥、レイヤーが3つしかないような状況って何よ? しかも、再生がいかにも軽そうなムービーファイルのレイヤーで。

 

「劇軽」のコンポジションでデモしてみせて、高速になっただの、使いやすくなっただのって‥‥、まさか開発内部でもこの程度のコンポジション内容で「よし!うまくできた!」なんて言ってるんじゃないだろうな‥‥。怖いわ。マジで。

 

10〜20年前の頃は、開発マネージャーの方が時には米国の開発スタッフをも引き連れて、現場をよくリサーチしに来てくれていたものですが、最近はまるで無いよね。

 

あ〜〜‥‥あれか。アニメ業界はCS6でストップしてるから、アニメ業界にはリサーチの必要なし‥‥ってことかな?

 

でも、そういう制作グループだけじゃないんですヨ。

 

4Kで、レイヤー数も極めて多く、手描きで動かす動画だけでなく、手描きの原画をAfter Effectsで動かすような、重いミッションをこなす2017年のAfter Effectsの使用状況も、是非リサーチをしにきてくださると、After Effectsの未来の展望の一助にはなるかと思います。

 

編集ソフトでできるようなことを、After Effectsで再現してみせても、意味ないじゃん。編集ソフトは膨大なクリップ数からまさに「本編を編んでいく」ソフト、After Effectsは1カット1カットを「丹念に仕上げていく」ソフト‥‥で、同じ映像処理ソフトウェアでも意図も目的も大きく異なるのですから。

 


AE

今から20年くらい前、After Effectsのバージョン3.1から使い始めて、4.0や5.0へ進んでいく中、「After Effectsって、未来はどこまでバージョンがいくんだろうねえ。もしかして、バージョン20!‥‥なんてあったりして。うけけ。」と雑談しておりましたが、今やAfter Effectsはバージョン14。20もそう遠くない感じがしてきました。

 

アニメ業界では今でもCS5.5や6を使う会社も存在し、そのあたりもアニメ業界の今後の問題を象徴しています。実写作品のスタッフの方々と雑談をしていると、化石のようなバージョンを使い続けているアニメ制作現場の状況は、中々に忸怩たる思いに駆られます。

注)CS6はバージョン的には11ですが、年代的にはかなり前のバージョンで、私は職場や自宅では既にアンインストールして久しく、バージョンの内容も忘れております。CS6よりも古いCS5.5までになると、もはや霞むくらいにはるか昔の気がしますが、今でも使っている作品がある‥‥とは耳にしたことがあります。あまりにも古い機材を使い続けていると、機材更新の時に相当な物理的ショック(金‥‥ね)を受けると思います。恐ろしや。

 

After Effects自体にも、未来に生き抜くための課題は結構山積みのような感じです。今後はGPUなどを様々な処理に積極的に活用できて、とにかく速度向上を目指さないと、4K時代にAfter Effectsそのものが化石と呼ばれる日が来るかも知れません。ビデオプレビューなどの漠然と旧態依然とした、After Effectsの手つかずの旧式部分を、どんどん現在のニーズに合わせていく必要がありましょう。

 

一方で、After Effectsのスクリプト制御機能は、どんなに時代が進んでも、心強い味方です。

 

今どきのソフトウェアが、「こんだけ機能がミラクルになって、もはや、スクリプト制御なんて必要ないでしょ。だから、実装しないよ」とばかりにスクリプト制御機能を切っていくことが多い中、いざという時にスクリプトが使えるのと使えないのでは、状況への対応力が格段に変わってきます。

 

機能が豊富で未来的であることと、自動制御能力は、別腹です。

 

どんなに未来の映像を指向してても、やっぱりマウスとキーボードだけの手作業オンリーの選択肢しかないのは、制作体制の根本からドクトリンが変わってきます。手作業オンリーだったら、現場の生産計画や技術を低く見積もらなければなりません。可能を不可能と判断する愚行すら起こり得ます。

 

 

とはいうものの、スクリプトはやはり敷居が高く感じますし、実際に言語ガイドは英文オンリーで迷うことも多いです。

 

私の実感からして、After Effectsのスクリプトは、3つのポイントを踏まえれば、初心者でもイケそうに思います。

 

  • オブジェクトの継承(インヘリタンス)に気を使う
  • オブジェクトの階層構造に気を配る
  • オブジェクトとコレクションの扱いを理解する

 

‥‥の3つくらいかな‥‥と思います。あとは、普通のJavaScriptが展開されるだけです。

 

After Effectsの場合、様々なオブジェクトを扱います。レイヤーアイテム、コンプアイテム、AVアイテム、レンダーキューアイテム、アウトプットモジュール、etc...。

 

これらのオブジェクトの性質がどのような特徴を持つのか、把握しなければ扱いようがありません。また、どういう階層に存在するのかを把握しなければ、参照して情報を得ることすらできません。

 

そして意外に躓きやすいのが、After Effects独自のオブジェクトの扱いです。納得できれば、取り扱いに手を焼くこともないですが、特に初心の頃ですと、配列(単純な配列(Array)、ハッシュ、ディクショナリなど)の扱いそのものに手を焼くので、「コレクション」などという配列めいたオブジェクトに混乱するのです。

 

コレクションオブジェクトを理解できていないと、結構、色んなことができないですもんネ。

 

例えば、プロジェクト内の1番目のアイテムの名前を得るには、

 

app.project.item(1).name;

 

‥‥か、

 

app.project.items[1].name;

 

‥‥です。

 

アイテムを直に参照する場合は、[ ] ではなく ( ) を使い、なおかつ、インデックス番号が0ではなく1から始まるのも特徴です。

 

もし、配列を使った場合、このようになります。

 

var myArray = [app.project.item(1)];
myArray[0].name;

 

自分で生成したArrayの場合は、当然のことながら、JavaScriptのArrayを使うので、インデックス番号は0からスタートします。

 

これねえ‥‥、初心の頃だと、混同するんだよね‥‥。

 

 

でも、逆に言えば、そのくらいですかね、最初に気をつけておくべきことといえば。

 

あとは、レイヤーとして実体はあるものの、アイテムとしては存在しないテキストレイヤーとか、After Effectsの内部事情をおいおい理解していけば良いくらい‥‥ですかね。

 

 

ちなみに、After Effects流儀のインデックス番号に合わせて、ケアレスミスを防ぐには、Arrayの先頭にnullでも入れとけば、番号を揃えられます。ノウハウとも言えないくらいシンプルな方法ですが。

 

var i=1;

var myArray = [null, app.project.item(i)];
myArray[i].name;

 

 

After Effectsならではの基本的なことを踏まえておけば、After Effectsのスクリプト作りは大して難しい事でもないのです。

 

基本的なところを踏まえずに、唐突に始めて、すぐに壁にぶち当たって‥‥みたいな、「独り相撲で難しく」しなければ、案外、After Effectsの自動制御は理屈で覚えられると思うんですよ。

 

でもまあ、その「基本の理屈」を教えられる人材に乏しいのも、アニメ業界の現場の行き詰まりではあるのですけどネ。構造を理解していない人が、短期で得たノウハウだけでプログラムを教えようとしても、学習する側の人間が余計混乱する事態を招きますしね。

 

 

After Effectsは設計こそ少々古さを感じる昨今ではありますが、名実ともに日本のアニメ業界を支えるソフトウェアです。日本のほとんど全てのアニメは、CoreRETASではなく、NUKEでもなく、After Effectsがコンポジットしているのですから。

 

After Effectsはエレガントではないかも知れませんが、「映像のクラフトマンシップ」に応える質実剛健なソフトウェアです。

 

After Effectsがもしバージョン20までいったら、ぜひ「Anniversary V.20」のイベントでも開けるといいですネ。


Math.sin()を手に馴染ませる

前回紹介したMath.sin()関数は、10数年前からAfter Effectsに実装されているものの、少なくとも私は、たまに使っては忘れ‥‥を繰り返し、すぐにsinとcosの関係性を忘れます。毎日のように使っていれば覚えたまま忘れないんでしょうけど、中々に出番の少ない関数なので、必要になるたびに記憶から掘り出す始末です。

ちょっと余談ですが、円運動というのは、真正面から見て等速に動いていても、横から見るといわゆる「両端詰め」の動きに見えます。アニメではよく両端詰めの動きが出てきますが、そうした多くの動きは関節(や接合部)を基点とした円運動の変形でもあります。もちろん、すべての動きがそうであるわけではないですが、例えば、力を抜いた腕がフラフラ動くのは、変形した円運動の典型と言えます。円が変形すれば楕円や8の字になり、そこにエネルギーの加速減速が加味されれば、いわゆるリアクションをたっぷり含んだキャラの動きが出来上がります。‥‥アニメーターの方なら、思い当たるのではないでしょうか。

After Effectsでは、そうした円運動をプログラム文で表現することができます。エクスプレッションという「プチ・プログラム」をレイヤーの位置や回転や不透明度に適用することで、規則的(不規則な動きも表現できますが、とりあえず)な動きをキーフレーム無しで表現することが可能です。

例えば、レイヤーの位置に、

value+[time*100,0];

‥‥と書き込めば、1秒あたり100ピクセル、右に向かってレイヤーが移動する動きを作れます。

この機能を利用して、Math.sin()、Math.cos()、そして円周率のMath.PIを用いれば、様々な円運動を作り出せます。以下は、基本的なバリエーションです。


*1080p60で再生すると、滑らかな2K60pの動きを見れます。
*半径を「486px」にしているのは、画面内に収まりつつ、54px(1080/2/10=54)間隔のグリッドに綺麗に接するためです。

X軸とY軸のそれぞれの動きが組み合わさると円の軌道へと変化する様子は、ビジュアルで見れば、なるほど‥‥と感覚的に納得できるのではないでしょうか。円運動なんて、映像制作に全く関係ない人でも、日常で見慣れているありふれた要素ですが、その成り立ちを明確に認識しているのは、まさにプロの映像制作者の特質と言えます。

上図のMath.sin(),cos()の使い方を覚えておけば、After Effectsにおいて規則的な円運動で困ることは無くなります。‥‥と、自分の忘備録代わりに書いておこう。

ちなみに、頭脳パズル的な考えで、8の字の動きもエクスプレッションで表現してみました。8の字を描くためには、どのような軌跡を辿れば良いのか、プログラム文でパズルを解いてみます。



簡単なのは、左側の上下に軌道が偏った8の字のタイプです。意外に難しかったのは、右側の正円2つを組み合わせたタイプで、上下の往復を表現するのに手間取りました。

こうした円運動の動きは、ランプの点滅などにも応用できますし、自分流のwiggle(揺れ)を作る元ネタにもできます。

素材待ちの暇つぶしに、どうぞ。

ちなみにMath.PI

ちなみに、前回のテスト映像で左右に往復する球の動きは、sin関数を使っております。sin()なんてほとんど使わないから、すぐ忘れるんですけど、アニメ的に言えば、要は円運動に活用する関数です。

ただ、そのままですとタイミングが扱いにくいので、時間に円周率「Math.PI」をかけてやって、1周期1秒へと標準化して使うのが良いです。

以下のようなプログラム文をエクスプレッションに適用するだけで、レイヤーを左右に往復させる動きを作れます。

val=Math.sin(time*Math.PI)*(thisComp.width/2);
value+[val,0];


もし、球を画面中央からスタートさせず、右端か左端からスタートさせたい場合は、timeに0.5をオフセットしてやるだけです。例えば、timeを(time+0.5)のように。‥‥またはsin(サイン)をcos(コサイン)に変えても同じ結果が得られます。

「thisComp.width/2」は、画面全体を往復するために、画面の横幅を取得して2で割っているのです。ここを自分の好きな数字に置き換えれば、そのように動きが変更されます。

理屈は簡単。でも、プログラム自体を避け続けていると、妙に難しく感じてしまうものです。

私は手ぶれや画面ブレなどの生っぽい動きにはエクスプレッションの関数(randomやwiggleなど)は使わず、自分の動きの感性を反映させるためにあえてキーフレームを手打ちして、尺が長い場合はloopOut()などで延長しますが、コンピュータの得意な機械的な動き=算術が活きる動きの場合は、sin()などのJavaScript Mathを用います。

使い勝手は人それぞれだとは思いますが、私の場合は、周期的な円運動や振り子の往復の場合は、エクスプレッションで対応することが多いです。

After Effectsのキャッシュ問題

After Effectsでメモリを大量に消費するコンポジションをレンダリングすると、キャッシュが混乱してイメージキャッシュの相違が発生することがあります。

「After Effectsで作画する」ような重い処理を、さらに積み重ねて極度に重くした際に、発生しやすくなります。

障害例は「エフェクト(プラグイン)が外れて見える」「存在しない絵が存在する」など、まさにキャッシュの混乱による症状です。

例えば、レイヤーを全て非表示にしても、絵が画面に残る‥‥などの奇怪な(理屈で説明できるから「怪」ではないんですが)現象が発生します。もちろん、シャイレイヤーが隠れていた‥‥なんてオチではないですヨ。

障害を除去するのは、「全てのキャッシュをクリアする」コマンドを実行すればOKです。200GBとかヤバい量のキャッシュを、After Effectsは平然と溜め込みますからね‥‥。

この障害が怖いのは、「いつからキャッシュのゴーストが悪さをしているのか」、作業をしている最中では気づきにくい点です。After Effectsの動作上の不具合ですが、まあ、いつ解消されるかもわからん障害ですから、今の所は、定期的にキャッシュをクリアして、混乱しているであろうバッファを手動でリフレッシュするのが簡単な対処法です。

4Kの「デジタルアニメーション」のような、今のマシンにとって負担の大きいレンダリングを実行する直前に、キャッシュをクリアしておくのが確実です。

ちなみに、After Effectsの隠し環境設定の「シークレット環境設定」を使えば、レイヤーキャッシュを無効にできるんですが、不具合が出るのは内容が重い時だけなので、一緒くたに無効にすることはないですから、特にONにはしておりません。

Expメモ:loopのきかないプロパティをvalueAtTime()で

アマチュア・学生向けの教材を作る最中、loop関数の適用できないプロパティをループしたい場合、どのようにすれば良いか、ふとマジメに考えてみました。エクスプレッションで効率化を図れると言いながら、トーンカーブやメッシュワープで簡単に頓挫するのもブザマなので‥‥。

loop関数に頼らなくとも、現在時間をリピート区間で「%(割り算の余り)」すれば簡単にできそうだ‥‥ということで作ってみました。まあ、古典的な方法スね。

valueAtTime(time%key(numKeys).time);

これならば、メッシュワープのディストーションメッシュにも適用できます。実際、これでとりあえず、うまくできました。

loopOut("cycle"); ‥‥とほぼ似た動作になりますが、1つだけ問題があります。

上記エクスプレッションだと、レイヤー開始時間のオフセットがきかない‥‥のです。

まあ、考えてみれば、timeを何の加工なしに使うやり方なんて、コンポジション先頭からループの開始時点が始まってなければ、簡単に破綻する書き方です。使い勝手がよくありません。

レイヤーのstartTimeを使って、レイヤーをタイムライン上で右左に位置をずらしても通用する書き方だと‥‥

valueAtTime((time-startTime)%(key(numKeys).time-key(1).time)+startTime);

‥‥となります。できれば「loopOut("cycle"); 」くらいに、暗記できる短い命令文にしたかったのですが、私の知恵では無理です。1行で収めるのがやっとです。

これですと、まさにloopOut("cycle")と同じ使い方が可能です。ただ、モーションブラーではtimeが先頭に戻る瞬間に変な絵が出ちゃうかも知れません。とりあえず、私の試した範囲では大丈夫でしたが‥‥。
*注)0,10,20,30,40,50→0‥‥みたいなサイクルですと、50から0に戻る際に、モーレツなモーションブラーがかかる場合があります。これはキーフレームのコピペでも同じことではありますが。

ちなみに、key(numKeys)、つまりラストのキーフレームの値は、開始点のキーフレームと同じ値でないと、うまくいきません‥‥のは、loopOut()も同じすネ。また、キーフレームの繰り返しを実現するエクスプレッションなので当然ではありますが、適用したいプロパティにキーフレームが最低2個以上存在しないとエラーになります。

そんなこんなで、CC2015のエクスプレッション言語メニューを久々に眺めて回りましたが、‥‥あれれ、昔より要素が増えて、使いやすくなってます‥‥かね? 単に昔の私が幼稚だっただけかな‥‥。まあ、プログラムって、構造を理解するまでは迷宮みたいなものですもんネ。

注記:漠然とkeyやstartTimeなどと書いた場合、暗黙のうちに「me」「this」が対象となります。thisLayer, thisCompなんて書かなくても良いわけです。使い回しが効いて、短い文のエクスプレッションを書くには、暗黙の対象をイメージするのが良いスね。


calendar

S M T W T F S
   1234
567891011
12131415161718
19202122232425
262728293031 
<< August 2018 >>

selected entries

categories

archives

profile

search this site.

others

mobile

qrcode

powered

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