ニッチなblender手記

世の中には自分に似た人が3人いるとされています。その人達へと情報共有するために主にblenderの記事を書いていきます。

loose introduction about Animation Nodes (Script)

概要

script ノードの説明。 このノードは他のノードと異なり python や 数学知識 を必要とするコードベースのノードとなるので、利用に注意。

f:id:r9aArrowhead:20201221112027p:plain

Animation Nodes 上で python スクリプトを実行することができるノード。
その特性上、ノードによるビジュアルプログラミングというよりはバニラの blender が提供しているコードベースのプログラミングになる。

f:id:r9aArrowhead:20201221112039p:plain

また、script はコードベースという性質のために他のノードにはない特徴がある。

  • 追加した入力ソケットに別のノードを接続した場合、 script ノード内では接続したノードから受け取った値で変数が初期化される。
  • 同様に出力ソケットにノードを接続した場合、 script ノードから接続したノードへ値を渡すことができる。
  • python として動くので、コードの中身の基本ルールは python ベース。
  • python にはモジュールインポート機能が存在するが、 * を用いたモジュールインポートは制限されている。 from random import * というよくある書き方はできなくなっている。
  • script ノードは 以下の python モジュールをデフォルトでインポートしている
    • bpy
    • sys
    • itertools
    • animation_nodesAN として短縮系でインポート
    • AN.algorithmsalgorithms として短縮形でインポート
    • MathutilsVector, Matrix, Quaternion, Euler.
    • AN.data_structures に含まれている全モジュール : Vector3DList, Matrix4x4List, MeshData などなど

f:id:r9aArrowhead:20201221112049p:plain

注意点

ノード内に書いたコードは基本的に Animation Nodes が処理を実行する度に処理される。
そのため、細かく制御したい場合は条件分岐やトリガーなどで制御すること。

下図は特に何も制御せず実行した例。 Animation Nodes が処理を実行する度に結果が変わっている。

f:id:r9aArrowhead:20201221112113g:plain

欠点

コードベース故にこのノードは他のノードと異なる欠点も存在する。

  • 処理内容を記述しなければならないので、 Animation Nodes だけではなく python や数学的知識が必要となる。

まとめ

このノードは特別説明するような内容はない。
ノードでは実現できない処理や機能をスクリプトとして Animation Nodes へ追加するためのノード

参照

Animation Nodes - Doc - Script