アップルパイ技術メモ

活動してて貯まったノウハウを吐き出す場所。

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ノードは、入力の最小値と最大値、出力の最小値と最大値をそれぞれ設定し、その範囲の比率から出力値を変換するノードとなっている。入力値を調整するのに重宝しそう。

f:id:fruits_pie:20200901023011p:plain

グリッドのメッシュを作り、その頂点にコピーしたオブジェクトを並べるノード。サブプロジェクトで別のノードグループに飛ばしている。シェーダーノードでいうグループみたいな扱い。アニメーションノードではグループの概念がないのかな? このサブプログラムで基本的に管理するみたいだ。少し考え方が違うので混乱した。

www.youtube.com

宿題が出たので、動的にパネルがパタパタするやつを作った。

f:id:fruits_pie:20200901033145g:plain

f:id:fruits_pie:20200901033226p:plain

パネルをグリッドメッシュ上の頂点をベースに複製、それをトランスフォームアウトプットの出力オブジェクトに設定した。ベース位置をグリッドメッシュから、サイズは手動で調整。いい感じのパネルを並べたら、波立たせるための球体を追加、それぞれのパネルの位置はグリッドメッシュの頂点から取る。球体と頂点の位置の差から距離を出し、それを値からベクトルへ、ベクトルから角度へと変換してオブジェクトトランスフォームのローテーションパラメーターに割り振る。このままだと無限に回転し続けるので、マップレンジで調整して最大角度と最小角度を設定してあげた。

自分で考えてノードを組んだのは初めてなので楽しかった。