Houdini の sop で色々動くものを作っていると AfterEffects の wiggle がいかに便利だったかという事に気づく。
この辺(10年前の投稿だけど)にノイズで近いことをしている例があるが、そのものではないっぽいので、
https://www.sidefx.com/forum/topic/14910/?page=1#post-70402
適当に vex ででっち上げたのでメモとして qiita に貼っておく。
wiggleぽい動きテスト pic.twitter.com/4SUa58HjbZ
— harayoki (@harayoki) 2019年6月16日
float freq = ch("freq"); // 1秒間に値の変わる回数
float amp = ch("amp"); // 値の大きさ
float delta_t = 1.0 / freq; // freq から求めた時間間隔
float key_time1 = floor(@Time / delta_t) * delta_t; // 基準時間1
float key_time2 = key_time1 + delta_t; // 次の基準時間
vector val1 = rand(key_time1); // ランダム位置1
vector val2 = rand(key_time2); // ランダム位置2
float ratio = (@Time - key_time1) / delta_t; // 2つの基準時間の合間、今はどのあたりの割合か
vector val = lerp(val1, val2, ratio); // 線形補完による中間の位置
val -= {0.5, 0.5, 0.5}; // 0.0 ~ 1.0 -> -0.5 ~ 0.5
@P += val * amp;
vexのコードハイライトってないもんかな。とりあえずCコードとして張った。
実際のAEは線形補完ではないっぽいので、そこは直さないといけない。
あと、そもそもこういうノードがあるかもしれない。ないなら位置以外も対応できるように汎用化してHDAにするといいかもしれない。
以下、適当なキャプチャ。