━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ◇ - ◇ - ◇ - ◇ - 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 それでは失礼します!押忍!【タルタル】