世の中、予測できない事ばかり

よくよく考えてみると、今では平然と受け入れている事が、ちょっと前までは予測できなかった事だった‥‥なんていうのは、結構、いっぱいありますよネ。

16年前、フィルム撮影台が業界から消え、老舗のフィルムメーカーが倒産し(または破産法の適用や事業撤退)、映画館からもフィルムが消えはじめる‥‥なんて予測できなかったもんね。

10年前、誰もがスマートフォンを所有し、至る場所で覗き込んでる‥‥なんて予測できなかったし。

15年前、Apple製品がこんなにも世間に普及するなんて、誰が予測できただろうか?

あんなに普及しまくったVHSは? S-VHSのテープがまともに再生できなくなるなんて。

ブラウン管は? MDは? まともな馬力のバイクは?


そうこう考えると、現在において常識的で定番ですぐ傍にあるものが、何かに取って代わられ消滅する事を、誰が的確に予測できるんだろう?‥‥と思います。

みんな「当然の結果だ」的な面持ちで、現状を許容してるけど、実はほとんどの人が的確に予測できてないよネ。もちろん、私もその未来を予測できない人のひとり、ですけども。

実は私、ココロの底では、24コマフィルム互換のアニメの作り方は、そう簡単に廃れないと思っています。ちょうど17年前の私が「フィルムとデジタルの2本柱で進む」と考えていたように。だって、100年続いたモノだし。

しかし、どうも、予測は外れています。普及してたり、定番である事は、「普遍である事」へのなんの裏付けにもなってません。

まさかフィルム撮影台を各社が廃棄するなんて考えもしてませんでしたし、皆がデジタルへと移行するとも思ってませんでした。2つの方式が共存する‥‥と思ってたのです。‥‥でも、そうなってない。

今のわたし的には‥‥

「24コマフィルム互換の制作方式は未来の進化に追随できない」
=私の感情の右側面

「これだけ歴史のある作り方がそうそう簡単になくなるはずがない」
=私の感情の左側面

‥‥のようなココロもちなんですが、本当に「なくなるはずがない」のかな?

新しい方式が台頭して、規模は縮小するかも知れないけど、‥‥‥って、また同じ読みをしている自分がいます。

「愛着」が読みをブレさせているようにも思います。‥‥私の今までのブログ、やや極論めいた事を書き綴ってるのは、過去の自分の読みの甘さへの「𠮟咤」的なスタンスも多分に含まれているのです。

デジカメは最初普及しませんでした。QuickTake200というデジカメを持ってたのでよくわかりますが、最初の頃のデジカメは、カメラの代わりには「まったく」なりませんでした。しかし、次第に性能が上がって、画質が向上し、電池の保ちも良くなり、メモリ容量も増えると、あっというまに普及し、人々はあっけなくフィルムカメラを捨てました。今じゃフィルムカメラを使っている事が「珍しい」くらいです。

この図式って、どんな事にもあてはまりますよネ。

「デジカメとアニメは違う。アニメはツールではなく、作品表現だ。紙に描く絵は独特の暖かみがあるし、24コマの動きは趣がある。」‥‥う〜ん、そうかな。作品表現の視野で語るのならば、デジタルで描いても、描く人が描けば、充分、暖かみのある絵になると思います。紙を使ったからって無条件に暖かくなるとは限らないですよネ。デジタルは、紙とは違うかけひきで、より一層、赤裸々に自分が出ちゃう事だってあります。近い未来、よりクリアで流麗で高密なモーションのアニメが、ストレスを感じさせない映像として一般層に受け入れられる事も、充分予測できます。多くのアニメ好きの人々は、紙と24コマにこだわってるんでしょうか?‥‥思うに、アニメという表現が好きなんじゃないですかネ。

受け取る人々にとっては、「手段ではなく結果」が重要なのだと思います。新しい手段によって、より一層「心地よい結果」を得られるのなら、人々は容易にそちらに流されていくもの‥‥だと感じます。

「普遍」と思われていた事、「常識」だと受け取られていた事は、2〜3年で簡単にコロリと入れ替わるんだ‥‥という事を、この10年間だけでもたっぷりと学びました。

まさかな‥‥王者コダックがあんな事になるなんて‥‥。まあ、中途半端なデジカメ出してたりして、歴然と「乗り遅れ感」を醸し出していたけど‥‥。これからは「プリンタ事業を主軸」?‥‥う〜ん、読めない。

他人事じゃないよ。きっと。

バンダーブック

私が小学生の頃、1979年の夏、友だち数人で高田馬場にある「手塚プロ」に、「アポ無し見学」を慣行した事があります。アニメ雑誌が出版されるようになって、住所とかを頼りに、今考えれば無謀な見学を、男児数人が決行したわけです。

夏休みの時期ではありましたが、世間的には普通の日。妙に早い時間に待ち合わせしたのが裏目に出て、通勤ラッシュのど真ん中にブチあたり、赤羽線と山手線を乗り継いで、高田馬場へと小学生たちが降り立ったのでした。

手塚プロの前に着くと、みな怖じ気づいてしまい、「誰が先にいく?」とかしょうもない事でモメてました。結果、一番度胸のあるアベチャンが先陣を切り、階段を上がっていき、

「スイマセーン! 見学させてくださーい!」

と廊下で叫びました。

みな、小猿のようにキャッキャとドキドキしながら待っていると、オジさんが出てきて、「今日はあいにく、見学できない日なんだよ。xx曜日に来ると見学できるよ。でもせっかく来てくれたから、これをあげよう。」と言って、一旦戻って、「バンダーブック」(1978年テレビ放映)のセルを持ってきて、子供たちに1枚ずつくれたのでした。

オジサンがくれたのは、主人公「バンダー」の描かれたセルでした。もらった小学生各自の、その後の対応はさまざまで、奇麗に保管する子供もいれば、しきりに手にとって見る子供もおり(=これが私)、中にはプラモデルのカラーで横に模写する子もいたり‥‥と。

見学の段取りの「情報」など全く知らず、アポなしで制作会社を尋ねる子供たち。門前払いせずに、逆に子供たちにプレゼントをくれるオジさん。

‥‥ええ時代だったね。

アニメは好きですよ。子供時代の楽しくて幸福なアニメの思い出も多いですからネ。

ちなみに、セルがコレクターアイテムとして認識され、「セル泥棒」などの犯罪が発生し始めるのは、これから3年後くらい、「アニメキャラ人気」がアイドル的な様相を呈するようになってから‥‥です。「うる星やつら」あたりは、その被害の的だったようです。壁に穴をあけて未使用のセルを強奪するトンデモな犯罪もあった‥‥とは被害関係筋から聞いた話です。

これから未来。様式を受け継ぐ人、精神を受け継ぐ人、色々あって良いんじゃないですかネ。

ギリギリで良し

最近よく思うのは、「奇麗にうまくまとまる」のって、実はボルテージは相反して下降しているんじゃないか‥‥って事です。

Blood-2Kやイノセンスはほんとにギリギリで作った作品でしたが、映像上に、明確にそのパッションが映し出されています。

何が起こるか解らない、何の保険もない、一生懸命取り組む事でしか結果を保証されない(‥‥いや、保証もないよね、未体験ゾーンだから)、危うい状態が持続し続ける。

作っている時は、プレッシャーで押しつぶされそうになりますが、その重圧・苦しみは後になって、必要不可欠だったと言う事がわかるのです。

プレッシャーの無い作品作りは、アカンですネ。余裕でこなせる作品は大体ダメです。

もっと極端に言えば、技術が発達して定番化・固定化した上で、作品を作ると、「打算的な作品表現」になりますわな。

すげー、皮肉な構造ですが、実際そうだよネ。

技術をより完成されたものへと高める「その闘争」が、作品を勢いづけるので、技術が完成の域に達すると、その「おごり」が作品にも表れ、やがて「腐朽」が始まるのです。

「これでようやく楽ができる」なんて言ってちゃ、やがて滅ぶよ。

私は今、ギリギリな感じで辛いのですが、逆に「だから上手くいきそうだ」と、経験上、解るのです。

around50は

45〜55歳の世代は、テレビアニメが黄金期の頃に、少年少女だった世代です。

今、その頃のアニメ雑誌を読み返すと、何とも切ない気分になります。

アニメの放映は午後7〜8時のゴールデンタイムがあたりまえ。各局でアニメ番組を繰り出していました。誌面にはそんな当時の雰囲気が溢れています。

花の子ルンルンやキャンディキャンディ、ダイターン3(ガンダムの前)が本放送中! 新番組が宝島! 一休さんは放映期間が長過ぎてイマイチ時代の感覚がわからんけど本放映中! 初の24時間テレビのアニメ「バンダーブック」制作快調!‥‥‥1978〜79年の雑誌には、当時の「今」が映し出されています。

1980年になると、松本零士アニメが全盛になります。雑誌には「松本零士・手塚治虫・石森章太郎」の対談記事! ‥‥‥‥‥感慨無量。


何とも苦笑してしまうのは、1980年の雑誌にも「若いアニメーターの養成が必要」とか「アニメ界をどうしていくか」みたいな特集・対談が載っている事です。これって、つまりは‥‥。

傾向として、アラウンド50の世代は、こうした時代のあれこれを、インプリンティングされているので、どうしても、その感覚が今になっても根底に残り続けています。私もそうですが。

でもさ。35mmに24コマで作って、テレビのゴールデンに放映してた時代をいくら懐かしんでも、もう還らないんです。

テレビの役割も変わって久しいですしネ。テレビが家庭の娯楽の中心だったのは、今となってはもう随分昔の話です。

どんなに懐かしんでも、「昔のスタイル」には戻らない事だけは、歴史が身をもって証明しております。江戸を懐かしんでも、世の中はもう江戸には戻れないですよネ。どんなに懐かしんでも、「昔のアニメスタイル」にも「昔のテレビ」にも戻れんのです。

私らの馴染んだアニメは、単にスタイル=様式の1つに過ぎなかったんだ‥‥としみじみ思います。

「アニメのスタイル」が重要なのか、「アニメーション」が重要なのか、これから進む道を、各自が選択していくしか、ないでしょうネ。強制など誰もできないです。

自分の人生の行く末をフィルムスタイルアニメの終焉にシンクロさせるか、アニメの原点に立ち戻って新しい道を行くか、‥‥ダネ。


ちなみに、昔のアニメージュとかを読むと、読者投稿イラストに、現在活躍中のベテランの方の名前をひょっこり発見したりします。うーむ、当時から巧いですネ。

新型MacPro、それでも

新型Mac Proが、やっぱり、話題になっておりますネ。まあ、驚きますよネ、まずあの外見。

円盤ドライブがないとか、カードが差せないとか、‥‥さすがにそういう意見は少ないようです。さすがに、皆、もう気付いてるんでしょうネ。iMacやiPhoneの時の経験で、その類いの論調が恥ずかしい類いのものである‥‥という事を。

実際、円盤ドライブなんて、本体にはもう要らんしネ。家庭用途ならまだしも、作業ではほぼ出番は無いです。使う時だけ、USBのBDドライブ(6千円くらいで買えるヨ)を繋げばそれでOK。

ただまあ、4Kのアニメーションを自己研究している私としては、今回の新型MacProでも、性能は足りんだろうなあ‥‥と感じています。「1280ピクセル幅の映像作品をPowerMac9600くらいで作る」ような手応えだろうなと感じます。

PowerMac8600(9600は高過ぎて手が出なかった)を買った1997年末。640x480‥‥つまりSDクラスの映像が普通に扱えるようになりました。PS1とかの320x240とかは楽勝で扱えるようになりましたが、1280や1440の寸法だと「作れるけど、重い」感じでした。1920pxなど論外。

2013年現在。ちょうど、体感が「1段」ずれた感じの状態です。16年前のSDがHDに、1280が4Kに、1920(HD)が8Kになったような感触ですネ。

つまり、8600や9600とかで1280pxのハイクオリティアニメーションを作る「あの手応え」が、今度出る新型MacProで4Kハイクオリティアニメーションを作る時と似たような手応えになるのだと思います。Blood-2K(2000年公開の初代のBloodの事ネ)やイノセンスを9600/300とかで作るイメージでしょうか。

「うわー。遠いなあ‥‥」と思うでしょうネ。私も同感。。。

多分、値段も「あの頃の値段」に戻るんじゃないでしょうかネ。おそらく、どんなに安くても、40万以上にはなり、標準構成だと50万はオーバーするかも知れません。

今回発表されたモデルが「9600的」だとしたら、購入のハードルを下げた「8600的」なモデルが「もしかしたら」追加されて、30万円代で出してくれる「かも」知れません。実際、4Kと2Kのモニタが1台ずつ繋げれば仕事はできるし。ビデオ性能を半分にしてもプロ用にはなるよ、Appleさん。

ふと、物思いにふけると、2003年以後の10年間は、そういった意味じゃ、「マシンに苦労しなくて済む平和な時代」だったのかも知れませんネ。

性能が格段に向上したPCを用い、旧来の作り方を踏襲して作る。「マシンの性能が制作手法に対して優位に位置できた」平安の時代だったのかも知れません。そのかわり、スケジュールはこの10年でズタボロになったけどネ。

初めて国産アニメが劇場公開されたのが、大正6年、1917年の事らしいので、そろそろアニメも100歳くらいになるはずです。初の国産劇場アニメは、「いもかわむくぞう」という「天然色活動写真株式会社」というところで作ったアニメらしい事が、手元の書籍で確認できます。

4Kの48FPS、96FPSが姿を見せ始めるのと同時に、フィルムベース(フィルムを使ってなくてもネ)の今のアニメの作り方が決定的に旧時代のものへと老いていくのが、明瞭に想い浮かびます。人間もそうですが、老け始めると急速に老いが進行しますからね。2014〜2020年って、もしかしたら、アニメにとっては「王朝の交代」くらい大きく変わる時期かも知れません。もうちょっと後?(2018〜2024くらい?)の6年間かも知れませんが、どちらにしても、同じ原理で100年頑張ったんだから、アニメって凄いよネ。

4K/96FPSには、もうどうやっても、今の作り方じゃ対応できません。今以上のアップコンをしても、さすがに受け手だってその「かさ増やし」には気がつきますよ。

時代の終わり。残酷かも知れませんが、アニメだって、その前の何かの座を奪い取って、今の立ち位置を確立したのですから、「宿命」としかいいようがありません。昔のアニメ雑誌(1978年のアニメージュとか)の対談記事とかを読むと、当時のアニメが「旧来の色々な何か」を駆逐していった事が読み取れます。


新しくMacProが発表されましたが、未来の展望を考えると、「その先」のマシンの事、そして作品作りの事を考えずにはいられない、私でした。

来たーMacPro

WWDCで何らかの発表があると睨んでいた新しいMac Pro。「年内発売予定」として、紹介されたようです。

姿はなんと円筒形。しかもかなりコンパクト。




驚くのは、基盤の組み込みかた。なんと、三角柱のように組んであります。





天井部のダクトのような部分に「シロッコファン」みたいのが付いてて、それで空気を循環させるようです。




12コア。‥‥ちまたでは20コアとかも囁かれていたので、まあまあ、これは予想の範疇でしたネ。既に12コアモデルって、あったよネ。

モニタはなんと4Kを3モニタまで繋げるようです。





まあ、これから先(というか、直近でも)を考えれば、4Kに対応してなきゃ、「プロ向けマック」とは言えないですもんネ。


最近のMac Proは買うに値しない製品に成り果ててたから、ようやく「正常な流れ」に復帰してくれたように思います。

‥‥まあ、タワー型のマシンを買ってプロ気分‥‥なんて今どきあり得ないのはAppleも解ってたんでしょうネ。なので、ユーザの失望覚悟で現行MacProを売り続けて、ウラで新製品を開発してたんでしょう。

MacOSXの次期バージョンも紹介されましたし(Sea Lion‥‥というのは冗談ですネ)、ひとまず、「Apple家電メーカー化」は踏みとどまった感があります。

このマシンがG4Cubeのような顛末にならない事を願いつつ。。。

自分にとってのプログラム

AppleScriptやESTKを、映像の表現者が用いて、自家製のアプリを作る目的は、「自分の制作環境を強化する」事です。なので、

  • 必要十分な機能(=至れり尽くせりは無用)
  • 短い開発期間(=本業は映像表現)
  • 自己の環境で動作すれば良い(=誰もが使える事を目指す必要なし)

‥‥というアウトラインになります。作ったアプリを売る訳ではないので、広範な互換性は必要ないですし、エラー対策も大げさにせずに済みます。

思うに、開発で何が一番面倒かというと、互換性とエラー対策です。例えば、対応するQTのフレームレートは、今だと、23.976, 24.0, 29.97DF, 29.97NDF, 30.0でよろしいかと思いますが、QT自体はそれこそ1.0とか10とか20などのフレームレートも許容していますので(Seconds Per Frameなんて事もできる)、全部に対応しようと思ったら、それだけでかなりの時間を費やす事になります。

当座は、自分と自分のワークグループだけで動作すれば良いのですから、互換性とエラー対策は大幅にカットできて、アプリの完成までの時間を短縮できます。規模の小さいものなら、数十分〜1時間未満で出来上がる事すらあります。完成したら、即使用開始できます。

「でもさ、そういうことって、プログラムが出来る人の言い草じゃん」‥‥とか思う人もいるでしょう。

自分はスクリプトやアプリなんて作れない‥‥なんて思ってたのは、私も同じ。コンピュータのコの字も学校では学びませんでしたが、After Effectsの習得と同じ時期から、スクリプトやプログラムも独学で学び始めたのです。‥‥独学とかいうとカッコいいですが、要は虫食いで「できそうな事から始めた」のです。

マウスクリックやドラッグ&ドロップ‥‥。コンピュータの要求する動作を、自分が延々と「やらされ」続けていると、やがて疲弊が極限に達する‥‥と、コンピュータを使い始めて早々に感づきました。ゆえに、コンピュータとの「つきあいかた」を考え、その1つの手段として、「自分でプログラムを作って、コンピュータを使う」事を意識し始めたのです。「誰かが作ったプログラムを使うだけ」ではなく。

プログラムって、特別な才能を持った人が作るもんだ‥‥などと、妙な劣等感視線や先入観がありますが、そんな事は無いですネ。

才能とか素質とか言う以前に、「やるか、やらないか」です。最初っから「完璧に覚えよう」とし過ぎるんじゃ無いですかネ。多くの人は。

まずは、「これは手作業じゃやりたくないなあ」と思う事から、取り組んでみれば良いのです。虫食いで全然構わないと、私は思います。

「基本を完璧にマスターしてから」とか玉砕必至の目標を掲げるから、いつまでも身につかない‥‥のかも知れません。「基本を完璧にマスター」‥‥だなんて、学校のように「強制力」があるような環境でしか成就できないと思いますしネ。本業の片手間でやるんですから、1日中学校に通って習得するスタイルを導入しようと目論んでも、上手くいくはずが無いです。

虫食いでも、やり続けてりゃ、覚えますよ。‥‥で、やらなきゃ覚えられない。永久に。

この「今さらのAppleScript」はメインコンテンツ部分の草稿的なモノをどんどん書いているゆえ、細部の解説がおざなりですが、まずはひと通り書きおえて、推敲の段階に入ったら、細部の解説も付加していこうと考えてます。

初心の状態では呪文にしか見えないスクリプト文ですが、実は日本語や英語に比べて、遥かに簡単です。日本語で例えると、小学校3〜4年生レベルの文法だけで、「After Effectsの自動コンポ作成」アプリだって作れちゃいます。

スクリプト文では、「構成で気配や雰囲気を伝える」とか「韻を踏む」なんて必要ないですからネ。

テスト用のダミーQTファイルを自動作成

現在の現場は、静止画連番ではなくQuickTimeが主流となっているようです。今まで、限界値の低いAVIを使ってみたり、遠回りしてきたよねえ‥‥。

しかし、また連番の時代がくるかも知れませんよ。特に劇場は。‥‥QuickTimeも結構(良い意味でも悪い意味でも)枯れてきてますからネ。

さて今回は、「各種、自動処理に用いる」ダミーのQTファイルを、AppleScriptとESTKの連携で、自動作成してみようと思います。今までは、空のファイルを偽素材として生成していましたが、今回はちゃんとしたQuickTimeフォーマットの「架空カットのQTファイル」を作ります。

使うのは、FinderとAfter Effects。

After EffectsではESTK〜JavaScriptを用いて、

  • プロジェクトの作成
  • コンポジションの作成
  • ボールドとなるレイヤーの作成
  • 実映像となるレイヤーの作成
  • レンダーキューへの追加

‥‥を、AppleScriptの助けを借りながら、自動処理します。

今回も長い文なので、早速、以下に記します。

--ここから

property COMPOCOUNT : 30

set AppleScript's text item delimiters to "" --text item delimitersを初期値にリセット

tell application "Adobe After Effects CS6"
    DoScript "app.exitCode=0;"
   
    DoScript "if(app.project.renderQueue.rendering){app.exitCode=-1;}"
    if result as integer < 0 then return --もしレンダリング中なら中止
   
    DoScript "if(!app.project.close(CloseOptions.PROMPT_TO_SAVE_CHANGES)){app.exitCode=-1;}"
    if result as integer < 0 then return --もしAfter Effects上でプロジェクトが開いていて、ユーザが閉じるのを拒否した場合は、中止
   
    set res to text returned of (display dialog "カットを作る数を入力してください" with icon note default answer (COMPOCOUNT as text)) --コンポジションを作る数(100くらいまでが適当でしょうかネ)
    try
        set res to res as integer
    on error msg
        beep
        display dialog "数は半角数字のみ、200以下の数値で入力してください" with icon stop buttons {"中止"}
        return
    end try
    if res > 200 then
        beep
        display dialog "200以下の数値で入力してください.

200以上のカットが必要な場合は、プログラムを修正する必要があります." with icon stop buttons {"中止"}
        return
    end if
   
    set COMPOCOUNT to res
end tell

tell application "Finder" --レンダリング先をFinderで作ります
    set folderPath to make new folder at desktop with properties {name:"テストQT_" & (do shell script "date +%y%m%d-%H%M%S")}
    --open folderPath
    --set bounds of window 1 to {900, 20, 1600, 460}
end tell

set compoPreset to {compoWidth:1920, compoHeight:1080, fps:24, boldFrames:8, user:"ezura", renderSettingsName:"16bit-23.976fps", outputModuleName:"ProRes422(HQ)", outputPath:folderPath as Unicode text}

set title_scene to "ani_05_" --カット名のタイトルとシーン *もしアンダーバーで各要素を区切らない命名規則ですと、エクスプレッションとの兼ね合いにより、うまく動きませんのでご了承ください
set cutList to {}
set durList to {}
set contList to {}

repeat COMPOCOUNT times --コンポジションの内容物を、指定の数量で作ります
    repeat
        set cutN to 1000 + (random number from 1 to 300)
        set cutN to (characters 2 thru -1 of (cutN as text)) as text
        if title_scene & cutN is not in cutList then exit repeat
    end repeat
    set cutList to cutList & (title_scene & cutN)
    set dur to (random number from 1 to 8) * (fps of compoPreset) + (item (random number from 1 to 12) of {0, 0, 0, 2, 6, 8, 12, 12, 12, 18, 21, 22}) + (boldFrames of compoPreset)
    set durList to durList & dur
    set contList to contList & (item (random number from 1 to 4) of {"(-.-)", "(^v^)", "(*_*)", "(~_~)"})
end repeat
cutList & durList & contList

tell application "Adobe After Effects CS6"
    DoScript "var aep=app.newProject();"
   
    repeat with i from 1 to COMPOCOUNT --以下ESTK中心のスクリプトです.AppleScriptも手助けします.
        DoScript ("//各種設定を変数に書き込みます
var fps=" & fps of compoPreset & ";
var w=" & ((compoWidth of compoPreset) as Unicode text) & ";
var h=" & ((compoHeight of compoPreset) as Unicode text) & ";
var cutName='" & item i of cutList & "_t" & (random number from 1 to 3) as Unicode text) & "';
var dur=" & ((item i of durList) as Unicode text) & ";
var boldFr=" & ((boldFrames of compoPreset) as Unicode text) & ";
var dispDur=dur-boldFr;

//新規コンポジションを作ります--尺は一旦コンポを作ってから改めて適用します
var comp=aep.items.addComp(cutName,w,h,1,1,fps);
comp.duration=Math.floor(dur/fps)+currentFormatToTime(dur%fps, fps, true);

//ボールドの背景を作成します
var sldLayer=comp.layers.addSolid([0.75,0.75,0.75],'BOLD',comp.width,comp.height,comp.pixelAspect,currentFormatToTime(boldFr, fps,true));

//カット名表記--エクスプレッションを''にしてオフすると、カット名と尺の表記になります
var textLayer=comp.layers.addText(cutName+'¥r('+String(Math.floor(dispDur/fps))+'+'+((String(dispDur%fps+100)).slice(1))+')');
setTextContents(textLayer,'Arial Black',comp.height/6,[0,0,0],0,ParagraphJustification.CENTER_JUSTIFY,[comp.width/2,comp.height/20*7],¥"thisComp.name.split('_').slice(0,3).join('_');¥",[0,sldLayer.outPoint]);

//テイク番号と尺の表記--名前の都合がエクスプレッションと合わない場合は、オフにしてもよいかと
textLayer=comp.layers.addText('');
setTextContents(textLayer,'Arial Black',comp.height/9,[0,0,0],0,ParagraphJustification.CENTER_JUSTIFY,[comp.width/2,comp.height/5*2],¥"n=thisComp.name.split('_');f=timeToFrames(thisComp.duration-outPoint,fps=1/ thisComp.frameDuration,true);'¥¥rTake '+n[3].slice(1)+'¥¥r('+(Math.floor(f/fps))+'+'+(String(100+f%fps)).slice(1)+')';¥",[0,sldLayer.outPoint]);

//作業日と作業者の表示
textLayer=comp.layers.addText('" & (do shell script "date +%y.%m.%d¥¥ %H:%M:%S") & "'+'¥rby " & user of compoPreset & "');
setTextContents(textLayer,'Arial Black',comp.height/15,[0,0,0],0,ParagraphJustification.CENTER_JUSTIFY,[comp.width/2,comp.height/5*4],false,[0,sldLayer.outPoint]);

//本映像のBGベタを作成します--ランダムで色を変えています
var bgLayer=comp.layers.addSolid([" & (((random number from 3 to 9) / 10) as Unicode text) & "," & (((random number from 3 to 8) / 10) as Unicode text) & "," & (((random number from 3 to 8) / 10) as Unicode text) & "],'BOLD',comp.width,comp.height,comp.pixelAspect,comp.duration);
bgLayer.inPoint=sldLayer.outPoint;
bgLayer.outPoint=comp.duration;

//本映像の顔文字
textLayer=comp.layers.addText('" & (item i of contList) & "');
setTextContents(textLayer,'Arial Black',comp.height/2.7,[0,0,0],0,ParagraphJustification.CENTER_JUSTIFY,[comp.width/2,comp.height/5*3],false,[sldLayer.outPoint,comp.duration]);

//本映像のタイムシート&タイムコード
textLayer=comp.layers.addText('TC');
setTextContents(textLayer,'Courier',comp.height/14,[0,0,0],0,ParagraphJustification.CENTER_JUSTIFY,[comp.width/2,comp.height/6*5],¥"f=timeToFrames(t=time-inPoint,fps=1/thisComp.frameDuration,true);Math.floor(t)+'+'+String(f%fps+101).slice(1)+' | '+timeToCurrentFormat(t,fps,false,thisComp.ntscDropFrame);¥",[sldLayer.outPoint,comp.duration]);

//レンダーキューに追加します--以下の2,3行目をアクティブにすると設定したプリセットを適用するようになります
var rqItem=aep.renderQueue.items.add(comp);
//rqItem.applyTemplate('" & renderSettingsName of compoPreset & "');
//rqItem.outputModule(1).applyTemplate('" & outputModuleName of compoPreset & "');
rqItem.outputModule(1).file=File('" & outputPath of compoPreset & "'+rqItem.outputModule(1).file.name);

//テキストレイヤーの内容を操作する自作ファンクションです--もっと多機能にできると思いますが、今回はこのくらいで...
function setTextContents(_textlayer,_font,_fontsize,_fillcolor,_strokeWidth,_justification,_position,_expression,_inOutPoint){
    _cont=_textlayer.property('Source Text').value;
    _cont.resetCharStyle();
    _cont.font=_font;
    _cont.fontSize=Math.round(_fontsize);
    _cont.fillColor=_fillcolor;
    _cont.strokeWidth=_strokeWidth;
    _cont.justification=_justification;
    if(_expression){
        _textlayer.property('Source Text').expressionEnabled;
        _textlayer.property('Source Text').expression=_expression;
    }
    _textlayer.property('Source Text').setValue(_cont);
    _textlayer.position.setValue([Math.round(_position[0]),Math.round(_position[1])]);
    if(_inOutPoint){_textlayer.inPoint=_inOutPoint[0];_textlayer.outPoint=_inOutPoint[1];}
}"
       
    end repeat
   
    display dialog (COMPOCOUNT as text) & "カットのレンダリングの準備が整いました!" with icon note buttons {"OK"} default button 1 giving up after 5 --この行をコメントアウトするといちいち報告しなくなります
   
    --DoScript ("aep.renderQueue.render();") --この行をアクティブにすると自動でレンダリングがスタートします
   
end tell

--ここまで



う〜ん、ブログに書き込んでみると、なんだか長い。しかし、内容は結構、コンパクトで単純ですヨ。

この文の解説も、またいずれ。(本陣のWeb(現在準備中)で、になると思います)

AppleScriptで、「共通のコンポジット仕様」「架空のカット名」「架空の尺」「本映像に描く絵文字」を設定・生成し、After EffectsのESTKに流し込みます。構造は、ただそれだけ、です。

実際に動作中の動画は以下の通り。スクリプト作成途中のキャプチャなので、若干内容が違いますが(上記スクリプトでは作るカット数を対話式に改善してあります)、ほぼ内容は同じです。



出来上がったファイルはこんな感じです。




ボールドの8コマを足した尺で、本映像部分はランダムに顔文字と背景色を変えています。After Effectsでは一切オペレーションをせず、ダミーのカットがいくらでも生成できます。

実際に書き出したムービーは以下のような感じです。






「これが出来る‥‥と言う事は、あんな事も、こんな事も‥‥」と想像できるんじゃないでしょうか。

実際、私の作業のスタンダート(旧来方式互換での)は、シートと素材の準備が整えば、「素組み」に近い状態までは自動で処理して、カメラワークと映像処理から「人の手」で始めます。まあ、厳密には「シートファイルを作るのも人手」なんですが、そのシートファイルの解釈もスクリプトで自動処理してキーフレームに反映させています。

コンピュータが作業者の雑務を担当する事により、作業者本人は、今まで以上の作業時間を獲得でき、より一層高度な映像表現が可能となる‥‥のです。


こういう類いの自動化を聞くと反射的に「嫌悪感」を感じる人はいるかと思います。

私が思うのは、例えば、手でマウスを操作して「レンダーキューに追加」する事は、どれだけ重要か?‥‥という事です。何かその手作業の行為で、精神性でも高められるんでしょうか?

私だったら、「After Effects上での指を疲労させる行為」は、出来る限り「映像表現に使いたい」ですネ。

些末な1つ1つの雑事が、結果的に作業者・映像表現者を疲労させる。‥‥私の16年のコンピュータ映像制作での「実感」です。その「実感」から開放される手段の一つが、コンピュータによる作業の補助です。


同時に思うのは、「自動処理を導入する覚悟と度胸のある現場」は、「乱作乱造」の状態には陥りにくい‥‥という事です。自動処理を導入するには、計画性が必要です。‥‥その事だけでも、お判りですネ?

付け焼き刃的に、自動処理なんか導入できないんですヨ。実際にやってみれば解ると思うけど。

アニメ業界の乱作乱造は「ワークフローを破壊する」性質のものなので、自動処理システム自体が「まず導入が困難」です。

自動処理システムが整然と機能する「理性的」な現場は、乱作乱造には陥りにくいのです、実は。



QTの情報を取り出す(初歩)

作品制作時は、大きく2つの面のバランスで成り立っています。運用と表現。

AppleScriptで運用面を強化すると、巡り巡って、映像表現にも差が表れます。表現に割ける時間が増えるからです。

しかし、どんなに運用面を強化して、快適で鉄壁な制作現場を構築しても、それはあくまで「作品表現が豊かになる『お膳立て』が出来た」に過ぎません。理想的なワークフローを築き上げても、面白い作品を作れるか否かは、無惨な言い方ですが「作り手の映像表現の才能」次第です。

でも、ワークフローがグチャグチャだと、どんなに才能豊かな人材を集めても、ロスが大きくて、作品表現に届く前に半減してしまいます。

要は、運用と表現の両面を、磨き続けるココロが必要なわけです。

まあ、往々にして、映像表現力に自信を持つ人は運用を軽んじ、作業を回す事を重視する人は映像表現に疎くなる傾向があります。どちらに偏り過ぎてもマズいのよね‥‥と、よく自己批判します。



今回のスクリプトは、QTの扱いの基礎です。

QuickTimeムービーファイルが、どのような仕組みなのかを、AppleScriptを使って探ってみます。

AppleScriptで簡単にQTの内容を調べるには、「QuickTime Player 7」を使います。「X」じゃダメです。

QuickTime Player 7で何か適当なQTファイルを開いて、そのファイルの様子を探ります。

探り方は、以下のようなスクリプトを書いて、調べます。

tell application "QuickTime Player 7"
    properties of document 1
end tell

「document 1」とは、一番手前に表示されているムービーの事です。

すると、以下のような「ドキュメント」情報が返されます。

{video brightness adjustment:0.0, name:"f.mov", play all frames:false, current node:missing value, id:1, max time loaded:2640, resizable:normal, time:0, show detailed movie info window:false, natural dimensions:{1920, 1080}, color table:missing value, default node:missing value, show sound controls:false, show video controls:false, show movie info window:false, class:document, show hot spots:false, preferred audio balance track:missing value, fast start:false, output muted:false, poster frame time:0, href:"", pan range:{0.0, 0.0}, selection duration:0, video contrast adjustment:0.0, current chapter:missing value, sound balance:0, sound volume:256, auto quit when done:false, savable:true, pan angle:0.0, time scale:24, presentation mode:normal, bass gain:0, tilt range:{0.0, 0.0}, scale:half, treble gain:0, streaming status message:"", preferred audio gain track:missing value, playing:false, auto close when done:false, aperture:clean, auto play:false, video tint adjustment:0.0, controller type:«constant ****Quic», dimensions:{960, 540}, duration:2640, pan tilt speed:0.0, data size:389908742, field of view:0.0, play selection only:false, live stream:false, looping:false, current chapter track:{}, auto present:false, preferred rate:1.0, video color adjustment:1.0, path:"/Volumes/外付けのHDD/Render/f.mov", stored stream:false, index:1, modified:true, saveable:true, selection start:0, local playback:true, done:false, palindrome:false, current matrix:{{0.5, 0.0, 0.0}, {0.0, 0.5, 0.0}, {0.0, 0.0, 1.0}}, rate:0.0, tilt angle:0.0, language:"SystemDefault", preview:{0, 0}, streaming status code:0, presentation background color:{0, 0, 0}, selection:0, quit when done:false, close when done:false, data rate:3545923, original file:file "外付けのHDD:Render:f.mov", plugin settings:{}, display state:normal, field of view range:{0.0, 0.0}, zoom rate:0.0, load state:complete}

‥‥いっぱいありますネ。

例えば、「natural dimensions」のラベルの値を見てみると、{1920, 1080}になっています。ナチュラルディメンションとは、自然な寸法、つまりQTファイルの「素の状態の」ピクセル寸法が解るわけです。

一方、「dimensions」は、{960, 540}になっています。これはつまり、現在表示している状態のピクセル寸法です。私が1/2の大きさで表示してたので、この値になっているのですネ。

重要なのは、time scaleとdurationの項です。このドキュメントは、time scaleは「24」、durationは「2640」となっています。1秒をどのようなスケールで扱うかがtime scale、そのtime scaleに基づいてムービーの尺を表したのがdurationです。

つまり、このドキュメントの尺は「2640/24」で110秒です。今回流用したムービーファイルは、前にフリッカー参考例で出したファイルなのですが、確かに1分50秒です。After Effectsで、24.0fpsでレンダリングしたので、とても歯切れの良い簡単な数値「24」になってくれたのです。

fpsが23.976の場合は、ちょっと状況が変わってきます。「time scaleは23.976になるのでは?」と思うかも知れませんが、「time scaleは整数で扱う」事と決められているので、そうはなりません。私の手元のQTで調べたところ、

23.976fpsのtime scale → 24000

‥‥でした。ちなみに、23.976fpsのQTの1フレームのデュレーションは

duration of frame 1 of track 1 of document 1 → 1001

‥‥でした。つまり1フレームの長さが1001という設定なのです。これを計算してfpsを求めると、

「24000/1001」=23.976024

‥‥です。まあ、たしかに。末尾の「024」という端数にそこはかとない不安が残りますが、概ね‥‥。


計算しやすいように、今度は1分ジャストの23.976fpsムービーを開いて調べてみます。

23.976fpsの1分のQTファイルのdurationは、1441440でした。

これを慌てて、「duration/time scale」なんていう計算をすると、めっちゃ誤差が出ます。

1441440/24000=60.06

結果は「60.06秒」‥‥たしかに。でも現場ではあくまで60秒として扱わなければなりません。

ドロップフレームではなく、ノンドロップフレームの「ご都合」をちゃんと考慮して計算式を組み立てましょう。

こんな感じに。

duration/フレームのデュレーション/(round (time scale/フレームのデュレーション))

round」とは四捨五入の事です。今回の場合は「23.976024を四捨五入」という事ですネ。

つまり、

1441440/1001/24=60.00

で、正しいデュレーションが返ります。あくまで「ビデオ上の時間軸」の‥‥ですネ。

こんな感じで、QTから様々な情報を得て計算すると、映像制作の各場面で用いる事ができます。

しかしなあ‥‥、こういう計算をしていると、心が荒んでくるのよネ。30fpsが29.97になったいきさつ、そして、29.97のノンドロップが生まれた背景‥‥。そして、さらに23.976 (24p)や59.94 (60p)に拡大して‥‥。「29.97DF」「29.97NDF」「30.0」の3つが混在する状況って‥‥。

それらの経緯を踏まえて、今回のような「23.976と24.0の二枚舌」のスクリプトを作らなければなりません。仕方ない事とは言え‥‥ねえ。

96fpsも「どうせ」96.0fpsにはならんのでしょうね。

アソシエーションの偉いさんたち、どこかで一回、リセットしてくれませんかネ。‥‥ハードの互換性とか言ってたら、この先何百年もずっと呪いから逃れられないよ。アレな廃棄物と同じで「解決は未来の人間に任せばよい」ってか。

その場しのぎの結果オーライ。面倒な運用を延々と引きずる。‥‥プロの現場が理路整然としているのでは決して無い‥‥事の証ですネ。

4Kコンテンツ

4Kのテレビが50万を切って発売されるそうな。私のよく見るヨドバシのサイトでも宣伝しておりますネ。

ほほう‥‥。

で、コンテンツは?

まあ、これ以上は申しますまい。

最低でも、48fps、60fpsのプログレッシブのコンテンツ、それを再生できるプレーヤー等々がないと‥‥なんですが、まあ、まだ無理か‥‥。

未来のアニメーション映像に興味のある方は、たとえSDサイズでも、48fpsや60fpsでのフルモーション実験映像を作る事をお勧めします。「モーションの感覚」の世代‥‥というよりは時代の移り変わりが、少しは体感できるはずです。

とりあえず、4K、48fpsにネイティブ対応するだけでも、江戸から明治くらいの変わり方にはなるはず。

私が思うに、アニメにとっての「黒船」は、4K解像度ではなく、フレームレートなのよネ。4Kや8Kはさ、既に静止画の版権類で充分、体験済みじゃん。

今のところ、私の本命は4K96fpsです。もちろん、1秒96枚の絵、です(コマ落ちはなし)。8Kはね‥‥マシンの性能に大革命でもおきない限りは、(実験はともかく)常用など無理ですネ。


calendar

S M T W T F S
     12
3456789
10111213141516
17181920212223
24252627282930
31      
<< December 2017 >>

selected entries

categories

archives

profile

search this site.

others

mobile

qrcode

powered

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