Shade online フォーラム
ログイン
ユーザ名:

パスワード:

IDとパスワードを記憶

パスワード紛失


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ◇ - ◇ - ◇ - ◇ -  2. 押忍!Shade スクリプト部  - ◇ - ◇ - ◇ - ◇
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
押忍!タルタルです。

おやっ?
こんなところに見慣れぬ本が。
なになに、「Shadeスクリプト大全」!?

という訳で前回に引き続き全国の書店で絶賛発売中の「Shadeスクリプト大全」
より、選択した複数の形状の色を、先頭の形状から最後の形状へと段階的に変
化させるスクリプトを紹介します、押忍!

##ここから
#select_gradation.py

def mainprg():
objs = xshade.scene().active_shapes
if len(objs) < 3:
xshade.show_message_box("3つ以上の形状を選択してください",False)
return
ordlist = []
for obj in objs:
ordlist.append(obj.ordinal)
ordlist.sort()
ord_obj = xshade.scene().get_shape_by_ordinal(ordlist[0])

if not ord_obj.surface.has_diffuse:
xshade.show_message_box("拡散反射色が設定されていません", False)
return

rgb_a = ord_obj.surface.diffuse_color

ord_obj = xshade.scene().get_shape_by_ordinal(ordlist.pop())

if not ord_obj.surface.has_diffuse:
xshade.show_message_box("拡散反射色が設定されていません", False)
return

rgb_b = ord_obj.surface.diffuse_color

nr = rgb_b[0] - rgb_a[0]
ng = rgb_b[1] - rgb_a[1]
nb = rgb_b[2] - rgb_a[2]

add_r = nr/len(ordlist)
add_g = ng/len(ordlist)
add_b = nb/len(ordlist)

del(ordlist[0])

nr = rgb_a[0]
ng = rgb_a[1]
nb = rgb_a[2]

for i in ordlist:
nr = nr + add_r
ng = ng + add_g
nb = nb + add_b
ord_obj = xshade.scene().get_shape_by_ordinal(i)
ord_obj.surface.diffuse_color = [nr, ng, nb]

mainprg()
print "終了しました"
##ここまで

- 使い方
本スクリプトは選択された複数の形状が順にグラデーションになるよう拡散反
射色を設定します。

例えば以下のようなファイルに対して5つの球を選択しスクリプトを実行する
と、赤と青に挟まれた3つの球が赤から青へのグラデーションになるよう、拡
散反射色が設定されます。

▼ルートパート
 球(拡散反射色:赤)
 球(拡散反射色:白)
 球(拡散反射色:白)
 球(拡散反射色:白)
 球(拡散反射色:青)

- 手順
1. 上記のスクリプトをスクリプトウインドウにコピー&ペーストして言語を
Pythonにする。
2. 形状を選択しスクリプトウインドウの実行ボタンを押す。
※Shadeの本体プログラムのあるフォルダ内のscriptsフォルダにPythonファイ
ルとして保存しておくと、Shadeのスクリプトメニューにスクリプトファイル
名が表示され、実行できるようになります。

- 注意
Shade 7シリーズの professional, standardでWin/Mac共に動作します。(旧
バージョンでは動作を保証いたしません)

- 説明
本スクリプトは「Shadeスクリプト大全」の167ページ[基本編] 第2章 スクリ
プト作成(中級編)からの紹介です。
「Shadeスクリプト大全」には他にも便利なスクリプトや命令の説明が数多く
載っています。詳しくは下のURLをチゲラ!

BNN Books: Shadeスクリプト大全
http://go.e-frontier.co.jp/?type=1972

それでは失礼します!押忍!【タルタル】