Blender: Is inside volume or not?

久しぶりのAnimation nodes。メッシュボリューム内に任意のポイントがあるかどうかはメッシュのBVHTreeを作成して「Is Inside Volume」ノードで調査しますが結果はポイントの数だけのBooleanリストとして出力されます。で、ここからボリュームの内側あるいは外側のポイント(Vector)のリストを作成したい場合、「Expression」ノードを使用してフィルタリングすることになります。

青が外側、赤が内側のポイント

以下サンプルのblendファイル、Animation Nodes + Extra Nodes2.2.2を使用しています。

[x for x,y in zip(positions,insides) if y==True]

エクスプレッションはPythonで表記します。VectorリストとBooleanリストをzipで対にしたイテレータを作成し、それぞれx,yで取り出しています。ボリューム内にあるポイントを取り出すなら「y==True」を条件にして、x(Vecor要素)をリストに加えます。リスト内包表記ですね。

ループにVectorリストとBooleanリストを入力して「Switch」ノードを使用する事も考えられますが「Switch」ノードは必ず「If True」と「If False」でそれぞれ値を出力してしまします。Falseの場合は出力しないということが出来ないため今回の用途には向きません。

参考: Expression [docs.animation-nodes.com]


Blender: Stripe Transition Shader

昨日は事務所で湿気に殺されそうでした、レンダリングPCはサウナ石ですか?

さてレンダリング中のヒマつぶし、BlenderでShader遊び。シマシマのトランジション効果。

以前にも書いたと思いますがノードのつなぎ方、特に任意の座標のテスクチャのルックアップやシェイピングなどGLSL等のシェーダプログラミングと似ているので、プロシージャルに作ろうとするなら「The Book of Shaders」が大変参考になります。

UnityのShaderGraphも同様ですが、3Dのノイズテスクチャなどが無いので手間はかかりそうですね。


Blender2.92

以前よりα、β版の動画を見てますからこれと言って目新しくはありませんが、バージョン2.92です。

所有している有料アドオン「Meshmachine0.7.0」「Hardops0.98.7.5」「BoxCutter7.17.17」は普段使用している範囲では問題なく動作するようです。

Animation Nodes + Extra NodesはVersion2.2.2「Extra Nodes v2.2 for Blender 2.91-2.92」が動きました。GraphicAllで配布されている最新ビルドは2.93用でPythonは3.9なのでBlender2.92(Python3.7.7)では動かないと思います。

新たに加わったGeometryNodeはモディファイアとして機能するんですね。AnimationNodesはその後に評価されるので、AnimationNodesの結果をGeometryNodeで加工とはいきませんね。

Particle NodeのほうがGeometryより先にあったはずなのに、どうなったんやろ?