NatronのExpressionにふれる
Natronについての以前の記事
NatronにはExpressionと呼ばれる、キーフレームを使わずに式でアニメーションを指定できる機能があります。
Expressionの作り方
プロパティから、Expressionをつけたい項目を右クリックし、Edit expressionを選択。
初期設定ではExpressionが設定された項目は黄緑色になります。
Expressionの使い方<基礎>
Edit expressionを選択すると、expressionの入力画面が開きます。
うすい灰色の部分にPython3のスクリプトを書くことで実行します。
結果のプレビューがResult:にかかれています。
"frame"は何フレーム目かを取得します。
他にも白い太字で基本的な項目の取得記法が書かれています。
複数行にわたるスクリプトの場合はMulti-lineを有効にしないとErrorが出ます。
上図ではフレーム数を1000で割った数字がランダムシードのときの乱数を取得しています。
Expressionの使い方<実践>
例えば、テキストノードのCenter xのexpressionの指定によって、「X軸方向に1フレームあたり10ピクセル移動させ、1920ピクセル移動したら1に戻る式」は以下のようになる
((frame*10)%1920)-(1920/2)
同様にしてsinなどの指定も可能。
Center yのexpressionの指定によって「Y軸方向に1フレームあたり、sinx x 100ピクセル動かす式」は以下
sin(frame)*100
応用
Expressionを使えばアニメーション以外にもテキストノードで”Text2”ノードのテキスト本文を取得したりもできます。
Text2.text.get()
取得したい項目の書き方は、command(Win:control)で取得したい項目をドラッグし、Expressionでドロップすれば取得できます。
これをさらに応用すると、タイプライターのように、20フレーム目を始めとして5フレームごとに1文字ずつ表示させるようなこともできる。
コードは以下
# txt にText2のテキストを取得
txt = Text2.text.get()
# エフェクトの開始フレーム
start = 20
# スピード(何フレームで1文字表示するか)
speed= 5
#Xフレームで1文字ずつ表示
ret = txt[0:((frame-speed)/speed)]
コメントも#でつけられる。
Expressionでフレームを表示させる
Textノードを作成し、項目Textにexpressionを設定。
frame はフレーム数を取得し、なおかつpythonでの文字への変換strを使って
str(frame)
これだけ!