選択フィギュアの、マテリアルの「Ambient_color」を白に、「Ambient_Value」を0.3に設定するスクリプトを作ったので公開したい。
手っ取り早く、フィギュアの肌の血色をよくしてしまおう、と思って作った。
import poser
def addambient(mat):
scene = poser.Scene()
tree = mat.ShaderTree()
root = tree.Node(0)if (root.Type() != poser.kNodeTypeCodePOSERSURFACE):
poser.DialogSimple.MessageBox("invalid Material")
returnambient_col = root.InputByInternalName("Ambient_Color")
ambient_val = root.InputByInternalName("Ambient_Value")ambient_col.SetColor(1,1,1)
ambient_val.SetFloat(0.3)diffuse = root.InputByInternalName("Diffuse_Color")
diffuse_in = diffuse.InNode()if( diffuse_in != None ):
diffuse_in.ConnectToInput(ambient_col)tree.UpdatePreview()
if (poser.Scene().CurrentFigure() == None):
poser.DialogSimple.MessageBox( "Please select figure.")
else:
mats = poser.Scene().CurrentFigure().Materials()
for mat in mats:
addambient(mat)
なお、Pythonはインデント(行頭のタブ・空白)を間違えるとそれだけで動かないので注意して欲しい。念のため、zipしたものをアップロードしておこう。
上記のスクリプトを以下のフォルダに「amb_1.py」(名前はアルファベットなら何でもOK)と名前をつけて保存する
<Poserインストールフォルダ>\Runtime\Python\poserScripts\Wacros\UserDefined
Poserのマテリアルルームの「Wacros」の一番下にある「User Defined」をクリック
先ほど名前をつけたスクリプトが表示されるので、選択
これで一気にマテリアルが書き換えられる。
具体的には、以下を対称フィギュアのマテリアル全てに対してやっている
プレビュー画面が何故か更新されない、という謎の現象はあるものの、なかなか楽ちんだ。本当に役立つ応用例はこれから考えていくことにして、今回の覚書を終わる。
関連: