Maya Shelfの整理

MayaのShelfの整理です。よく使うスクリプトはメニュー化していますのでShelfには何かに使ったけどもはや何に使うのかよくわからんスクリプトがゴロゴロしてます。どんどん削除してもいいけどもしかしたら何かの参考になるかもって事でブログにバックアップです。

動くかどうかは保証しません!(The scripts below was written by me a long time ago. I can’t promise that it will work properly!)

機能の分からんモノがたくさんあるのでまた次の機会に載せるとして今日のところは3つ。まず1つ目はシーンからスムースメッシュがかかったメッシュオブジェクトを選択するもの。なんのために?

#Select smooth meshes
import pymel.core as pm 

mesh_shapes = pm.ls(type='mesh') 
smooth_meshes = [] 
for s in mesh_shapes: 
	pm.select(s) 
	r = pm.displaySmoothness(query=True, polygonObject=True) 
	if r != None and r[0] >= 3: 
		smooth_meshes.append(s) 
pm.select(smooth_meshes) 

2つ目、レガシーなレンダーレイヤーの削除かな?

続きを読む “Maya Shelfの整理”

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のノイズテスクチャなどが無いので手間はかかりそうですね。