Animation Node のループの使い方(2016/4月)

カテゴリ:blender

メッシュの頂点や複製したオブジェクトのような大量のデータをひとつひとつ処理していたのではノードの数が多くなりすぎる. そこでデータをリストとしてひとつのデータにまとめ, そのデータ処理にループを使う.

リスト

リストは同じデータをひとつにまとめたものだ. メッシュの頂点データや,グループ内のオブジェクトなどリストとしてアクセスできるデータは多い. リストの端子は半透明になっている.

list pole
リストの端子

リストから要素を抜き出す

リストから要素を抜き出すには Get List Element を使う. Get List Element にリストとリスト内での場所(インデックス)とを指定すれば要素をひとつ取り出せる. このインデックスは 0 から始まり,リストの長さ-1 まで有効だ. Get List Element は半透明の端子と半透明ではない端子とつなげば自動的にノードが挿入される.

list to element

リストの長さ

リストの長さは Get Length ノード(Add > List > Get Length)で取得できる. 取得した長さは Debug ノード(Add > Debug > Debug)で表示する.

get length

ループ

リスト内のすべての要素に同じような処理をする場合,ループを使うとノードの数を減らせる. ループは入力としてリストを受け取り,処理するノードはリストの要素ひとつとそのインデックスとを出力する.

複製したオブジェクトをX軸方向に並べる

Object Instancer(Add > Object > Instancer)は複製したオブジェクトをリストとして出力する. これを Invoke Subprogram(Add > Subprograms > Invoke Subprogram)に入力する.

Invoke Subprogram ノードを追加し,New Subprogram を押す.

new subprogram

Subprogram Type を Loop にして OK.Loop Input ノードが追加される.

add loop

New Iterator の + をクリックし,Object Listを追加.

add object list
追加後のノード画面

あとは Index と Object を使って処理を作る.

creating

関連記事
Blender 記事の目次