━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ◇ - ◇ - ◇ - ◇ - 2. 押忍!Shade スクリプト部 - ◇ - ◇ - ◇ - ◇ - ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 押忍!タルタルです。 前回に引き続き全国の書店で絶賛発売中の「Shadeスクリプト大全」より、便 利なスクリプトを紹介します、押忍! 今回はろくろを法線方向に回転させるスクリプトです、押忍! ##ここから #select_lathe_normal.py def local_to_world_v3(vec3, mat4): lx = vec3[0] ly = vec3[1] lz = vec3[2] wx = lx*mat4[0][0] + ly*mat4[1][0] + lz*mat4[2][0] + mat4[3][0] wy = lx*mat4[0][1] + ly*mat4[1][1] + lz*mat4[2][1] + mat4[3][1] wz = lx*mat4[0][2] + ly*mat4[1][2] + lz*mat4[2][2] + mat4[3][2] return [wx, wy, wz] def mainprg(): shape = xshade.scene().active_shape() if shape.type != 4: xshade.show_message_box("線形状を選択してください", False) return if shape.number_of_active_control_points < 3: alart_msg = "3つ以上のポイントを選択してください" xshade.show_message_box(alart_msg, False) return allcpnum = shape.total_number_of_control_points activecpnum = [] for i in range(allcpnum): if shape.is_control_point_selected(i): activecpnum.append(i) active_vec3s = [] for i in activecpnum: active_vec3s.append(shape.control_point(i).position) l_to_w_mat4 = shape.local_to_world_matrix for i in range(3): active_vec3s[i]=local_to_world_v3(active_vec3s[i], l_to_w_mat4) plane_lmn = xshade.make_plane_equation(active_vec3s) z_mat = xshade.get_zmat(plane_lmn[0:3]) umat = xshade.unmatrix(z_mat) eu = umat[2] qu = xshade.quaternion_from_euler(eu) xshade.scene().lathe_rotation = qu mainprg() print "finish" ##ここまで - 使い方 線形状の3つのコントロールポイントを選択した状態でスクリプトを実行する と、3点を結ぶ三角形がZ面と平行になる様、ろくろが回転します。 - 手順 1. 上記のスクリプトをスクリプトウインドウにコピー&ペーストして言語を Pythonにする。 2. 線形状の3つのコントロールポイントを選択し、スクリプトウインドウの 実行ボタンを押す。 ※Shadeの本体プログラムのあるフォルダ内のscriptsフォルダにPythonファイ ルとして保存しておくと、Shadeのスクリプトメニュー にスクリプトファイル 名が表示され、実行できるようになります。 - 注意 Shade 7シリーズの professional, standardでWin/Mac共に動作します。(旧 バージョンでは動作を保証いたしません。) 本スクリプトはメールマガジン掲載のためオリジナルより若干の変更を行って おります。 - 説明 本スクリプトは「Shadeスクリプト大全」の222ページ[基本編] 第6章 スクリ プト作成(上級編)からの紹介です。 「Shadeスクリプト大全」には他にも便利なスクリプトや命令の説明が数多く 載っています。詳しくは下のURLをチゲラ! BNN Books: Shadeスクリプト大全 http://go.e-frontier.co.jp/?type=2990 それでは失礼します!押忍!【タルタル】