2007年5月28日月曜日

AfterEffects エクスプレッション講座 その8(時間を変化させる)

参照する時間を変化させる。 「 time 」

time と記述するとタイムラインの現在時間を取得することができます。
value_at_time()と併せて使うと便利です。例えば前回の
プロジェクトファイルを使い「平面1」の透明度に

this_comp.layer("平面 2").opacity.value_at_time(time)

と入力してみましょう。


「平面2」と同期して透明度が変化します。これはtimeが1フレームごとに
タイムラインから現在時間を取得するためです。

さらにtimeに演算式を加えると効果的です。

this_comp.layer("平面 2").opacity.value_at_time(time-1)


と入力してみましょう。


「平面2」に少し遅れてから「平面1」の透明度が変化し始めます。
timeから-1したことで「平面2」の1秒前の値することができます。

2007年5月27日日曜日

AfterEffects エクスプレッション講座 その7(「時間」を指定する)



参照する値の「時間」を指定する。「 value_at_time() 」


value_at_time()はレイヤーオブジェクトの後に書くことでレイヤーの
指定した時間の値を参照することができます。とりあえずやってみましょう。

1.新規コンポに平面を2つ作り、2つの平面が見えるように配置します。

2.「平面2」の透明度に以下のようにキーフレームを作成します。
  0s = 0%
  2s = 100%

3.「平面1」の透明度のエクスプレッションフィールドに以下のように
  記述します。

 this_comp.layer("平面 2").opacity.value_at_time(1)

「平面1」の透明度が50%になります。


これはvalue_at_time(1)と記述することで「平面2」の1秒の時の値、50%を
参照した為です。()の中の値を0にしたり、2にしたりしてみましょう。
そのつど透明度が平面2の値に併せて変化します。

2007年5月24日木曜日

AfterEffects エクスプレッション講座 その6(文法を憶えてしまおう)

this_comp.layer("平面 2").positionというスクリプト

応用に入る前にここまでに出てきたスクリプトのおさらいです。
this_comp.layer("平面 2").positionの文法を憶えてしまいましょう。

this_comp 

現在のコンポジションを意味します。そのままで使うことはまずありません。
大抵の場合この後にコンポに含まれるオブジェクトが続きます。
今の場合だと「レイヤー」です。

.

今の場合だとコンポというオブジェクトからレイヤーというオブジェクトを
呼び出す役割を果たします。分かり図らければ
「 . 」 = 「~の 」
という感じで憶えたら分かりやすいかも知れません。

layer("平面 2")

レイヤー「平面2」を意味します。( )の中に指定したいレイヤー名を
入れる事で参照するレイヤーを変える事もできます。
例えば("平面1")とするとレイヤー平面1を参照します。
またレイヤー名で指定する場合必ず" "の中に記述する必要があります。

.

レイヤーオブジェクトから更にオブジェクトを呼び出しています。
今の場合「position」を呼び出しています。

position

プロパティ「位置」を意味します。
より正確な表現をすれば「位置」の「配列」を意味します。

position[0]

位置Xの数値を意味します。

position[1]

位置Yの数値を意味します。

2007年5月20日日曜日

AfterEffects エクスプレッション講座 その5(ピックウィップを使ってみる)


ピックウィップを使ってみる。


これまではエクスプレッションフィールドに直接数値を入力して
きた訳ですが、ピックウィップを使うとオートでスクリプトを入力
できます。とりあえずやってみましょう。

レイヤーを2つ用意し、両方のプロパティ「位置」を表示し、「平面1」の
エクスプレッションを有効にしましょう。

次に上図で赤丸がしてある辺りに「渦巻き」みたいなマークがありますが、
これが「ピックウィック」です。ドラッグしてみましょう。ドラッグした後を
糸みたいなのがついてきます。
糸を「平面2」の「位置」まで持って行くと位置が四角で囲まれるので、
マウスボタンを離して見ましょう。エクスプレッションフィールドに…

this_comp.layer("平面 2").position

と文字列が入力されています。試しに「平面2」をグリグリ動かして
見てください。「平面1」が後を着いてきて、プロパティの数値も遅れて修正
されます。

this_comp.layer("平面 2").position は
「このコンポのレイヤー(平面2)の位置を参照しなさい。」

と言った意味なんだろうと想像できると思います。(~を参照しなさい。を
付け足すと理解しやすいと思います。)

続けて今度は、ピックウィップを「平面2」の「位置の左側の数値」
に持って行きましょう。



エクスプレッションフィールドに…

[this_comp.layer("平面 2").position[0], this_comp.layer("平面 2").position[0]]

とスクリプトが変更されました。急に長い文字列になっちゃいました。
意味はおいといて、また「平面2」を動かして見ましょう。


ちょっと不思議な動きをすると思います。ですが良く見ると縦に動かした場合
「平面2」だけが移動し、横に動かすと「平面1」は斜めにズレながら
ついてくると思います。

「平面1」のプロパティは両方とも、「平面2」の「位置の左側の数値」つまり
「平面2のX」の値を参照していることがわかります。前回までの講座で

[X,Y]

の基本的な入力の仕方を理解していれば、このスクリプトが

[このコンポのレイヤー(平面2)のposition[0]を参照しなさい。,
このコンポのレイヤー(平面2)のposition[0]を参照しなさい。]

である事が想像できると思います。positionの後の[0]は配列を
表します。「位置」は2次元ですから、

position[0] = Xのプロパティ
position[1] = Yのプロパティ

に対応しています。さらに訳すと

[このコンポのレイヤー(平面2)のXを参照しなさい。,
このコンポのレイヤー(平面2)のXを参照しなさい。]

という意味だと分かります。次回はさらにこのスクリプトを
使って様々に応用していきたいと思います。

2007年5月18日金曜日

Links

AEの効果的な活用法を公開されてます。エクスプレッションについても
いくつか作例があり、参考になります。
ayato@web

エクスプレッションについてのHow To 満載の数少ない日本語サイト。
作例もカッコよいです。

水玉映像

相当詳しいことが分かるリファレンスガイド

Adobe After Effect6.5 日本語版 JavaScript&Expression 例文辞典

2007年5月17日木曜日

AfterEffects エクスプレッション講座 その4([ ]の意味)


[]の意味(配列とは?)

さて、ここまで決まりごととして2つ以上のパラメータをもつプロパティには
[] と ,  が必ず必要と説明してきました。これの持つ意味をそろそろ説明
しようと思います。

[]ですが、これはプログラム用語で”配列”を意味します。
配列とは数値を格納できる「仕切り」のついた「箱」のようなものです。
[] が箱で , が仕切りという訳です。

After Effectのプロパティを例にとって説明します。
例えば位置にはXとYという2つのパラメータがあります。
これは言い換えれば
「位置という箱(配列)に収まったXとYという数値」

ともいえます。
そして位置の配列の中には , が一つありますから「2つに仕切られた箱」
であることが分かります。この「何個で仕切られた箱」と言う言葉を
エクスプレッションの場合「n(何個)次元配列」と呼ぶようです。
(私が知っているJavaでのn次元配列と若干違うので)
試しに位置のエクスプレッションフィールドに10と入れてみてください。

「2次元である必要があります。1次元であってはなりません」


と怒られてしまいます。これよーするに、

「位置は2次元配列なんだから1個じゃ足りないでしょ!」

となる訳です。

ちなみに1次元のプロパティの場合、[]が必要ないのは
「1個だったら箱なくてもいーでしょ?」
くらいに思っておいてください。

AfterEffects エクスプレッション講座 その3(位置以外のプロパティ)

位置以外のプロパティに適用してみる。

位置以外でも基本的なエクスプレッションの適用方法は同じです。

1、Altキーを押しながら、エクスプレッションを適用したい
プロパティのストップウォッチをクリックする。

2、エクスプレッションフィールド(タイムラインのテキスト入力フィールド)
にスクリプトを記述する。

基本的には同じですが、各プロパティによってスクリプトの記述の仕方に
若干の違いがあります。

例えば、位置の場合、

[10,10]と入力していたのに対し、

透明度の場合、単に…

100と入力するだけでOKです。

これはまず、位置の場合さらにXとYという2つのパラメータを持つのに対し、
透明度が%という1つしかパラメータを持たない為です。

したがって回転は透明度と同じ…

X(任意のスクリプト)

という入力が適用でき、アンカーポイント、スケールは位置と同じで…

[X,Y]

という入力の仕方になります。

では3Dの時はどうでしょうか?位置の場合、X,Y,Zとパラメータが3つに
なりますが、この場合…

[X,Y,Z]

という入力の仕方でOKです。

2007年5月14日月曜日

AfterEffects エクスプレッション講座 その2(位置にエクスプレッション)

位置にエクスプレッションを適用する

さてafter effectsエクスプレッション講座、まずは位置に
エクスプレッションを適用します。

適当なコンポにレイヤーを作ったら、トランスフォーム→位置を表示します。
Altキーを押しながら位置のストップウォッチをクリックします。

位置の隣に「=」が表示され、数値が赤い表示に変わります。タイムラインを
見ると「position」と書いてあるはずです。

この状態はすでにエクスプレッションが有効になっています。
「=」をクリックしてみてください。「=」の上に/ついて数値が青に戻ります。
この状態はエクスプレッションが無効になっているのでキーフレームを
打つことができます。
「=」をクリックすることでいつでも「無効」「有効」の切り替えができます。

とりあえず、エクスプレッションを有効にしたら、タイムラインの「position」と
書かれた部分をクリックします。テキストを入力できるようになっているので、

[10,10]

と入力してみてください。

レイヤーが移動し、位置の数値も10.0 10.0となっています。
これは[]の中の左の数値がXの値を右がYの値を表していることを
意味します。Xの数値とYの数値の間は , (カンマ)で区別し
必ず[]の中に記述します。この「ルール」はスクリプトの「文法」と
呼ばれるもので意味がありますがそれについては後述します。
とりあえず先に進みましょう。今度は…

[20+10,10]

と入力してみてください。
レイヤーが移動し、今度は位置の数値が30.0 10.0となります。
左の20+10=30という結果がXの値に反映されました。
さらに…

[20*2,10]

と入力してみてください。今度は位置の数値が40.0 10.0となります。
「*」は「×」のスクリプト表記です。「20×2=40」の結果がXの値に反映
されたのです。簡単な演算のスクリプト表記は…


   記号  スクリプト
加算  +    +
減算  -    -
乗算  ×    *
除算  ÷    /
剰余  余り   %

といった感じです。まずは色々試してコツを掴んで見てください。

エクスプレッション 雑談その1

私が仕事上の理由からエクスプレッションを覚えようと思ったのが2年程前
のことです。ですが、いざ覚えようと思うと参考資料の少ないこと…。

ネット上で公開されているエクスプレッションの解説などもほんとに
ありがたく参考にさせていただきました。しかし、私にはいかんせん
レベルが違いすぎてマネすることはできても、自分のものにすることは
到底できませんでした…。

楽して習得することを諦めた私は、独学でスクリプトを学ぶことにし、
JAVAの本を読み漁りました。(間抜けな話、後になって知ったのですが、
JavaとJavaScriptはまったくの別ものでした。エクスプレッションやるには
問題なかったんですが。)

結果的には何とかエクスプレッションを自分のモノにできたのですが、
実を言うと最近、エクスプレッション使う作業を、Javaでアプリケーション
作ることでだいぶ楽になってしまい、あまりやらなくなってしまったのです。

で、せっかく得た知識をこのまま腐らせるの勿体ないし、
エクスプレッションは情報自体少ないので、これからエクスプレッション
を始めようという方々の参考に少しでもなればと思い
この講座を始めようと思い至った訳です。

ですので、この講座の目的は基礎から中級レベル、自分で簡単なスクリプト
を組めるようになるまでを支援したいと思います。
また、使い回しの利くコードのサンプルなども少しずつ時間を見つけて
公開したいと思ってます。

AfterEffects エクスプレッション講座 その1(エクスプレッションとは?)

エクスプレッションとは?



エクスプレッションとはキーフレームを使わずに計算式を使ってレイヤー
またはエフェクトのプロパティを制御するAfterEffectsの機能の一つです。
また計算といっても中身はJava Scriptと言うスクリプト言語に基づいていて
レイヤーのプロパティー自体を参照したりもできるので、

位置X = 「コンポジションの幅」÷2
位置Y = 「コンポジションの高さ」÷2

というような計算を用いてレイヤーをコンポジションのセンターに
配置できたりします。
その他、エクスプレッションを使うとできること、またはメリットとして…

1、レイヤー同士のプロパティを同期させることができる。
2、高度な計算式(関数とか)を用いて複雑な動きを簡単に作れる。
3、修正する際に対象がキーフレームではなく数値なので圧倒的に早い。
4、一度書けば使い回しすることができる。

等があります。エクスプレッションはスクリプトで記述していくので、
なんとなく憶えようと思っても見よう見真似では自分の思い通りに
操ることは非常に難しいと思われます。

面倒でもスクリプトの基礎くらいは学ぶ必要があります。とは言っても
エクスプレッションで必要なスクリプトの知識は最低限のもので十分
ですから、それほど難しくはないと思います。

今後はとりあえず難しいところは後に回すとして、先に簡単なことから
実践して、その後解説というスタンスで行きたいと思います。

2007年5月12日土曜日

音と映像と光 その6

こうした作業のストレスを感じてか、LED向けの映像用に対応
し始めたメーカーもあります。MAlighting社のGrandMaは
BMPエディターなるものを内蔵し簡単なお絵かき機能と
BMPファイルの取り込みをサポートしている模様です。
(ちなみに私が主に使うHigh End Systems社のHog2の
次世代機Hog3はLEDを扱うには程遠い方向に進化して
しまいました…。)

現在私はクライアントの要望に応じてコンソールを使いわけて
います。音のビート感を感じることを優先するなら照明卓で
映像的な要素を優先するならAfter Effectでコンテンツを
作ります。

それ以外にもLEDの形状、種類、ピクセル数などによっても
変わりますが、現在のLEDをコントロールし、クライアントを
満足させる為にはそうやって臨機応変に切り替えていくしか
方法がないのが現状です。

音と映像と光 その5

「その4」でも述べたように照明卓の成熟されたリアルプレゼンテーション能力
に対して映像用コンソールのそれは未だ発展途上であるか、
あるいは将来的にも持ち得ないかも知れない。

ですが映像卓には「素材を取り込める」という圧倒的強みがあります。
映像卓なのですから、あたりまえの事ですね…。

しかしLEDを照明卓でコントロールしている人間にとってはその「あたりまえ」
のことができないのですから、「圧倒的」というのも大げさではありません。

照明卓は基本的にLEDのFixtureNoという番号にアクセスすることで
制御します。
FixtureNoとはLED自身が保持しているの番号ことで100個あれば
それぞれが1から100までの番号を持っている、みたいなことです。

その番号に直接「何色で何秒点灯」みたいなことの積み重ねで
映像(らしきもの?)を表現するわけです。これはパソコンの
お絵かきに例えたら、人間が書いた絵をパソコンがせっせとモニター
に1ドットずつ描画している作業と似たようなものです。

2007年5月8日火曜日

音と映像と光 その4 


映像系ではroland社

http://www.roland.co.jp/


DV-7、PR-80等があります。
操作は直感的でわかり易いのですが
「ビデオプレゼンター」と言う呼称通り出力はNTSC(アナログのビデオ信号)
のみで入力もNTSCかWMVのDVフォーマットくらいしかまともに
受け付けてくれません。素材をデジタルで用意してもどこかで
ダウンコンバート(アナログ信号に変換すること)することになります。

照明系ではMAlighting社のGrandMa

http://www.malighting.com/


High End Systems社のHog

http://www.highend.com/


等があります。どちらも映像を「Cue」という照明の世界で言うシーンとして
捉えており、映像コンソールが素材を取り込まないと機能しないのに対し
照明卓は映像を作り、ショーコントロールするところまでの1連の作業を
1台でこなします。

ショーコントロールというジャンルに限って言えば映像系にはそれに向いた
機材は数少ないのが現状です。本格的なことをやろうと思ったら、複数台の
機材を組み合わせるのが普通のため、リアルタイムにプレゼンテーション
するには限界があります。必然的に素材を作りこむ作業に重きが置かれます。

対して照明卓はリアルタイムプレゼンテーションに重きがおかれてきました。
とっさに「Cue」を変える事くらいは朝飯前ですし、またその性質は映像を作る
作業にも受け継がれており、急な色、スピード等の変更にも瞬時に対応できる
ように工夫されています。

照明卓のリアルタイムプレゼンテーション能力に映像機材が追いつくのには
まだ当分の時間を必要とするか、あるいは追いつかないかも知れません。
映像業界全体から考えればリアルタイムプレゼンテーションの需要は
おそらく限りなく少ないでしょう。

ですが映像系の「素材」すなわち「映像コンテンツ」の製作能力
には照明卓はその足元にも及びません。

2007年5月7日月曜日

音と映像と光 その3


ずいぶんとマニアックな話になってきてしまいました。ですが懲りずに
続けてしまいます。

その2で述べたように現在LEDの世界では2種類の業界が
入り混じっています。正直見た目には区別がつかなく成りつつ
あるのは、その2で述べた通りです。

2種類の決定的な違いは「信号形態」にあります。映像系の場合
おもに「映像信号」を受けてLEDが発光するのに対し、照明系は
「DMX」という照明機材用の信号を受けて発光します。

受ける信号が違う為、2種類のLED機材をコントロールする為には
まったく別の分野の知識が必要になります。つまりは映像系のコンソール
、ソフトウェアを扱う知識と照明系のコンソールを扱う知識が必要に
なるわけです。何がどう違うかという話は長くなるので、こんな機材を
使ってますよ、ってのを紹介したいと思います。

2007年5月6日日曜日

音と映像と光 その2




映像業界から見たらLEDが進出してきたのは極最近のことです。
またLEDの進出は映像業界とほぼ同時期に照明業界からもありました。

私の仕事柄、接する機会が多いのは前者が
barco社 
http://www.barco.co.jp/
で後者が
カラーキネティクス社
http://www.colorkinetics.co.jp/

どちらも世界中のイベントなどで使用されていますが競合相手で
ありながら照明と映像という異なった業界に属するために同じイベント
の中で共存していたりもします。

クライアントにしてみればbarcoは映像用のモニターであり、
カラーキネティクスはイルミネーションまたは照明器具という
明確な住み分けがされていたりもするからです。

ですが違う業界から派生した2種類のLEDは独自の発展をしながらも
近づきつつもあります。

カラーキネティクス社がある程度の映像表現が可能な「color tile」
という商品を開発したかと思えば、barco社が光のラインを演出する
「mistrip」という商品を開発するなど近年LEDを扱う業者間の差
はさらに無くなりつつあるように見えます。

ですが私のようにLEDに映像または光を作る側の人間にしてみれば
そこには「入力信号」と「ソフトウェア」という2つの大きな違いが存在
しているのです。


音と映像と光 その1


私の仕事の大半は音と映像に関わるコトをしてます。
「音楽に映像リンクさせる」というマニアックな職種です。

そういう世界で、唯一世間に認知されているのが
イワユル「VJ」というヤツですが私はVJではありません。

上にあるような画像を一拍ずつのビートに合わせて
変化させる時もあれば、メロディに合わせたループした映像を流す
時もありますが、実はドットのように細かな光の粒を動かすのが本業です。

「ドットのように細かな粒」とはすなわち「LED」の事で、3色の発光
ダイオードの光を組み合わせることで様々な色を表現できる
光源の事です。

このLEDを音に合わせて動かすのが、私の仕事と言うわけです。