2008年12月16日 星期二

如何用script來改變多重的shader參數

昨天遇到一個問題,lighter希望把所有的shader的自發光全部關掉,所以就執行了以下的script,避免手動調整上百個shader...

foreach esb [slim GetAppearances -template "*Incandescence*"] { foreach ds [$esb GetProperties -name "Intensity"] { $ds SetValue 0};};

意思是找出所有類的Incandescence,把intensity值改成零

如果只想改指定的palette而不動到其他shader的話,可以用下面的指令...

set ppp [slim FindPalette "qq_s_novaball_stadium"];foreach esb [$ppp GetAppearances -template "*Incandescence*"] { foreach ds [$esb GetProperties -name "Intensity"] { $ds SetValue 0.01 };};

意思是在 qq_s_novaball_stadium 的palette裡,找出所有類的Incandescence,把intensity值改成0.01