Install Animation Nodes 2.1.5

デイリービルドとして公開されているAnimation Nodes 2.1.5( animation_nodes_v2_1_linux_py37.zip
)ですが、Windows10で実行中のBlender2.8(2.81でも)で有効化すると以下のようなエラーが出ます。

Traceback (most recent call last):
File "C:\UserShare\bin\blender-2.81-125257758007-windows64\2.80\scripts\modules\addon_utils.py", line 351, in enable
mod = import(module_name)
File "%appdata%\Blender Foundation\Blender\2.81\scripts\addons\animation_nodes_init_.py", line 166, in
auto_load.init()
File "%appdata%\Blender Foundation\Blender\2.81\scripts\addons\animation_nodes\auto_load.py", line 23, in init
modules = get_all_submodules(Path(file).parent)
File "%appdata%\Blender Foundation\Blender\2.81\scripts\addons\animation_nodes\auto_load.py", line 51, in get_all_submodules
return list(iter_submodules(directory, directory.name))
File "%appdata%\Blender Foundation\Blender\2.81\scripts\addons\animation_nodes\auto_load.py", line 55, in iter_submodules
yield importlib.import_module("." + name, package_name)
File "C:\UserShare\bin\blender-2.81-125257758007-windows64\2.81\python\lib\importlib_init_.py", line 127, in import_module
return _bootstrap.gcd_import(name[level:], package, level)
File "%appdata%\Blender Foundation\Blender\2.81\scripts\addons\animation_nodes\libs\FastNoiseSIMD_init.py", line 1, in
from . node_base import Noise3DNodeBase
File "%appdata%\Blender Foundation\Blender\2.81\scripts\addons\animation_nodes\libs\FastNoiseSIMD\node_base.py", line 6, in
from . wrapper import (
ImportError: DLL load failed: 指定されたモジュールが見つかりません。

公式のトラブルシュートにも書かれていますが「Visual C++ 再頒布可能パッケージ」が必要です。

Windows users may encounter errors due to missing runtimes, in that case, try installing Visual C++ Redistributable Package.

https://animation-nodes-manual.readthedocs.io/en/latest/user_guide/install/install.html#troubleshooting

トラブルシュートでリンクされているのが下の1です。2はVisual C++ 2015,2017,2019に対応したランタイムです。PCが64bitなら「 vc_redist.x64.exe 」を32bitなら「x86」をインストールします。

  1. Visual Studio 2015 の Visual C++ 再頒布可能パッケージ
  2. The latest supported Visual C++ downloads

僕は2をインストールしました。

v2.1.4と比べてもあまり大きな変更点は無いのでデイリーの2.1.5は必須ではないんですけどね。Blender2.81 Beteとの組み合わせで動かしてみたかったのでインストールしてみました。


Maya + V-Ray Material Variations

ひとつのマテリアルからカスタムアトリビュートに応じてバリエーションを作成する方法です。オブジェクト毎に不透明度のアニメーションをつける場合、Mayaではその数だけマテリアルの複製が必要ですが、VrayUserScalarを使用することで複製をすることなしに実現することができます。

残念ながらビューポートでの確認ができませんけどね。

VrayUserScalarノードを扱う場合は、オブジェクトへカスタムアトリビュート「vrayUserScalar_アトリビュート名」をデータタイプをfloatとして追加します。 VrayUserScalarノード の「User Scalar Attribute」へ「アトリビュート名(vrayUserScalar_はいらない)」を入力します。

VaryUserColorノードの場合はカスタムアトリビュート「vrayUserColor_アトリビュート名」、データタイプはVectorです。Colorとしたいところですがアトリビュート追加ダイアログではできないみたいです。下のスクリプトではカラーピッカー付きのアトリビュートを追加できます。

選択したオブジェクトへ一括でカスタムアトリビュートを付加するMelは以下に置いときます。UIは無しです、$attrNameを適宜書き換えてください、「value」と書くと、「vRayUserScalar(もしくはColor)_value」と言うアトリビュートが追加されます。

参考: User Attributes[docs.chaosgroup.com]


Animation Node2: Offset Polygon続き

FallOffで各ポリゴンをそのエッジ中心にトランスフォームさせる。記事「Animation Node2: Offset Polygon」の続き。タイトルに「Offset Polygon」はつけていますがトランスフォームの基点はポリゴンの中心になってしまうため、今回そのノードは使いません。

ポリゴンのトランスフォーム基点は「Extract Polygon Transforms」で取得します。Extraction TypeがDefaultのままなら中心の変換行列を取得できます、「Edge」へ切り替えるとポリゴンを構成するエッジのどれかにもとづいた変換行列(Transfom Matrix)を取得出来ます(1)。それを元にポリゴンの頂点を逆変換(2)、FallOffに基づいて頂点をオフセット(3)、最後に元の変換行列をかけてあるべき位置へ戻す(4)の4ステップでエッジを軸としたトランスフォームを実現します。

要Blender2.8+Animation Nodes v2.14 test build for Blender 2.8

いつかの時点で「Offset Polygon」ノードにポリゴンの変換行列の入力があったようですが最新版ではなくなっています。それがあればもっと少ないノードで実現できたのですが、ノードの粒度を細かくする方針なんでしょうね。

追記

下は最適化したバージョンです。逆変換、オフセット、変換の復元を 一つループ内 で処理しています。