メニューでカスタマイズできる内容

 
 
 

Softimage のカスタム メニューは、自己インストール プラグインとしてのみ作成できます。 自己インストール メニューには、定義(メニューに表示される項目、その動作の仕方、および外観)、そして提供したい追加のカスタム関数(該当メニュー項目をクリックしたときに実行されるプロシージャ)が組み込まれています。

ここでは、カスタム メニューの作成方法について詳しく説明する前に、まずメニューおよびそのコンポーネントの構造についての質疑応答を挙げておきます。

メニューの配置場所

メニュー上に表示されるものはすべて「メニュー項目」と呼ばれています。 メニュー項目のオリジン(コマンドまたはコールバックがインストールされた場所)に応じて、次のいずれかのシンボルがラベルの横に表示されます。

シンボル

オリジン

ユーザ ロケーション

ワークグループ ロケーション

(シンボルなし)

ファクトリ ロケーション

- または -

カスタム ロケーション(XSI_PLUGINS 環境変数で指定される場所)

メニューを定義する際には、次の項目をどれでも追加できます。

メニューの表示場所

選択できる場所は 100 以上あります(完全なリストについては、siMenuAnchorPoints を参照)。これらの場所は、メニュー アンカー ポイントと呼ばれ、メニュー登録中に指定します(「Softimage でのカスタム メニューの登録」を参照)。アンカー ポイントは、次の場所で使用できます。

ツールバー メニュー

ウィンドウ メニュー

コンテキスト メニュー

   

注:

コンテキスト メニューは、Scene Explorer および 3D ビューの両方に表示されます。

注:

メニューが Softimage に登録(インストール)された後は、プラグインのロード方法によって、メニュー アンカー ポイントが完全に固定されます。 各メニューのリンク先はメニューの登録時に PluginRegistrar に認識されますが、実際には、ユーザがその親メニューをアクティブにして初めて、メニューのリンク先がビルドされます。

ユーザ メニューの内容は固定されているか

静的メニューまたは動的メニューのどちらかを任意に作成できます。 メニューは Softimage にロードまたは再ロードされるたびに再ビルドされます。ただし、親メニュー(それらのメニューのアンカー先メニュー)が開いたときに毎回、メニューを再ビルドするかどうかをユーザが選択することもできます。

たとえば、(MenuItem.Filter プロパティを使用して)メニュー上の項目にフィルタを割り当てることにより、メニューを表示する前に、メニューを表示先のオブジェクトまたは選択されたオブジェクトと突き合わせて検証することができます。カスタム メニュー項目は、フィルタの条件を満たさない場合、淡色表示されます。また、コンテキスト メニューにアタッチされた場合は削除されます。

あるいは、一定の条件が満たされない場合だけメニュー項目を非表示にすることもできます。 たとえば、ユーザ メニューの Init コールバックは次のような形式になります。

if ( Selection.Count > 0) {
		menu.AddCommandItem( "Add Duck To Water", "AddDuckToWater" );
	} else {
		menu.AddCommandItem( "Drain Tub", "DrainTub" );
	}

	menu.AddCommandItem( "Add More Hot Water", "AddMoreHotWater" );

このサンプルでは、ユーザがメニューを開いたときに現在のシーン内で何も選択しない限り、表示されるのは Drain Tub コマンド項目および Add More Hot Water コマンド項目だけです。 何かを選択した場合は、Add Duck to Water コマンド項目および Add More Hot Water コマンド項目が表示されます。

デフォルトでは、メニューは動的です。 ユーザ メニューを静的メニューにするには、RegisterMenu (PluginRegistrar) メソッドを XSILoadPlugin 登録コールバック内で呼び出す際に、Dynamic パラメータを false に設定してください。

自己インストール メニュー プラグインの使用は必須ですか?

はい。 メニューは、スクリプト作成やコンパイルが可能ですが、(Script Editorで)処理中に作成することはできません。 カスタム メニューを自己インストール プラグインとして実装するには、適切なコールバックを使用する必要があります。 詳細については、「自己インストール プラグイン」を参照してください。