blender2.83 AnimationNode学習メモ
AnimationNodeを触ってみたいので、片っ端からチュートリアル動画を触りつつメモっていく記事。
ノードには最初は隠されているプロパティがあり、Nで表示されるパネルに表示/非表示設定が存在している。
AnimationNodeにはベクターとオイラーの2つの値の種類がある。ベクターは3d空間上のxyzの値。オイラーは回転。
ノードに接続するとき、例えばZ軸の回転のみをしたい場合は、オイラー計算のノードを作ってその出力を変換ノードに入力する形となる。
オイラー計算はデフォルトではラジアンで演算される。3つと少しのあまりで約180度になる。
ベクターやオイラー情報などの一部だけが欲しい場合、セパレートノードを使えば欲しい情報だけに切り分ける事が出来る。
https://www.youtube.com/watch?v=Ru5uoiJXiI8
ギアを追加していき、それが連動して動作するのを確認することが出来る。トランスフォームノードから次のノードブロックの入力へとつなげるところを確認することができる。
https://www.youtube.com/watch?v=o3N8H8X-GJk
グリッドメッシュとオブジェクトコピー、それをループさせるノードによってグリッド状にオブジェクトを配置している。
https://www.youtube.com/watch?v=_JBYP426Olg
2つのオブジェクトの位置情報から距離を計算し、デバッグノードによってその数値を確認している。
map rangeノードは、入力の最小値と最大値、出力の最小値と最大値をそれぞれ設定し、その範囲の比率から出力値を変換するノードとなっている。入力値を調整するのに重宝しそう。
グリッドのメッシュを作り、その頂点にコピーしたオブジェクトを並べるノード。サブプロジェクトで別のノードグループに飛ばしている。シェーダーノードでいうグループみたいな扱い。アニメーションノードではグループの概念がないのかな? このサブプログラムで基本的に管理するみたいだ。少し考え方が違うので混乱した。
宿題が出たので、動的にパネルがパタパタするやつを作った。
パネルをグリッドメッシュ上の頂点をベースに複製、それをトランスフォームアウトプットの出力オブジェクトに設定した。ベース位置をグリッドメッシュから、サイズは手動で調整。いい感じのパネルを並べたら、波立たせるための球体を追加、それぞれのパネルの位置はグリッドメッシュの頂点から取る。球体と頂点の位置の差から距離を出し、それを値からベクトルへ、ベクトルから角度へと変換してオブジェクトトランスフォームのローテーションパラメーターに割り振る。このままだと無限に回転し続けるので、マップレンジで調整して最大角度と最小角度を設定してあげた。
自分で考えてノードを組んだのは初めてなので楽しかった。