パラメータエディタ」の記事で「補完」の項目から
プリセットのイージングを呼び出す方法を紹介しました。

その項目の中に「エクスプレッション」というものがあります。
呼び出しただけでは、なにも動かない・・・
簡単に言うと、「 動きの数値をプログラムで計算 (制御) してくれる 」 機能です。

20170116_01

該当するパラメータの数値(横位置、縦位置、回転角度など)を
どういう計算に基づいて算出するかの計算コマンドを記述する、と言ったところです。

とくにどういうときに使用するとよいのか!
ぱっと思いつくかぎりだと、以下のような場合があります。

============================

①数学的に正確な軌跡や周期で変化させたい場合

・ 綺麗な円弧に沿って回転させたい (pi コマンドなど)
・ 一定のリズムで振幅運動を繰り返す (saw コマンドなど)
・ 自然な減衰をするゆらぎの動き (sin コマンドなど)

-------------------------------------------------

②すでに作った一連の動きを何度も繰り返させる


cycle コマンドを使うと指定の範囲のパラメータ変化をリピートさせる。
手動でコピーして繰り返すよりラクです。

その元となる動きを調整した際、自動で全体に修正適用できるのがメリット。

-------------------------------------------------

③他のオブジェクトの動きや変化に追随・連動して動かす場合

他のオブジェクトの情報を参照して、追随したり連動させることができる。
プラスチックツールのリギングの記事でパーツを骨に追随させるときに使用したりしました。

-------------------------------------------------

④無作為にランダムな動きをつける

たくさんのオブジェクト全部にランダムに動きをつけたい場合など
いちいち手入力してられません!
そういうときはコマンドで一発入力!(random コマンドなど)

-------------------------------------------------


とは言え、めったに必要性に迫られることもないし
スクリプトとかプログラムとか苦手な人が無理して使う必要もないとも思います。

すごく便利な使い方がいつか思いついたときに
具体例を挙げて改めて記事を書きたいと思います。


以下、自分の覚え書きの意味も含めて
メソッドやプロパティの一覧をすべて書き出しておきます。

(説明が欠けているところは未検証のものです。いつか埋めたいと思います。)


============================

▪️エクスプレッション コマンド一覧

【 計算コマンド 】
 
abs(x)
 代入したXの絶対値を返す。

atan(x) 
 代入したXのアークタンジェントをラジアン単位で返す。

atan2(x, y)
 代入したXとYの比率でアークタンジェントを返す。

ceil(x)
 代入したXの小数点を切り上げる。

ceiling(x)
 代入したXの小数点を切り上げる。ceilと同じ(?)

cos(degree)
 代入した角度の余弦(コサイン)を返す。

cosh(degree)
 代入した角度の双曲線余弦(ハイパボリックコサイン)を返す。

crop(x, a, b)


floor(x)
 代入したXの小数点以下を切り捨てる 

log(x) 
 代入したXの自然対数を返す。

max(a,b) 


min(a,b) 


pi  
 円周率を返す。 

exp(x) 


random , random(max), random(min, max) 
 ランダムな数値、乱数を返す。rndと同じ。 

random_s(seed) , random_s(seed, max) , random_s(seed, min, max)  


rnd , rnd(max), rnd(min, max)
 ランダムな数値、乱数を返す。randomと同じ。 

rnd_s(seed) , rnd_s(seed, max) , rnd_s(seed, min, max)  


round(x)  
 代入したXを四捨五入して返す。 

sign(x) 


sin(degree) 
 代入した角度の正弦(サイン)を返す。 

sinh(degree) 
 代入した角度の双曲線正弦(ハイパボリックサイン)を返す。 

sqr(x) 
 代入したXの自乗を返す。 

sqrt(x) 
 代入したXの平方根を返す。 

tan(degree) 
 代入した角度の正接(タンジェント)を返す。 

tanh(degree) 
 代入した角度の双曲線正接(ハイパボリックタンジェント)を返す。 


--------------------------------------------

【 連続動作構成系 】

bump(pos) , bump(pos, length) , bump(arg; pos)  , bump(arg; pos, length)  


clamp(x, a, b)  


cycle(period)
 1フレームから指定したフレームまでを複製リピートする。

pulse(pos) , pulse(pos, length) , pulse(arg; pos)  , pulse(arg; pos, length)  


saw(length) , saw(length, height) , saw(arg; length) , saw(arg; length, height) 
 ノコギリ型の波形グラフで数値を返す。 

sawtooth(length) , sawtooth(length, height) , sawtooth(arg; length) , sawtooth(arg; length, height)
 ノコギリ型の波形グラフで数値を返す。 

smoothstep(x, x0) 


step(x, x0) 


t 
 0から1までの変遷値を返す。 

wave(_length) 


--------------------------------------------

【 オブジェクトの参照 】

col
 カラム(シートレイヤー)オブジェクトを参照する

cam
 カメラを参照する。

camera 
 カメラを参照する。camと同じ(?)

peg 
 ペグオブジェクトを参照する 

pegbar 
  ペグオブジェクトを参照する 

table 
 table(ステージ)オブジェクトを参照する。tabと同じ。 

tab  
 table(ステージ)オブジェクトを参照する。tableと同じ。 

vertex(columnNumber, "vertexName").parameter   
 指定したカラム番号にあるメッシュの、指定した関節のパラメータを参照する
 【割り当てられているパラメータ】
  ・angle (角度)
  ・disstance (距離)
  ・so  (重なり順)


--------------------------------------------

【 オブジェクトのプロパティ 】

f
 現在のフレームの位置。(0が1フレーム目に該当)

frame
 現在のフレームの位置。(0が1フレーム目に該当)
 f と同じ。

r
 現在のフレームの位置。

rframe
 現在のフレームの位置。