Release 2018.3.31 / Update 2018.9.3

Fusion エクスプレッションメモ

Fusionのエクスプレッションに関する情報をまとめたメモです。見つけたものを書き残しただけの部分もあるので、「間違っている」「使い方が違う」ものもあるかもしれません。あくまでメモで…。

一部はYoutubeなどWeb上での解説からですが、ほとんどは「User Manual.pdf」と「Tool Reference.pdf」から拾ってます。pdfファイルはアプリケーションソフト内にも同胞されています。

算術演算子

“Fusion 9 Tool Reference” 501ページより
+ 足し算
引き算
* 掛け算
/ 割り算
x % y xをyで割った余りを返す
x ^ y xのy乗

比較演算

“Fusion 9 Tool Reference” 501ページより
if(c, x, y) もしcがfalseでなければx、違えばyを返す
iif(a+b == c, x, y) 条件式(a+b)がcがならばx、違えばyを返す
x = y , x == y xとyが同じならtrue、違えばfalseを返す
x <> y , x != y xとyが違えばtrue、同じならfalseを返す
x < y xがyより小さいならtrue、違えばfalseを返す
x > y xがyより大きいならtrue、違えばfalseを返す
x <= y xがyと同一、又は小さいならtrue、違えばfalse
x >= y  xがyと同一、又は大きいならtrue、違えばfalse
x & y , x && y xとyが共にtrueならtrueを返す
x | y , x || y xとyのどちらかがtrueならtrueを返す 
!x 値がfalseならtrue、trueならfalseを返す

数学関数

“Fusion 9 Tool Reference” 500ページより
pi 円周率
e ネイピア数(自然対数の底)
log(x) xの常用対数
ln(x) xの自然対数
sin(x) 三角関数 sin(xは角度)
cos(x) 三角関数 cos(xは角度)
tan(x) 三角関数 tan(xは角度)
asin(x) x角度のsin逆三角関数
acos(x) x角度のcos逆三角関数
atan(x) x角度のtan逆三角関数
atan2(x,y x,y角度のtan逆三角関数
abs(x) 絶対値(負の数値xを正数に)
int(x) xの小数点以下を切り捨て
frac(x) xの小数部を返す
sqrt(x) xの平方根
rand(x,y) xからyの間で乱数を生成
rand(x,y,s) xからyの間でsを元に乱数を生成 
min(x,y) xyから小さい数値を返す
max(x,y) xyから大きい数値を返す
dist(x1,y1,x2,y2) x1,y1x2,y2間の距離を返す
dist3d(x1,y1,z1,x2,y2,z2) distの3D空間版
noise(x) xからパーリンノイズを生成
noise2(x,y) x,yからパーリンノイズを生成
noise3(x,y,z) x,y,zからパーリンノイズを生成 

一般関数項目

(他ソフトにも)通用するような共通の関数。

floor 小数点切り捨て

ツール別

ツール内で使う因子等。

基本・共通項目

.Point(x,y) Center, Pivotなど、2Dツールのx,y位置
.Transform3DOp. 「3Dトランスフォーム」タブ
.Translate.X~Z 3D X,Y,Zポジション
.Rotate.X~Z 3D X,Y,Z回転
Text(“aaaa“) 文字列「aaaa

時間項目

時間の指定に関する項目。

time 現在フレーム
comp.CurrentTime 現在フレーム(スクリプトより)
comp.GlobalStart 総尺IN点(スクリプトより)
comp.GlobalEnd 総尺OUT点(スクリプトより)
comp.RenderStart レンダー範囲IN点(スクリプトより)
comp.RenderEnd レンダー範囲OUT点(スクリプトより)

Background / Merge / Fast Noise等

「Type」
ベタ塗り “Solid”
横グラデーション “Horizontal”
縦グラデーション “Vertical”
4辺グラデーション “Corner”
カスタムグラデーション “Gradient”
「Repeat」
見切れ “Once”
繰り返し “Repeat”
反転繰り返し “Ping-Pong”

Custom Tool

“Fusion 9 Tool Reference” 498ページより
n1…n8 「Number」タブのスライダ数値
p1x…p2y…p4z 「Points」タブのスライダx,y,z数値
s1, s2, s3, s4 「Setup」タブに書いた計算結果
i1, i2, i3, i4 「Inter」タブに書いた計算結果
time 現在フレーム
x 現在のピクセルの水平座標
y 現在のピクセルの垂直座標
w (又は w1…w3) 入力ノード1~3画像の横幅
h (又は h1…h3) 入力ノード1~3画像の高さ
ax (又は ax1…ax3) 入力ノード1~3画像の横アスペクト
ay (又は ay1…ay3) 入力ノード1~3画像の縦アスペクト
c1, c2, c3 入力ノード1~3画像の現在チャンネル
r1…g2…b3 入力ノード1~3画像のR,G,Bチャンネル
a1, a2, a3 入力ノード1~3画像のαチャンネル
z1, z2, z3 入力ノード1~3画像のZ-Bufferチャンネル
cv1, cv2, cv3 入力ノード1~3画像のZ Coverageチャンネル
u1, u2, u3 入力ノード1~3画像のU Coordinateチャンネル
v1, v2, v3 入力ノード1~3画像のV Coordinateチャンネル
nx1…ny2…xz3 入力ノード1~3画像のX,Y,Z Normalチャンネル
bgr1…bgg2…bgb3 入力ノード1~3画像のBackground R,G,Bチャンネル
vx1…vy3 入力ノード1~3画像のX,Y Vectorチャンネル

pCustom Tool

“Fusion 9 Tool Reference” 575ページより
px, py, pz パーティクルのx,y,zポジション
vx, vy, vz x,y,zの「velocity」値
rx, ry, rz x,y,zの「rotation」値 
sx, sy, sz x,y,zの「spin」値
pxi1, pyi1 入力ノード画像1の2D上ポジション
pxi2, pyi2 入力ノード画像2の2D上ポジション 
mass – – –
size パーティクルの現在サイズ
id パーティクルのid番号
r, g, b, a パーティクルのRGB、αチャンネル
rgnhit 「Region」タブで設定した条件内ならTrueを返す
rgndist 「Region」設定値からパーティクルまでの距離
condscale そのパーティクル位置でのRegion強度
rgnix, rgniy, rgniz 「Region」でパーティクルが当たっている場所の値
rgnnx, rgnny, rgnnz パーティクルが「Region」に当たった時の「normal」値 
w1, h1 入力ノード画像1の縦横サイズ
w2, h2 入力ノード画像2の縦横サイズ 
i1, i2, i3, i4 「Inter」タブに書いた計算結果
s1, s2, s3, s4 「Setup」タブに書いた計算結果
 n1…n8 「Number」タブのスライダ数値
p1x…p2y,…p4z  「Positions」タブのスライダ数値
time 現在フレーム
age 「Conditions」タブの現在「Age」
lifespan 現在フレームの「lifespan」

構文例

一定周期の繰り返し

厳密にコントロールしたければ「Splineエディタ」で、キーフレームループで作ったほうがいいかも。

// フレーム数内で一定周期の振幅(プラスマイナス)
sin(time/(フレーム数/(pi*2)))

// フレーム数内で一定周期の振幅(プラスのみ)
sin(time/(フレーム数/pi))

// 振幅範囲を1.0シフト
sin(time/(フレーム数/(pi*2)))+1.0

// 振幅の振れ幅を2倍に
sin(time/(フレーム数/(pi*2)))*2

文字の参照

Youtubeより

// 参照先文字列から特定順番の文字を拾う
string.sub(参照文字列.Value, 開始数値, 終了数値)

数値の取得

“Fusion9 User Manual” 403ページより

// Merge1ツールのBlendから、5フレーム前の値を拾う場合
Merge1:GetValue("Blend", time-5)