[3dsMax]スクリプトを使用し、エリアライトのサンプル数を一括変更する。

選択した複数のエリアライトのサンプリング数を一括変更する。

▼方法
サンプル数を変更したいエリアライトを選択する。(複数選択可能)
以下のスクリプトを実行する。

sentaku = $

for i in sentaku do(
	i.mr_NumAreaSamples = 128
	)

↑のスクリプトを実行すると、選択したエリアライトのサンプル数が128になる。
128の部分を64にすれば、サンプル数は64になる。

▼処理の流れ

変数sentakuに、選択したエリアライトを入れる。
変数sentakuは、エリアライトを複数選択している場合、変数は配列扱いになる。

forループでは、変数sentakuの中にある要素の数だけ処理を繰り返す。
(つまり、変数sentakuに入れたエリアライトの数だけ処理を繰り返す。)
変数iに、変数sentakuの要素(エリアライト)が順番に入り、サンプル数を変更する処理が実行される。

▼ユーザーインターフェイスを付け、ドロップダウンリストからサンプル数を選択出来るようにする。

新規スクリプトへ、↓のコードをコピペして実行するだけでOK。
rollout changeSelectedLightSample "選択したエリアライトのサンプル数を一括変更" width:320 height:240
(
	dropDownList ddl1 "選択したエリアライトに設定したいsample数" pos:[50,140] width:220 height:41 items:#("初期値(32)","2","4","8","16","32","64","128","256","512","1024")
	button btn1 "実行する" pos:[110,50] width:100 height:50
	
	on btn1 pressed do
		(
		case ddl1.selection of
			(
			1 :kazu = 32
			2 :kazu = 2
			3 :kazu = 4
			4 :kazu = 8
			5 :kazu = 16
			6 :kazu = 32
			7 :kazu = 64
			8 :kazu = 128
			9 :kazu = 256
			10 :kazu = 512
			11 :kazu = 1024
			)
		
		sentaku = $
		
		for i in sentaku do
			(
			i.mr_NumAreaSamples = kazu
			)
		)
)
createDialog changeSelectedLightSample 320 240

↓コードのブロックを色分け

▼スクリプトの解説
rollout changeSelectedLightSample(~)
changeSelectedLightSampleという名前のUI(ユーザーインターフェイス)を定義する。

	dropDownList ddl1~
	ddl1と言う名前のドロップダウンリストを制作。

	button btn1~
	btn1という名前のボタンを制作。

	on btn1 pressed do(~)
	btn1という名前のボタンが押された時に、括弧内に定義した処理を実行する。


	case ddl1.selection of(~)
	ddl1と言う名前のドロップダウンリストで選択された項目の番号により処理を変える。
	処理の内容は、選択された項目の番号により、変数kazuに入れる値を変える。

	sentaku = $
	選択しているオブジェクトを変数sentakuに入れる。

	for i in sentaku do(~)
	forループ処理。変数sentakuのオブジェクトの数だけ、処理を繰り返す。
	変数iには変数sentakuに入っているオブジェクトが1ループ毎に順番に入っていく。

	i.mr_NumAreaSamples = kazu
	処理の内容は、変数iに入っているエリアライトのサンプル数を、変数kazuに入っている値にする。

createDialog changeSelectedLightSample 320 24
UIを制作する。

スクリプトのユーザーインターフェイスは、ビジュアルMAXScriptエディタで簡単に制作できる。
ビジュアルMAXScriptエディタについては、↓の本が参考になった。

広告

コメントを残す

メールアドレスが公開されることはありません。

スパム対策用の計算式と画像認証です。↓の欄を入力しないとコメントが出来ません。 *

*