NatronのExpressionにふれる

Natronについての以前の記事


NatronにはExpressionと呼ばれる、キーフレームを使わずに式でアニメーションを指定できる機能があります。


Expressionの作り方

プロパティから、Expressionをつけたい項目を右クリックし、Edit expressionを選択。

スクリーンショット 2020-07-28 12.31.17

初期設定ではExpressionが設定された項目は黄緑色になります。

Expressionの使い方<基礎>

Edit expressionを選択すると、expressionの入力画面が開きます。

スクリーンショット 2020-07-28 12.33.08

うすい灰色の部分に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)

これだけ!

この記事が気に入ったらサポートをしてみませんか?