レンダラーの通知

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

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