自己インストール プラグインのコールバック

プラグインは XSILoadPlugin コールバックを実装している必要があります。このコールバックは、コマンドやプロパティといったプラグイン項目の登録を担います。

プラグイン項目のプロパティは、コールバック関数によって実装されます。 たとえば、カスタム コマンドを実装するためには、Execute コールバックを記述します。 コマンドに「MyCommand」という名前を付けた場合、Softimage が前提とするのは「MyCommand_Execute」という名前のコールバック関数です。

プラグイン項目名にスペースが含まれている場合、コールバック関数の名前からスペースを削除する必要があります。 たとえば、あるプロパティに My Custom Property という名前が付けられている場合、そのプロパティの Define コールバック関数は MyCustomProperty_Define という名前にする必要があります。

このセクションでは、コールバックを以下のプラグイン タイプ別に説明します。


プラグイン コールバック

コールバック 説明
XSILoadPlugin Softimage を起動すると、ユーザ ロケーション内およびワークグループ内の Application¥Plugins フォルダなどの特定フォルダで、XSILoadPlugin を実装するプラグインが検索されます。 自己インストール プラグインが見つかると、Softimage はそのプラグインをロードし、その XSILoadPlugin 関数を呼び出します。

XSILoadPlugin はプラグイン項目(コマンド、メニュー、プロパティなど)を登録し、プラグイン プロパティ(バージョン番号、ヘルプ ファイルの場所など)を設定します。
XSIUnloadPlugin Softimage がプラグインをアンロードするときに発生します。


コマンド コールバック

コールバック 説明
Execute (コマンド) コマンドが起動されると発生します。 コマンドの引数が存在する場合は取得し、コマンドを実行し、結果(戻り値)が存在する場合は返します。
Init (コマンド) 省略可。 プラグインのロード後に、初めてコマンドが起動されると発生します。 コマンドの戻り値と引数を指定します。
Undo 省略可。C++ API のみ。 カスタム コマンドが取り消されるときに発生します。 戻り値は無視されます。
Redo 省略可。C++ API のみ。 カスタム コマンドがやり直されるときに発生します。 戻り値は無視されます。
TermUndoRedo 省略可。C++ API のみ。 カスタム コマンドを元に戻すイベントが Softimage の Undo スタックから削除されると発生します。 このコールバックは、通常、このコマンドを元に戻すために必要なメモリを解放するために使用します。 戻り値は無視されます。
Term 省略可。 Softimage からプラグインが削除されると発生します(Softimage が XSIUnloadPlugin を呼び出す直前)。 たとえば、Term は Softimage の終了時やプラグインのアンロード時にトリガーされます。
UnloadReload プラグインのキャッシュ(再ロード)時またはキャッシュ解放(アンロード)時に発生します。 デフォルトではすべてのプラグインがキャッシュされますが、ユーザはキャッシュからプラグインを削除することができます(プラグイン ツリーでプラグインを右クリックし、[キャッシュ済み]チェックマークを外します)。


オペレータ コールバック

コールバック 説明
Define オペレータがオブジェクトに適用されると発生します(たとえば、ProjectItem.AddCustomOp または Parameter.AddCustomOp を使用する場合)。 ここで、オペレータにカスタム パラメータを追加します。
DefineLayout Softimage セッションで Define コールバックが初めて実行された直後に発生します。 また、PPG.Refresh メソッドを使用すると、このコールバックを強制的に発生させることができます。 ここで、オペレータのパラメータに関してプロパティ ページに表示する UI コントロールのレイアウトを定義します。
Init (オペレータ) オペレータのインスタンスがインスタンス化されるときに発生します。 Define とは異なり、Init は新しく作成されたオペレータについても、パーシステンスからロードされたオペレータについても呼び出されます。 ここで、キャッシュされたオペレータ データを初期化します。
OnInit プロパティ ページの表示ごとに発生します(たとえば、InspectObj でプロパティの検査が行われるたびに発生します)。 UI コントロールの初期値を設定できます。
OnChanged UI コントロールの値が変化するたびに発生します。
OnClicked コマンド ボタンがクリックされると発生します。
OnClosed [閉じる]ボタンまたはキーボード ショートカットによってプロパティ ページが閉じられるときに発生します。
OnTab ユーザがタブをクリックすると発生します。
PPGEvent プロパティ ページ イベントの C++ および C# コールバック(OnInitOnChangedOnClickedOnClosed、および OnTab)。
UnloadReload プラグインのキャッシュ(再ロード)時またはキャッシュ解放(アンロード)時に発生します。 デフォルトではすべてのプラグインがキャッシュされますが、ユーザはキャッシュからプラグインを削除することができます(プラグイン ツリーでプラグインを右クリックし、[キャッシュ済み]チェックマークを外します)。
Update オペレータが自己評価すると予測されるときは常に発生します。 これは最も重要なコールバックであり、オペレータが自己評価すると予測されるときは常に呼び出されます。
複数の出力がある場合は、Update 関数が出力ポートごとに一度呼び出されます。


プリミティブ コールバック

コールバック 説明
Define カスタム プリミティブが作成されるたびに発生します。ここにカスタム プリミティブに対するパラメータを追加することができます。
DefineLayout Softimage セッションで Define コールバックが初めて実行された直後に発生します。 また、PPG.Refresh メソッドを使用すると、このコールバックを強制的に発生させることができます。 ここで、プロパティ ページに表示する UI コントロールのレイアウトを定義します。
PPGEvent すべてのプロパティ ページ イベントの C + + コールバック。
Draw 描画するカスタム プリミティブが要求されているときに発生します。この時点で GL の状態が設定され、プラグインはプリミティブを描画する必要があります。図面座標はオブジェクトのローカル空間に設定されます。
BoundingBox カスタム プリミティブのバウンディング ボックスが要求されているときに発生します。プラグインは、コールバック コンテキスト属性によって、バウンディング ボックスの上限および下限を設定します。
ConvertToGeom カスタム プリミティブが CreatePrim や SIConvert コマンドに渡されたときに発生します。このプラグインは、コールバックから読み込まれたジオメトリの構造を更新してジオメトリ変換を実行するためのものです。現在はポリゴン メッシュのみがサポートされています。'CustomPrimitiveContext' には、ジオメトリ オブジェクトを返す CustomPrimitiveContext::GetGeometry()メソッドが含まれています。このコールバックは現在ポリゴン メッシュのみサポートしているため、オブジェクトがポリゴン メッシュであると想定しておいても安全ですが、将来の拡張性を考えるならば、有効なポリゴン メッシュかどうか確認することをお勧めします。


プロパティ コールバック

コールバック 説明
Define プロパティがオブジェクトに追加されると発生します(たとえば、SceneItem.AddPropertyRenderer.AddProperty などを使用する場合)。 ここで、プロパティにパラメータを追加します。
DefineLayout Softimage セッションで Define コールバックが初めて実行された直後に発生します。 また、PPG.Refresh メソッドを使用すると、このコールバックを強制的に発生させることができます。 ここで、プロパティ ページに表示する UI コントロールのレイアウトを定義します。
OnInit プロパティ ページが表示されるたびに発生します(たとえば、InspectObj でプロパティの検査が行われるたびに発生します)。 UI コントロールの変更と再描画ができます。
OnChanged UI コントロールの値が変化するたびに発生します。
OnClicked コマンド ボタンがクリックされると発生します。
OnClosed [閉じる]ボタンまたはキーボード ショートカットによってプロパティ ページが閉じられるときに発生します。
OnTab ユーザがタブをクリックすると発生します。
PPGEvent プロパティ ページ イベントの C++ および C# コールバック(OnInitOnChangedOnClickedOnClosed、および OnTab)。
Term プロパティの削除時に発生します。
OnBeginValueChange (GridData) グリッド データ パラメータに対する修正を適用する前に発生します。
OnEndValueChange (GridData) グリッド データ パラメータに修正が適用された後に発生します。
OnBeginSelectionChange (GridData) グリッド データ パラメータに関連付けられているグリッド ウィジェットに選択の変更を適用する前に発生します。
OnEndSelectionChange (GridData) グリッド データ パラメータに関連付けられているグリッド ウィジェットに選択の変更を適用した後に発生します。
OnButtonClicked (GridData) グリッド データ パラメータに関連付けられているグリッド ウィジェットでボタンがクリックされたときに発生します。
OnHeaderDoubleClick (GridData) グリッド データ パラメータに関連付けられているグリッド ウィジェットでヘッダーがダブルクリックされたときに発生します。
OnContextMenuInit (GridData) グリッド データ パラメータに関連付けられているグリッド ウィジェット上でマウスが右クリックされたときに発生します。
OnContextMenuSelected (GridData) グリッド データ パラメータに関連付けられているグリッド ウィジェット上でコンテキスト メニュー項目が選択されたときに発生します。


イベント コールバック

コールバック 説明
OnEvent 関連イベントが起きると発生します(たとえば、siOnSelectionChange イベントの OnEvent コールバックは、ユーザがオブジェクトを選択または選択解除すると発生します)。
Term プロパティの削除時に発生します。
UnloadReload プラグインのキャッシュ(再ロード)時またはキャッシュ解放(アンロード)時に発生します。 デフォルトではすべてのプラグインがキャッシュされますが、ユーザはキャッシュからプラグインを削除することができます(プラグイン ツリーでプラグインを右クリックし、[キャッシュ済み]チェックマークを外します)。


フィルタ コールバック

コールバック 説明
Match ユーザが 3D ビューおよびスケマティックでオブジェクトを選択すると発生します。 Match は、エレメントがフィルタ要件に一致するかどうかを判別します。
Subset ユーザが 3D ビューでサブコンポーネントを選択すると発生します。または、[Explorer]ビューに表示されるノードをフィルタリングするために発生します。 Subset はエレメント(オブジェクトまたはサブコンポーネント)のコレクションを使用し、その中からフィルタ要件に一致するエレメントを割り出します。
IsApplicable フィルタが現在の選択に適用可能かどうかを判別するために、Softimage によってトリガーされます(たとえば、サブコンポーネントのフィルタは 3D オブジェクトには適用されません)。
Init (フィルタ) プラグインがロードされた後(XSILoadPlugin から戻り値が返された後)に発生します。 たとえば、Init は Softimage を起動するときや Plugin Manager でプラグインをロードするときに実行されます。
Term Softimage からプラグインが削除されると発生します(Softimage が XSIUnloadPlugin を呼び出す直前)。 たとえば、Term は Softimage の終了時やプラグインのアンロード時にトリガーされます。
UnloadReload プラグインのキャッシュ(再ロード)時またはキャッシュ解放(アンロード)時に発生します。 デフォルトではすべてのプラグインがキャッシュされますが、ユーザはキャッシュからプラグインを削除することができます(プラグイン ツリーでプラグインを右クリックし、[キャッシュ済み]チェックマークを外します)。


グラフィック シーケンサ コールバック

コールバック 説明
Init (グラフィック シーケンサ) プラグインがロードされた後に発生します(つまり、XSILoadPlugin から戻り値が返された後)。 たとえば、Init は Softimage を起動するときや Plugin Manager でプラグインをロードするときに実行されます。 ここで、グラフィック シーケンサでビューポート モードまたはコールバックを登録します。
Execute (グラフィック シーケンサ) ビューポート モードまたはビューポート コールバックを実行します。
Term (グラフィック シーケンサ) 省略可。 ここで、ビューポイント モードまたはコールバックで使用されるインスタンス独自のデータを初期化および解放します。
UnloadReload プラグインのキャッシュ(再ロード)時またはキャッシュ解放(アンロード)時に発生します。 デフォルトではすべてのプラグインがキャッシュされますが、ユーザはキャッシュからプラグインを削除することができます(プラグイン ツリーでプラグインを右クリックし、[キャッシュ済み]チェックマークを外します)。


メニュー コールバック

コールバック 説明
Init (メニュー) ダイナミック メニューの場合、このコールバックは、メニューがアクセスされるたびに発生します。 スタティック メニューの場合、このコールバックは、プラグインのロード後に初めてメニューがアクセスされると発生します。 ここで、メニューに項目とコマンドを追加します。
メニュー項目のコールバック ユーザがメニュー項目を選択すると発生します。 メニュー項目コールバックの名前は、Init コールバックでの Menu.AddCallbackItem の呼び出し時に指定されます。
Term Softimage からプラグインが削除されると発生します(Softimage が XSIUnloadPlugin を呼び出す直前)。 たとえば、Term は Softimage の終了時、またはプラグインのアンロード時や更新時にトリガーされます。

Term は、ある時点で Init (Menu) が発生した場合にのみ実行されます。 メニューが一度も開かない場合、Term は何も実行しません。
UnloadReload プラグインのキャッシュ(再ロード)時またはキャッシュ解放(アンロード)時に発生します。 デフォルトではすべてのプラグインがキャッシュされますが、ユーザはキャッシュからプラグインを削除することができます(プラグイン ツリーでプラグインを右クリックし、[キャッシュ済み]チェックマークを外します)。


カスタム ディスプレイ(ビュー)コールバック

コールバック 説明
Init (カスタム ディスプレイ) プラグインがロードされた後に発生します(つまり、XSILoadPlugin から戻り値が返された後)。 たとえば、Init は Softimage を起動するときや Plugin Manager でプラグインをロードするときに実行されます。 カスタム ディスプレイ ウィンドウを初期化するために使用します。
Notify シーンに何らかの変化があると発生します(たとえば、パラメータの変更、選択の変更などです)。
Term (カスタム ディスプレイ) トップレベルのウィンドウが破棄されるときに発生します。
UnloadReload プラグインのキャッシュ(再ロード)時またはキャッシュ解放(アンロード)時に発生します。 デフォルトではすべてのプラグインがキャッシュされますが、ユーザはキャッシュからプラグインを削除することができます(プラグイン ツリーでプラグインを右クリックし、[キャッシュ済み]チェックマークを外します)。


レンダラ コールバック

コールバック 説明
Init (レンダラ) プラグインがロードされた後に発生します(つまり、XSILoadPlugin から戻り値が返された後)。 たとえば、Init は Softimage を起動するときや Plugin Manager でプラグインをロードするときに実行されます。 レンダリング エンジンがサポートするプロセス タイプ、レンダラ オプションに使用するカスタム プロパティ、出力できるイメージ ファイル形式を Softimage に指定するために使用されます。
Process レンダリング エンジンがプロセスを実行するように要求されるときに常に発生します(たとえば、フレームをレンダリングするとき)。 これは、カスタム レンダラ プラグインで最も重要なコールバックです。
Abort Render Manager でプロセスを中止する必要があるときに発生します。 このコールバック関数はメッセンジャーにすぎず、Process コールバックが可能な限り迅速に中止をトリガーし、戻り値を得る必要があります。
Query Render Manager が何らかの情報をレンダラに問い合わせる必要があるときに発生します。
Quality 省略可。 Render Manager によって呼び出され、レンダ オプションの現在の「品質」レベルを返すとともに、その品質レベルのプリセットを設定します。
Cleanup 省略可。 現在のシーンが破棄されるときや、特定のレンダ プロセス(領域、パスのレンダなど)が、プロセスの完了後にデータをクリーン アップするように要求する場合に発生します。
UnloadReload プラグインのキャッシュ(再ロード)時またはキャッシュ解放(アンロード)時に発生します。 デフォルトではすべてのプラグインがキャッシュされますが、ユーザはキャッシュからプラグインを削除することができます(プラグイン ツリーでプラグインを右クリックし、[キャッシュ済み]チェックマークを外します)。


ICENode コールバック

コールバック 説明
Init (ICE ノード) プラグインがロードされた後に発生します(つまり、XSILoadPlugin から戻り値が返された後)。 たとえば、Init は Softimage を起動するときや Plugin Manager でプラグインをロードするときに実行されます。 ここで、キャッシュされたユーザ データを初期化します。
BeginEvaluate このコールバックは、登録された ICENode ごとに実装する必要があります。 評価フェーズは使用しているスレッドのプロセス モードに応じて、シングルスレッドまたはマルチスレッドのコンテキストで呼び出されます。
EndEvaluate このオプションのコールバックは、メモリの解放、リソースの消去、または BeginEvaluate で実行された作業を終了させるために必要な処理のためのシングルスレッド タスクです。
Evaluate このオプションのコールバックは、通常メモリがマルチスレッドの評価フェーズに備えて割り当てられるシングルスレッド フェーズで呼び出されます。
SubmitEvaluationPhaseInfo このコールバックはマルチフェーズ評価モードに必須です。現在の評価フェーズで使用する引き出されるポートを指定します。
UnloadReload プラグインのキャッシュ(再ロード)時またはキャッシュ解放(アンロード)時に発生します。 デフォルトではすべてのプラグインがキャッシュされますが、ユーザはキャッシュからプラグインを削除することができます(プラグイン ツリーでプラグインを右クリックし、[キャッシュ済み]チェックマークを外します)。


シェーダ コールバック

コールバック 説明
DefineInfo シェーダ プラグインがロードされた後に発生します(つまり、XSILoadPlugin から戻り値が返された後)。 たとえば、DefineInfo は Softimage を起動するときや Plugin Manager でプラグインをロードするときに発生します。 ここで、カスタム シェーダ定義を登録します。登録するとその定義が Render Tree のプリセット リストに表示されます。
Define (シェーダ) シェーダがレンダ ツリーでインスタンス化されるとき、またはパラメータに接続することでインスタンス化されるときに発生します。 このコールバックは、パラメータのリスト、カスタム シェーダに必要な PPGLayout を含む定義の登録に関与します。
UnloadReload プラグインのキャッシュ(再ロード)時またはキャッシュ解放(アンロード)時に発生します。 デフォルトではすべてのプラグインがキャッシュされますが、ユーザはキャッシュからプラグインを削除することができます(プラグイン ツリーでプラグインを右クリックし、[キャッシュ済み]チェックマークを外します)。


シェーダ パーサ コールバック

コールバック 説明
QueryParserSettings 起動時、または ParseInfo コールバックが発生する前の Preset Manager の更新時に発生します。 解析するファイルを探す場所と検索するファイル拡張子を Softimage に伝えます。
ParseInfo QueryParserSettings コールバックで設定された場所とタイプに一致するファイルを Softimage が解析するときに発生します。 ParseInfo コールバックは、シェーダ定義のリストをファイル内の情報からビルドする処理に関与します。
Parse このパーサの言語を使用して実装されるシェーダがインスタンス化されるときに発生します。 関連付けられたシェーダ ファイルを解析し、シェーダ定義をそのパラメータの定義および属性と一緒に登録します。
UnloadReload プラグインのキャッシュ(再ロード)時またはキャッシュ解放(アンロード)時に発生します。 デフォルトではすべてのプラグインがキャッシュされますが、ユーザはキャッシュからプラグインを削除することができます(プラグイン ツリーでプラグインを右クリックし、[キャッシュ済み]チェックマークを外します)。


リアルタイム シェーダ コールバック

コールバック 説明
RTS_GetVersion (リアルタイム シェーダ) リアルタイム シェーダ プラグインごとに実装する必要があります。
Init (リアルタイム シェーダ) シェーダがセッション内で初めてインスタンス化されるときに発生します。
GetAttributeList レンダリングを実行するために必要な属性をシェーダが Softimage に伝えることができます。
Execute (リアルタイム シェーダ) リアルタイム シェーダをレンダリングするためのメイン エントリ ポイントです。
Term (リアルタイム シェーダ) シェーダが削除されるときに発生します。