#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
のコールバックを使用した例については、以下を参照してください。