Poser覚書> ニュース > 挫折しない服作り更新情報

フィギュアの血色をよくするスクリプト (マテリアルのAmbientを自動設定する)

 選択フィギュアの、マテリアルの「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")
  return

 ambient_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したものをアップロードしておこう。

 →zip形式で上記スクリプトをダウンロード

使い方

 上記のスクリプトを以下のフォルダに「amb_1.py」(名前はアルファベットなら何でもOK)と名前をつけて保存する

<Poserインストールフォルダ>\Runtime\Python\poserScripts\Wacros\UserDefined

 Poserのマテリアルルームの「Wacros」の一番下にある「User Defined」をクリック

 

先ほど名前をつけたスクリプトが表示されるので、選択

 

 これで一気にマテリアルが書き換えられる。

 具体的には、以下を対称フィギュアのマテリアル全てに対してやっている

  • Ambient_Colorを白に設定
  • Ambient_Valueを0.3に設定
  • Diffuse_Colorに繋がっているノードがあれば、Ambient_Colorに接続

 プレビュー画面が何故か更新されない、という謎の現象はあるものの、なかなか楽ちんだ。本当に役立つ応用例はこれから考えていくことにして、今回の覚書を終わる。

関連:

次のPoserチュートリアル「挫折しない服作り」 Poser9/PoserPro2012に対応へ


Poser覚書> ニュース > 挫折しない服作り更新情報 もくじ