一般イベント コールバック機能

 

   

コールバック通知 - クイック ナビゲーション

MAXScript では、3ds Max でサポートされているすべての通知イベント(プレ/ポスト シーン ファイルを開く、新規、リセット、シーン ファイルの保存、プレ/ポスト レンダリング、選択の変更など)に対し、コールバック スクリプトを登録することができます。

1 つの通知イベントに対し、任意の数のコールバック スクリプトを指定できます。

コールバック スクリプトは、ID の付いたセットとしてまとめることができ、個々に、または ID を付けたセット全体を削除することができます。

また、コールバック スクリプトは persistent として指定できるため、現在開いているファイルとともに保存およびロードすることができます。

トピック ナビゲーション  

コールバックの追加

コールバックの削除

コールバックの検査

コールバックに関する補足情報

アニメーションの通知

レンダリング ダイアログ ボックスとレンダラー プラグインの通知

イメージ ビューワ表示の通知

レンダラーの通知

FileLink の通知

ファイルの通知

外部参照の通知

レイヤ システムの通知

操作モードの通知

モディファイヤ パネルの通知

モディファイヤの通知

マテリアル ライブラリの通知

マテリアルの通知

ノード関連の通知

システムの通知

ラジオシティの通知

システムを元に戻す場合の通知

スケマティク ビューの通知

アセット ブラウザの通知

名前付き選択セットの通知

Direct3D デバイスの通知

その他の通知

コールバックの追加

コールバックを追加するには、以下の構文を使用します。

callbacks.addScript <callback_type_name> (<script_string> | <script_stringstream> | fileName:<filename_string>) [id:<name>] [persistent:<boolean>] 		

このメソッドは、新規のコールバック スクリプトを登録するのに使用します。最初の引数で、このスクリプトが関連付けられている通知イベントのタイプが指定されている必要があります。以下に有効な callback_type_name 値を示します。

スクリプトは、実行するスクリプトのテキストを含む String 値または StringStream 値として、または fileName: キーワード引数として供給されます。キーワード引数の場合は、イベント通知コールバックが発生するたびに、名前を付けたファイルがロードおよび実行されます。直接文字列を指定したり、 fileName: を指定したりできますが、両方を指定することはできません。

オプションの id: パラメータを使用して、単独またはグループのコールバックに固有の名前でタグを付け、グループ内のすべてのコールバックをその他のコールバック(他のスクリプト ツールで登録したコールバックなど)に干渉することなく削除できます。

オプションの persistent: パラメータを使用して、スクリプトを現在開いているシーン ファイルに保存するか、ファイルの開閉操作に関係なく、常に実行できるグローバル コールバック スクリプトとして使用するかどうかを指定できます。 true 値の場合、スクリプトは現在のファイルに保存され、このファイルを開くたびにコールバック用にロードおよび登録されます。persistent コールバック スクリプトは、新規のファイルをロードしたりリセットを実行すると常に削除されるため、あるファイルの persistent スクリプトが他のファイルに間違ってコピーされることはありません。このパラメータの既定値は false です。つまり、このスクリプトはグローバル スクリプトであり、persistent ではありません。

例:

callbacks.addScript #preRender "setUpRenderGeom()" id:#jbwRender

レンダリングを実行する直前に呼び出される新規のコールバック スクリプトを登録します。このスクリプトにより関数が呼び出されます(この関数はあらかじめ設定されている必要があります)。スクリプトには固有の ID が割り当てられ、削除時の選択が可能になります。

コールバックの削除

callbacks.removeScripts [<callback_type_name>] [id:<name>] 	 

このメソッドは、1 つまたは複数のコールバック スクリプトを登録解除および削除します。

コールバック イベント タイプの名前を指定すると、そのイベント タイプに対するすべてのコールバック スクリプトが削除されます。

id: を指定するだけで、その ID を持つすべてのイベント内のコールバック スクリプトが削除されます。

上記の両方を指定すると、指定したイベント タイプと ID に制限して削除することができます。

   

コールバックの検査

callbacks.show [<callback_type_name>] [id:<name>]   

このメソッドは、[リスナー](Listener)ウィンドウに現在のコールバック スクリプトをリストします。

3ds Max 2009 以降 でオプションのコールバック タイプ名引数を指定した場合、そのタイプのコールバックだけが表示されます。

オプション キーワード引数 id: を指定した場合、その ID を持つコールバックだけが表示されます。

両方を指定した場合、指定された ID を持つそのタイプのコールバックだけが表示されます。

   

callbacks.broadcastCallback <callback_type_name> 

このメソッドは、特定のイベントのシミュレーション方法とそのイベントを実行するためのすべてのコールバック スクリプトを提供します。

3ds Max 内では、 #preRenderFrame および #postRenderFrame コールバックはレンダラーによってのみ呼び出すことができます。このメソッドを使用してこれらのコールバックを呼び出すことはできません。

   

コールバックに関する補足情報

callbacks.notificationParam() 

このメソッドは、コールバックに追加の情報を提供するためにコールバック スクリプト内で呼び出すことができます。このメソッドによって返される値は、コールバックのタイプに応じて異なります。コールバックの追加情報がない場合は、'undefined' という値が返されます。

例:

--Remove any existing callbacks with this ID.
callbacks.removeScripts id:#MXSHelp
--Add a new callback script which will call
--callbacks.notificationParam() before selected nodes are deleted
--and thus will print the deleted objects to the Listener:
callbacks.addScript #selectedNodesPreDelete" print (callbacks.notificationParam())" id:#MXSHelp

コールバック イベント名と notificationParam の戻り値:

サポートされているすべてのコールバック イベント名と、通常返される callbacks.notificationParam() の値を次に示します。ブロードキャストが生成された方法によっては、ここに示した値の代わりに 'undefined' が返される場合があります。

アニメーションの通知:

#animateOff: undefined 

[アニメート](Animate)ボタンがオフになったときに送られます。

   

#animateOn: undefined 

[アニメート](Animate)ボタンがオンになったときに送られます。

   

#animationRangeChange: undefined 

アニメーション範囲が変更されたときに送信されます。

   

レンダリング ダイアログ ボックスとレンダラー プラグインの通知:

#tabbedDialogCreated: #(integer, integer) 

タブ化されたレンダリング ダイアログ ボックスが作成された後に送られます。

   

#tabbedDialogDeleted: #(integer, integer) 

タブ化されたレンダリング ダイアログ ボックスが削除された後に送られます。

   

#renderParamsChanged: undefined 

共通のレンダラー パラメータが変更されるたびに送られます。

   

#preRendererChange: undefined 

現在のレンダラーを変更したり、レンダラーのタイプのいずれかを変更する前に送られます。

   

#postRendererChange: undefined 

現在のレンダラーを変更したり、レンダラーのタイプのいずれかを変更した後に送られます。

   

イメージ ビューワ表示の通知:

#preImageViewerDisplay: IVFB Interface 

イメージ ビューワが作成された後、表示される前に送られます。 callbacks.notificationParam() への呼び出しで、IVFB インタフェースが返されます。これを使用して、仮想フレーム バッファ(別名: レンダリング フレーム ウィンドウ)にロールアウトを追加できます。

3ds Max 2009 以降 で使用可能です。

   

#postImageViewerDisplay: IVFB Interface 

イメージ ビューワが表示された後に送られます。 callbacks.notificationParam() への呼び出しで、IVFB インタフェースが返されます。これを使用して、仮想フレーム バッファ(別名: レンダリング フレーム ウィンドウ)にロールアウトを追加できます。

3ds Max 2009 以降 で使用可能です。

   

レンダラーの通知:

#preRender: Array 

レンダリングを開始する前に送られます。この通知は、レンダラーによりレンダリング インスタンス オブジェクトが作成される前に送られます。つまり、ノードや他のオブジェクトをこのイベントへの応答として作成することができます。複数のフレームをレンダリングする場合、このイベントは最初のレンダリングが始まる前に 1 度だけ送られ、フレームごとに送られることはありません。 #preRender コールバックでレンダラーのパラメータ(高さ、幅、エイリアシングなど)を変更して、現在のレンダラーに反映することはできません。これらのパラメータは、3ds Max 内部で既に設定されているので、次のレンダラーのセッションが始まるまで変更は反映されません。

パラメータ定義についての詳細は、SDK ヘルプ ファイルの RendParams クラスを参照してください。

1 - 名前 - rpar->rendType

2 - ブール値 - rpar->isNetRender

3 - ブール値 - rpar->fieldRender

4 - 整数 - rpar->fieldOrder

5 - 時間 - rpar->frameDur

6 - ブール値 - rpar->colorCheck

7 - 整数 - rpar->vidCorrectMethod

8 - 整数 - rpar->ntscPAL

9 - ブール値 - rpar->superBlack

10 - 整数 - rpar->sbThresh

11 - ブール値 - rpar->rendHidden

12 - ブール値 - rpar->force2Side

13 - ブール値 - rpar->inMtlEdit

14 - 浮動小数点 - rpar->mtlEditTile

15 - ブール値 - rpar->mtlEditAA

16 - ブール値 - rpar->multiThread

17 - ブール値 - rpar->useEnvironAlpha

18 - ブール値 - rpar->dontAntialiasBG

19 - ブール値 - rpar->useDisplacement

20 - ブール値 - rpar->useRadiosity

21 - ブール値 - rpar->computeRadiosity

22 - TextureMap - rpar->envMap

23 - 時間 - rpar->firstFrame

24 - 整数 - rpar->scanBandHeight

25 - 整数 - rpar->extraFlags

26 - ポイント 2 - rpar->width、rpar->height

27 - ブール値 - rpar->filterBG

28 - ブール値 - rpar->alphaOutOnAdditive

   

#postRender: undefined 

レンダリングが完了した後に送られます。この通知は、レンダラーによりレンダリング インスタンス オブジェクトが削除される前に送られます。つまり、ノードや他のオブジェクトをこのイベントへの応答として作成することができます。複数のフレームをレンダリングする場合、このイベントはすべてのレンダリング終了後に 1 度だけ送られ、フレームごとに送られることはありません。

   

#preRenderEval: time 

レンダラーがオブジェクトの評価を開始する直前に送られます。

レンダリングされた時間が返されます。

   

#preRenderFrame: Array 

レンダラーによって各フレームがレンダリングされる直前に送られます。この通知は、レンダラーがシーン ジオメトリのスナップショットを撮った直後に送られます。このコールバックの呼び出し時にシーンを修正することはできません。レンダラーはすべてのオブジェクト インスタンスに対して GetRenderMesh() を呼び出し済みで、マテリアルおよびライトは既に更新されています。レンダリングされたものを修正しない場合は、このコールバックを使用してもかまいません。レンダリングされる現在のフレームは、MAXScript の currentTime コンテキストおよびシステム グローバルに設定されます。そのため、その他のシーン オブジェクト プロパティへの参照は、レンダリング中のフレームの時間で自動的に決定されます。レンダラーがマテリアル エディタのサンプルの球を更新するために呼び出された場合、この通知は送られません。レンダリングを出力中の場合だけ送られます。

   

#postRenderFrame: Array 

レンダラーによって各フレームがレンダリングされる直後に送られます。レンダリングされる現在のフレームは、MAXScript の currentTime コンテキストおよびシステム グローバルに設定されます。そのため、その他のシーン オブジェクト プロパティへの参照は、レンダリング中のフレームの時間で自動的に決定されます。レンダラーがマテリアル エディタのサンプルの球を更新するために呼び出された場合、この通知は送られません。レンダリングを出力中の場合だけ送られます。

22 個の要素の配列が返されます。パラメータ定義についての詳細は、SDK ヘルプ ファイルの RenderGlobalContext クラスを参照してください。

1 - 整数 - rendParams->projType

2 - ポイント 2 - rendParams->devWidth、rendParams->devHeight

3 - ポイント 2 - rendParams->xscale、rendParams->yscale

4 - ポイント 2 - rendParams->xc、rendParams->yc

5 - ブール値 - rendParams->antialias

6 - Matrix3 - rendParams->camToWorld

7 - Matrix3 - rendParams->worldToCam

8 - ポイント 2 - rendParams->nearRange、rendParams->farRange

9 - 浮動小数点 - rendParams->devAspect

10 - 浮動小数点 - rendParams->frameDur

11 - TextureMap - rendParams->envMap

12 - カラー - rendParams->globalLightLevel

13 - 時間 - rendParams->time

14 - ブール値 - rendParams->wireMode

15 - 浮動小数点 - rendParams->wire_thick

16 - ブール値 - rendParams->force2Side

17 - ブール値 - rendParams->inMtlEdit

18 - ブール値 - rendParams->fieldRender

19 - ブール値 - rendParams->first_field

20 - ブール値 - rendParams->field_order

21 - ブール値 - rendParams->objMotBlur

22 - 整数 - rendParams->nBlurFrames

   

#beginRenderingReflectRefractMap: undefined 

レンダリングの反射および屈折マップを用意する前に送られます。

   

#beginRenderingActualFrame: undefined 

レンダリング設定後、実際のレンダリングを開始する直前に送られます。

   

#beginRenderingTonemappingImage: undefined 

Tonemapping イメージをレンダリングする前に送られます。

警告:

#preRenderFrame #postRenderFrame 、またはすべての #beginRendering* コールバック内にあるオブジェクトのメッシュは変更できません(特にメッシュがアニメートされていない場合)。レンダラーがすでに元のメッシュを評価しており、そのメッシュに対するポインタを保持しているからです。オブジェクトのメッシュを変更すると古いメッシュは削除されますが、レンダラーはそのことを認識していません。削除されてしまったメッシュをレンダリングしようとするとクラッシュします。

例:

#preRender および #postRender のコールバックを使用した例については、以下を参照してください。

チュートリアル - レンダリング時のオブジェクトの変更

FileLink の通知:

#fileLinkPreAttach: undefined 

ファイル リンクをアタッチする直前に送られます。

   

#fileLinkPostAttach: undefined 

ファイル リンクをアタッチした直後に送られます。

   

#fileLinkPreBind: undefined 

ファイル リンクをバインドする直前に送られます。

   

#fileLinkPostBind: undefined 

ファイル リンクをバインドした直後に送られます。

   

#fileLinkPreDetatch: undefined 

ファイル リンクをデタッチする直前に送られます。

   

#fileLinkPostDetatch: undefined 

ファイル リンクをデタッチした直後に送られます。

   

#fileLinkPreReload: undefined 

ファイル リンクを再ロードする直前に送られます。

   

#fileLinkPostReload: undefined 

ファイル リンクを再ロードした直後に送られます。

   

#filelinkPostReloadPrePrune: undefined 

リロードする新しいオブジェクトがすべて作成されたが、オブジェクトがまだ何も削除されていない時点で送られます。

   

ファイルの通知:

#filePreOpen:(integer | undefined) 

新規ファイルを開く前に送られます。

callbacks.notificationParam() を呼び出すと、レンダリング プリセット ファイルが開いている場合は整数の 2、そうでない場合は undefined が返されます。

   

#filePostOpen: (integer |undefined) 

新規ファイルを開いた後に送られます。

callbacks.notificationParam() を呼び出すと、レンダリング プリセット ファイルが開いている場合は整数の 2、そうでない場合は undefined が返されます。

   

#filePreOpenProcess: #(integer, string) 

ファイルのオープン処理が開始される前に送信されます。

callbacks.notificationParam() を呼び出すと、2 要素の配列が戻されます。

要素 1 は、以下の値になります。

通常のファイル ロードを実行する場合は 1。

 [編集](Edit) > [一時保存を呼び出し](Fetch)を実行する場合は 2。

要素 2 は、ロードされているシーン ファイル名です。

例:

callbacks.removeScripts id:#testCallback
callbacks.addScript #filePreOpenProcess "print (callbacks.notificationParam())" id:#testCallback

一時保存を呼び出しを実行 - コールバックによる出力

2
"C:\Documents and Settings\user\My Documents\3dsmax\autoback\maxhold.mx"

   

#filePostOpenProcess: undefined 

ファイルを開くプロセスが終了した後で送信されます。

   

#filePreSave: string 

ファイルを保存する前に送られます。

callbacks.notificationParam() を呼び出すと、ファイル名を含む文字列が返されます。

   

#filePostSave: string 

ファイルを保存した後に送られます。

callbacks.notificationParam() を呼び出すと、ファイル名を含む文字列が返されます。

   

#filePreSaveProcess: #(integer, string) 

保存処理が開始される前に送信されます。

callbacks.notificationParam() を呼び出すと、2 要素の配列が返されます。

要素 1 は、以下の値になります。

通常のファイルの保存を実行する場合は 1。

[編集](Edit) > [一時保存](Hold)を実行する場合は 2。

自動バックアップを実行する場合は 3。

要素 2 は、保存されているシーン ファイル名です。

例:

以下のコードを評価します。

callbacks.removeScripts id:#testCallback
callbacks.addScript #filePreSaveProcess "print (callbacks.notificationParam())" id:#testCallback

ファイルを「TestingCallback.max」に保存します。コールバックの出力は次のようになります。

1
"C:\Documents and Settings\user\My Documents\3dsmax\scenes\testingcallback.max"

この時点で[編集](Edit) > [一時保存を呼び出し](Fetch)を実行します。コールバックの出力は次のようになります。

2
"C:\Documents and Settings\user\My Documents\3dsmax\autoback\maxhold.mx"

自動バックアップの作動を待機します。コールバックの出力は次のようになります。

3
"C:\Documents and Settings\user\My Documents\3dsmax\autoback\AutoBackup01.max"

   

#filePostSaveProcess: #(integer, string) 

保存処理が完了した後に送信されます。

callbacks.notificationParam() を呼び出すと、 #filePreSaveProcess と同じ 2 要素の配列が返されます。上述の説明を参照してください。

   

#filePreSaveOld: undefined 

古いバージョンのファイルが保存される前に送られます。

   

#filePostSaveOld: undefined 

古いバージョンのファイルが保存された後で送られます。

   

#filePreMerge: integer 

ファイルを結合する前に送られます。

callbacks.notificationParam() を呼び出すと、オブジェクトまたはシーンの外部参照が合成された場合は整数の 1 が、そうでない場合は undefined が返されます。

   

#filePostMerge: integer 

ファイルを結合した後に送られます。

callbacks.notificationParam() を呼び出すと、オブジェクトまたはシーンの外部参照が合成された場合は整数の 1 が、そうでない場合は undefined が返されます。

   

#filePostMergeProcess: undefined 

マージ プロセスが終了した後で送信されます。

   

#preImport: undefined 

ファイルを読み込む前に送られます。

   

#postImport: undefined 

ファイルを読み込んだ後に送られます。

   

#importFailed: undefined 

読み込みに失敗した場合に送られます。

   

#preExport: undefined 

ファイルを書き出す前に送られます。

   

#postExport: undefined 

ファイルを書き出した後に送られます。

   

#exportFailed: undefined 

書き出しに失敗した場合に送られます。

   

外部参照の通知:

#objectXrefPreMerge: undefined 

外部参照のロード(通常は[合成](Merge)通知の周辺)

   

#objectXrefPostMerge: undefined 

外部参照のロード(通常は[合成](Merge)通知の周辺)

   

#sceneXrefPreMerge: undefined 

外部参照のロード(通常は[合成](Merge)通知の周辺)

   

#sceneXrefPostMerge: undefined 

外部参照のロード(通常は[合成](Merge)通知の周辺)

   

レイヤ システムの通知:

#layerCreated: BaseLayer (reftarg) 

レイヤ作成後に送られます。

callbacks.notificationParam() を呼び出すと、レイヤの ReferenceTarget が返されます。

注: #layerCreated には既知の問題があります。オブジェクトが合成されるかオブジェクトの外部参照が行われたのに、これらのアクションが #layerCreated イベントにブロードキャストされなかった場合に、レイヤが作成されてしまいます。

   

#layerDeleted: BaseLayer (reftarg) 

レイヤが削除される前に送られます。 callbacks.notificationParam() によってレイヤが返されます。

   

#nodeLayerChanged: #(node, BaseLayer, BaseLayer) 

新しいレイヤ上にノードが配置された後で送られます。 callbacks.notificationParam() によって、ノード、古いレイヤ、新しいレイヤという 3 つの要素を含む配列が返されます。

   

操作モードの通知:

   

#manipulateModeOn: undefined 

操作モードになったときに送られます。

   

#manipulateModeOff: undefined 

操作モードが終了したときに送られます。

モディファイヤ パネルの通知:

#modPanelObjPreChange: undefined 

[修正](Modify)パネル内で現在の編集オブジェクトが変更される直前に送られます。

   

#modPanelObjPostChange: undefined 

[修正](Modify)パネル内で現在の編集オブジェクトが変更された直後に送られます。

   

#modPanelSelChanged: undefined 

[修正](Modify)パネルが選択されたか、またはシーンで新しく選択が行われたために、[修正](Modify)パネルが新しい選択上で開いた場合に送られます。通知はパネルの再描画の直前に選択が行われた後に発生し、パネルの状態は上書きされることなくコールバック関数によって修正できます。

   

#ModPanelSubObjectLevelChanged: #(newSOlevelIndex, oldSOlevelIndex) 

[修正](Modify)パネルのサブオブジェクト レベルが切り替わるたびに送られます。 callbacks.notificationParam() を呼び出すと、新しい SO レベル番号と古い SO レベル番号を含んだ配列が返されます。3ds Max 9 以降で使用可能です。

   

モディファイヤの通知:

#preModifierAdded: #(node, modifier) 

モディファイヤがノードに追加される前に送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、ノードと追加されたモディファイヤを含む 2 つの要素配列が返されます。

   

#postModifierAdded: #(node, modifier) 

モディファイヤがノードに追加された後に送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、ノードと追加されたモディファイヤを含む 2 つの要素配列が返されます。

   

#preModifierDeleted: #(node, modifier) 

モディファイヤがノードから削除される前に送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、ノードと削除されたモディファイヤを含む 2 つの要素配列が返されます。

   

#postModifierDeleted: #(node, modifier) 

モディファイヤがノードから削除された後に送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、ノードと削除されたモディファイヤを含む 2 つの要素配列が返されます。

   

マテリアル ライブラリの通知:

#mtlLibPreOpen: undefined 

マテリアル ライブラリをロードする直前に送られます。

   

#mtlLibPostOpen: materiallib 

マテリアル ライブラリをロードした直後に送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、ロードされた MaterialLibrary が返されます。

   

#mtlLibPreSave: undefined 

マテリアル ライブラリを保存する直前に送られます。

   

#mtlLibPostSave: undefined 

マテリアル ライブラリを保存した直後に送られます。

   

#mtlLibPreMerge: undefined 

マテリアル ライブラリを結合する直前に送られます。

   

#mtlLibPostMerge: undefined 

マテリアル ライブラリを結合した直後に送られます。

   

マテリアルの通知:

#mtlRefAdded: material 

マテリアル参照が追加されると呼び出されます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、マテリアルが返されます。

   

#mtlRefDeleted: material 

マテリアル参照が削除されると呼び出されます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、マテリアルが返されます。

   

ノード関連の通知:

#nodeCreated: node 

ノードの作成時に送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、ノードが返されます。

   

#nodeCloned: node 

ノードのクローンが作成されたが、Hold.Accept(..)が実行される前に送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、ノードが返されます。

   

#sceneNodeAdded: node 

ノードがシーンに追加された直後に送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、ノードが返されます。

   

#nodeFreeze: node 

ノードをフリーズするときに送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、ノードが返されます。

   

#nodeUnfreeze: Node 

ノードをフリーズ解除するときに送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、ノードが返されます。

   

#nodeHide: node 

ノードを非表示にするときに送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、ノードが返されます。

   

#nodeUnhide: Node 

ノードを表示するときに送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、ノードが返されます。

   

#nodeLinked: Node 

新規親子リンクを作成するときに送られます。コールバック関数内で callbacks.notificationParam() を呼び出すと、ノードが返されます。

   

#nodeUnlinked: Node 

親子リンクを解除するときに送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、ノードが返されます。

   

#nodePreDelete: Node 

ノードを削除する前に送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、ノードが返されます。

   

#nodePostDelete: undefined 

ノードを削除した後に送られます。

   

#nodePreMaterial: Node 

ノードが新規マテリアルを取得する直前に送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、ノードが返されます。

   

#nodePostMaterial: Node 

ノードが新規マテリアルを取得した直後に送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、ノードが返されます。

   

#nodeRenamed: #(name, name) 

シーン ノードの名前が変更された場合に送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、新旧のノード名を文字列として含む 2 つの要素配列が返されます。

注:3ds Max 7 で導入された #nodeNameSet コールバックを使用すると、高い信頼性が得られます。下記を参照してください。

   

#nodeNameSet: #(name, name, node) 

シーン ノード名が設定または変更されると、送信されます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、新旧のノード名およびノードを含む 3 つの要素配列が返されます。

注:3ds Max 7 で導入された #nodeNameSet コールバックを使用すると、高い信頼性が得られます。下記を参照してください。

   

#preNodeBonePropChanged: Array of nodes 

変更前のボーン プロパティ。

コールバック関数内で callbacks.notificationParam() を呼び出すと、ノードの配列が返されます。

このオプションは 3ds Max 2014 より前のバージョンでは正しく機能しませんでした。

個々のボーンには修正されたバージョンが呼び出されるので、戻り値は配列のままですが呼び出しごとに含まれるノードは 1 つのみです。

通知は、すべてのボーン アニメーション プロパティの変更に対してブロードキャストされます。例外として、 InvalidateObjectTM() は、ボーンのプロパティ内のフラグを変更しますが、そのフラグは子ボーンが変更された場合にも変更されます。ビューポート内でノードを移動させるだけでこの状況が発生してしまうため、大量の通知を避けるために除外します。

   

#postNodeBonePropChanged: Array of nodes 

変更後のボーン プロパティ。

コールバック関数内で callbacks.notificationParam() を呼び出すと、ノードの配列が返されます。

このオプションは 3ds Max 2014 より前のバージョンでは正しく機能しませんでした。

個々のボーンには修正されたバージョンが呼び出されるので、戻り値は配列のままですが呼び出しごとに含まれるノードは 1 つのみです。

通知は、すべてのボーン アニメーション プロパティの変更に対してブロードキャストされます。例外として、 InvalidateObjectTM() は、ボーンのプロパティ内のフラグを変更しますが、そのフラグは子ボーンが変更された場合にも変更されます。ビューポート内でノードを移動させるだけでこの状況が発生してしまうため、大量の通知を避けるために除外します。

   

#preNodeGeneralPropChanged: Array of nodes 

変更前の一般プロパティ。

コールバック関数内で callbacks.notificationParam() を呼び出すと、ノードの配列が返されます。

   

#postNodeGeneralPropChanged: Array of nodes 

変更後の一般プロパティ。

コールバック関数内で callbacks.notificationParam() を呼び出すと、プロパティを変更されたノードの配列が返されます。

   

#preNodeGiPropChanged: Array of nodes 

アドバンスト ライティング プロパティの変更前に送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、プロパティを変更されるノードの配列が返されます。

   

#postNodeGiPropChanged: Array of nodes 

アドバンスト ライティング プロパティの変更後に送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、プロパティを変更されたノードの配列が返されます。

   

#preNodeMentalrayPropChanged: Array of nodes 

mental ray プロパティの変更前に送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、mental ray プロパティを変更されるノードの配列が返されます。

   

#postNodeMentalrayPropChanged: Array of nodes 

mental ray プロパティの変更後に送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、mental ray プロパティを変更されたノードの配列が返されます。

   

#preNodesCloned: Array of nodes 

ノードがクローン作成される前に送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、ノードの配列が返されます。

   

#postNodesCloned: #(array of nodes, array of nodes, name) 

ノードがクローン作成された後に送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、次の 3 つの要素による配列が返されます。最初の要素は元のノードの配列、2 番目の要素はクローン作成されたノードの配列、そして 3 番目の要素は、 #copy #instance 、または #reference の名前の値です。

   

#preNodeUserPropChanged: Array of nodes 

変更前のユーザ プロパティ。

コールバック関数内で callbacks.notificationParam() を呼び出すと、ノードの配列が返されます。

   

#postNodeUserPropChanged: Array of nodes 

変更後のユーザ プロパティ。

コールバック関数内で callbacks.notificationParam() を呼び出すと、ノードの配列が返されます。

   

#preMirrorNodes: Array of nodes 

ミラー操作の最初。

コールバック関数内で callbacks.notificationParam() を呼び出すと、ノードの配列が返されます。

   

#postMirrorNodes: Array of nodes 

ミラー操作の最後。

コールバック関数内で callbacks.notificationParam() を呼び出すと、ノードの配列が返されます。

   

#selectedNodesPreDelete: Array of nodes 

選択されたノードを削除する直前に送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、これから削除されるノードの配列が返されます。

   

#selectedNodesPostDelete: undefined 

選択されたノードを削除した直後に送られます。

   

selectionSetChanged: undefined 

選択セットを変更した後に送られます。

   

システムの通知:

#postSystemStartup: undefined 

ソフトウェアの起動後に送られます。

   

#systemPreNew: integer 

3ds Max をリセットする直前に送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、[新規シーン](New Scene)ダイアログ ボックスで選択されたオプションに対応する次の整数値が返されます。

1 - すべて新規

2 - オブジェクトを保持

3 - オブジェクトと階層を保持

   

#systemPostNew: undefined 

3ds Max をリセットした直後に送られます。

   

#systemPreReset: undefined 

3ds Max をリセットする前に送られます。

   

#systemPostReset: undefined 

3ds Max をリセットした後に送られます。

   

#systemPreDirChange: undefined 

変更後のシステム パス - [パスを設定](Configure Paths)ダイアログ ボックスで変更される dir のカタログ

   

#systemPostDirChange: undefined 

変更後のシステム パス - [パスを設定](Configure Paths)ダイアログ ボックスで変更される dir のカタログ

   

#preSystemShutdown: undefined 

ソフトウェアがシャットダウン プロセスを開始する直前に送られます。

   

#postSystemShutdown: undefined 

ソフトウェアがシャットダウン プロセスを完了する直前に送られます。

MAXScript リスナーと 3ds Max のUI を伴うオペレーションは、このコールバックを実行している時は、すでにこのコールバックが閉じている為使用できません。ファイルの書き込みのような UI 関連ではないオペレーションでは正しく実行されます。

   

#pluginLoaded: string 

プラグインをロードするたびに送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、ロードされた dll の名前を含む文字列が返されます。

   

ラジオシティの通知:

#radiosityPluginChanged: undefined 

ラジオシティ プラグインが変更された時に送られます。

   

#radiosityProcessDone: undefined 

ラジオシティ処理が終了した時に送られます。

   

#radiosityProcessReset: undefined 

ラジオシティ処理がリセットされた時に送られます。

   

#radiosityProcessStart: undefined 

ラジオシティ処理を開始した時に送られます。

   

#radiosityProcessStopped: undefined 

ラジオシティ処理を停止した時に送られます。

   

システムを元に戻す場合の通知:

#sceneUndo: string 

シーンを元に戻した後に送られます。 callbacks.notificationParam() では、取り消しエントリの名前が返されます。3ds Max 8 以降で使用可能です。

   

#sceneRedo: string 

シーンを元に戻した後に送られます。 callbacks.notificationParam() では、取り消しエントリの名前が返されます。3ds Max 8 以降で使用可能です。

例:

callbacks.removeScripts id:#test
callbacks.addScript #sceneRedo "format \"Redo: %\\n\" (callbacks.notificationParam())" id:#test
callbacks.addScript #sceneUndo "format \"Undo: %\\n\" (callbacks.notificationParam())" id:#test

スケマティク ビューの通知:

#svSelectionSetChanged: integer 

スケマティク ビューの選択設定を変更したら送られます。 callbacks.notificationParam() によって、スケマティク ビューのインデックスが返されます。

   

#svDoubleClickGraphNode: undefined 

ユーザがスケマティク ビューのノードをダブルクリックすると送られます。

   

#svPreLayoutChange: integer 

スケマティク ビューをレイアウトのアルゴリズムに適用する前に送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、スケマティク ビューのインデックスが返されます。

   

#svPostLayoutChange: integer 

スケマティク ビューをレイアウトのアルゴリズムに適用した後に送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、スケマティク ビューのインデックスが返されます。

   

アセット ブラウザの通知:

#assetBrowserPreNavigate: string 

URL をアセット ブラウザにロードするたびに送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、参照する URL を含む文字列を返します。

   

名前付き選択セットの通知:

#NamedSelSetCreated: string 

名前付き選択セットが作成された後に送られます。

callbacks.notificationParam() を呼び出すと、新しい選択セットの名前が返されます。

3ds Max 9 以降で使用可能です。

   

#NamedSelSetDeleted: string 

名前付き選択セットが削除された後に送られます。

callbacks.notificationParam() を呼び出すと、削除された名前付き選択セットの名前が返されます。

3ds Max 9 以降で使用可能です。

   

#NamedSelSetRenamed: string 

名前付き選択セットの名前が変更された後に送られます。

callbacks.notificationParam() を呼び出すと、名前を変更した選択セットの古い名前と新しい名前を含む配列が返されます。

3ds Max 9 以降で使用可能です。

   

Direct3D デバイスの通知:

#D3DPreDeviceReset: undefined 

デバイスがリセットされる前に送られます。

3ds Max 9 以降 で使用可能です。

   

#D3DPostDeviceReset: undefined 

デバイスがリセットされた後に送られます。

3ds Max 9 以降 で使用可能です。

   

その他の通知:

#bitmapChanged: string 

ビットマップを再読み込みした後に送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、bitmaptexture のビットマップ ファイル名を含む文字列を返します。

   

#byCategoryDisplayFilterChanged: undefined 

オブジェクト カテゴリが表示/非表示にマークされた後に送られます。

   

#colorChanged: undefined 

システムのカスタム カラーの更新中に送られます。

   

#customDisplayFilterChanged: undefined 

カスタム表示フィルタをアクティブ/非アクティブにした後で送られます。

   

#lightingUnitDisplaySystemChange: undefined 

ライト単位の表示システムを変更した場合に送られます。

   

#spacemodeChange: undefined 

ユーザが参照する座標系を変更した場合に送られます。

   

#timeunitsChange: undefined 

ユーザが時間の書式を変更した場合に送られます。

   

#unitsChange: undefined 

ユーザが単位設定を変更した場合に送られます。

   

#viewportChange: undefined 

ビューポート パラメータが変更される(ビューポートのパン、ズーム、軌道周回、またはアクティブ ビューポートの変更)たびに送信されます。

現在は、ビューポート レイアウトの変更についての通知は行われません。

   

#viewportSafeFrameToggle: integer

ビューポートのセーフ フレームをオンまたはオフにしたときに送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、オンの場合は整数値 -1、オフの場合は 0 を返します。

3ds Max 2014 以降で使用可能です。

   

#mainWindowEnabled boolean 

メインのアプリケーション ウィンドウが有効になったときに送られます。

コールバック関数内で callbacks.notificationParam() を呼び出すと、ブール値が返されます。3ds Max のメイン ウィンドウが使用可能な場合は true、別のウィンドウが使用可能な場合は false が返されます。

   

#heightMenuChanged: undefined 

ユーザが高さメニューを操作したときに送られます。

   

#preProgress: undefined 

進行状況バーを表示する前に送られます。

   

#postProgress: undefined 

進行状況バーが終了した後に送られます。

関連事項