目次 [ Contents ]
Fusionのエクスプレッションに関する情報をまとめたメモです。見つけたものを書き残しただけの部分もあるので、「間違っている」「使い方が違う」ものもあるかもしれません。あくまでメモで…。
一部はYoutubeなどWeb上での解説からですが、ほとんどは「User Manual.pdf」と「Tool Reference.pdf」から拾ってます。pdfファイルはアプリケーションソフト内にも同胞されています。
算術演算子
| + | 足し算 |
|---|---|
| – | 引き算 |
| * | 掛け算 |
| / | 割り算 |
| x % y | xをyで割った余りを返す |
| x ^ y | xのy乗 |
比較演算
| 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を返す |
数学関数
| 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) | xとyから小さい数値を返す |
| max(x,y) | xとyから大きい数値を返す |
| dist(x1,y1,x2,y2) | x1,y1~x2,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等
| ベタ塗り | “Solid” |
|---|---|
| 横グラデーション | “Horizontal” |
| 縦グラデーション | “Vertical” |
| 4辺グラデーション | “Corner” |
| カスタムグラデーション | “Gradient” |
| 見切れ | “Once” |
|---|---|
| 繰り返し | “Repeat” |
| 反転繰り返し | “Ping-Pong” |
Custom Tool
| 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
| 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)