以下のチュートリアルでは、第 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" ( on isChecked return xViewChecker.getCheckerName xViewChecker.activeIndex == "Face Area Checker" and xViewChecker.on == true on execute do if (xViewChecker.getCheckerName xViewChecker.activeIndex == "Face Area Checker" and xViewChecker.on == true) then xViewChecker.on = false else ( local theIndex = 0 for i = 1 to xViewChecker.getNumCheckers() do if xViewChecker.getCheckerName i == "Face Area Checker" do theIndex = i if theIndex > 0 do ( xViewChecker.setActiveCheckerID(xViewChecker.getCheckerID theIndex) xViewChecker.on =true ) ) )--end MacroScript
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 を返します。
on execute do
(
マクロ スクリプトが実際に呼び出されると、実行ハンドラが呼び出されます。
if (xViewChecker.getCheckerName xViewChecker.activeIndex == "Face Area Checker" and xViewChecker.on) then
isChecked ハンドラで行ったのと同じチェックを実行します。
xViewChecker.on = false
このチェッカーがアクティブなチェッカーであり、チェックが有効になっている場合、単に xView チェックを無効にします。
else
(
そうでない場合、チェックを有効にする必要がありますが、最初に、アクティブなチェッカーとして設定するためにこのチェッカーの ID を調べる必要があります。
local theIndex = 0
ユーザ変数をゼロに初期化します。
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 システムを有効にします。
)
)
)
)--end MacroScript
これで、xView チェッカーとこれをコントロールするマクロ スクリプトが完成しました。次は、ビューポート メニューをカスタマイズし、このチェッカーを使用可能な xView チェッカーのリストに追加しましょう。
[Ctrl]+[E]キーを押してアクション項目を作成し、スクリプトを評価します。マクロ スクリプト コードのコピーが自動的に 3ds Max の \usermacrosフォルダに保存され、以降の 3ds Max セッションで使用可能となります。マクロ スクリプトのソース コードを \Startup または \Plugins フォルダに置く必要はありません。
この時点で、メイン メニュー > [カスタマイズ] (Customize) > [ユーザ インタフェースをカスタマイズ](Customize User Interface)を選択し、[ユーザ インタフェースをカスタマイズ](Customize User Interface)ダイアログ ボックスのメニュー タブを選択できます。
色 | アクション |
---|---|
赤 | 左のドロップダウン リストから xView カテゴリを選択します。 |
緑色 | 右のドロップダウン リストから[ビュー - xView](Views - xView)メニューを選択します。 |
紫 | セパレータのラインを 2 本、メニューにドラッグします。 |
黄色 | 2 本のセパレータの間に[Face Area Checker Display Mode]アクション項目をドラッグします。 |
青 | カスタム インタフェースをディスクに保存して、変更を永続的なものにします。CUI ファイルの上書きを確定します。 |
前