チュートリアル - 面領域 xView チェッカーの開発 - 第 4 部 |
以下のチュートリアルでは、第 1 部、第 2 部、第 3 部で作成した xView チェッカーを、ビューポート メニューに追加できるマクロ スクリプトを使用して拡張し、簡単にアクセスできるようにします。
xView チェッカーは、 3ds Max 2010 以降で使用可能です。
全体の流れ: |
面領域チェッカーのオン/オフを切り替えるマクロスクリプトを作成します。 |
チェッカーが有効である場合に表示する 'on Checked do()' ハンドラを作成します。 |
現在のシステムの状態に従ってチェッカーをオン/オフする 'on Execute do()' ハンドラを作成します。 |
MacroScript xView_Face_Area_Checker enabledIn:#("max") buttonText:"Face Area" category:"xView" internalCategory:"xView" tooltip:"Face Area Checker Display Mode" (
3ds Max 2010 にあらかじめ組み込まれている既存の xView マクロ スクリプトを基にして、面領域チェッカー用の新しいマクロ スクリプト ヘッダを作成します。
on isChecked return xViewChecker.getCheckerName xViewChecker.activeIndex == "Face Area Checker" and xViewChecker.on
3ds Max が、UI のアクション項目にチェックを付ける必要があるかどうかを調べたい場合(ボタン、メニュー項目またはクアッド メニュー項目として表示されている場合)、isChecked ハンドラを呼び出します。ここでは、現在アクティブなチェッカーがこのチェッカーの名前と一致し、チェックが一般に有効である場合は true を返します。
マクロ スクリプトが実際に呼び出されると、実行ハンドラが呼び出されます。
if (xViewChecker.getCheckerName xViewChecker.activeIndex == "Face Area Checker" and xViewChecker.on) then
isChecked ハンドラで行ったのと同じチェックを実行します。
このチェッカーがアクティブなチェッカーであり、チェックが有効になっている場合、単に xView チェックを無効にします。
そうでない場合、チェックを有効にする必要がありますが、最初に、アクティブなチェッカーとして設定するためにこのチェッカーの ID を調べる必要があります。
for i = 1 to xViewChecker.getNumCheckers() do if xViewChecker.getCheckerName i == "Face Area Checker" do theIndex = i
次に、1 から存在するチェッカーの数までループし、名前をこのチェッカーの名前と比較します。一致するチェッカーが見つかったら、そのインデックスを変数 theIndex に記録します。
if theIndex > 0 do ( xViewChecker.setActiveCheckerID(xViewChecker.getCheckerIDtheIndex) xViewChecker.on = true
xView システムに登録されているすべてのチェッカーをループした後、変数 theIndex にゼロよりも大きい値が格納されている場合は、このチェッカーは実際に使用可能であり、アクセスすることができます。
アクティブなチェッカーの ID を検出されたインデックスを持つチェッカーの ID に設定します。
これで、xView チェッカーとこれをコントロールするマクロ スクリプトが完成しました。次は、ビューポート メニューをカスタマイズし、このチェッカーを使用可能な xView チェッカーのリストに追加しましょう。
Ctrl+Eキーを押してアクション項目を作成し、スクリプトを評価します。マクロ スクリプト コードのコピーが自動的に 3ds Max の ¥usermacrosフォルダに保存され、以降の 3ds Max セッションで使用可能となります。マクロ スクリプトのソース コードを \Startup または ¥Plugins フォルダに置く必要はありません。
この時点で、メイン メニュー > [カスタマイズ](Customize) > [ユーザ インタフェースをカスタマイズ](Customize User Interface)を選択し、[ユーザ インタフェースをカスタマイズ](Customize User Interface)ダイアログ ボックスのメニュー タブを選択できます。