render() メソッドを使用したレンダラーのコントロール

 

   

ライティングとレンダリング - クイック ナビゲーション

render() メソッドは、現在の 3ds Max レンダラーを呼び出します。

メイン ツールバーの[クイック レンダリング](Render)アイコンをクリックしたときと同じように動作する max quick render コマンドを呼び出す場合とは異なり、 render() メソッドでは、現在の[シーンをレンダリング](Render Scene)ダイアログ ボックスの設定とは別にレンダリングをコントロールするためのオプション パラメータを数多く使用できます。

注:上記のとおり、 render() メソッドは[シーンをレンダリング](Render Scene)ダイアログ ボックスの現在のレンダリング設定は使用しません。このため、 render() を呼び出しても[シーンをレンダリング](Render Scene)ダイアログ ボックスで指定した出力ファイル名または rendOutputFilename グローバルで指定した出力ファイル名では保存されません。代わりに outputfile: オプション パラメータで指定した出力ファイルを使用するか、単にビットマップ値を返します。

以下は、 render() メソッドを使用したレンダリングのコントロールに使用できるオプション パラメータのリストです。

オプション パラメータ

render [camera: <camera_node> ]

レンダリングするカメラを指定します。指定しない場合は、既定値でアクティブ ビューポートが使用されます。

[ frame: <number> | #current]

レンダリングするフレームを指定します。指定しない場合または #current に設定されている場合は、既定で現在のフレームがレンダリングされます。

[ framerange: <interval> | #active]
[ fromframe: <time> ]
[ toframe: <time> ]
[ nthframe: <time> ]

レンダリングするフレーム範囲を指定します。指定した場合は、1 回の redner() 呼び出しで複数のフレームが生成されます。指定しない場合は、1 フレームだけが生成されます。

既定値は unsupplied で、この場合は上記の frame: の値によってレンダリングするフレームが決まります。

3ds Max 5 以降、 frame: fromframe: toframe: の各パラメータは、数値ではなく時間の値を受け入れます。浮動小数点値に設定した場合、サブフレーム レンダリングが考慮されます。

[ outputwidth: <number> ]

出力イメージの幅を設定します。

既定値は、[シーンをレンダリング](Render Scene)ダイアログ ボックスで指定されている現在のレンダリング サイズの幅です。

[ outputheight: <number> ]

出力イメージの高さを設定します。

既定値は、[シーンをレンダリング](Render Scene)ダイアログ ボックスで指定されている現在のレンダリング サイズの高さです。

[ outputSize: <point2> ]

レンダリングされたイメージの出力サイズを指定する代替方法です。

point2 値の形式は、[幅、高さ](width,height)です。

[ pixelaspect: <number> ]

ピクセル アスペクト比を指定します。

指定しない場合は、既定値で 1.0 になります。

[ renderhiddenobjects: <boolean> ]

true を指定すると、非表示オブジェクトがレンダリングされます。

false を指定すると、非表示オブジェクトはレンダリングされません。

指定しない場合は、既定値で現在のレンダラーの「非表示オブジェクトをレンダリング」の状態になります。

[ rendSimplifyAreaLights: <boolean> ]

true を指定すると、必要に応じてポイント ライトとしてレンダリングすることで、レンダラーがエリア ライトを簡略化します。

false を指定すると、レンダラーはエリア ライトを完全に処理します。

指定しない場合は、グローバル変数 rendSimplifyAreaLights によってコントロールされる[シーンをレンダリング](Render Scene)ダイアログの[エリア ライト/シャドウをポイントにする](Area Lights/Shadows as Points)チェックボックスの状態が使用されます。

[ superblack: <boolean> ]

既定値では現在のレンダラーの[スーパー ブラック](Superblack)チェックボックスの状態になります。

[ force2sided: <boolean> ]

既定値は現在のレンダラーの[両面レンダリング](Force 2 Sided)状態です。

[ renderatmosphericeffects: <boolean> ]

既定値は現在のレンダラーの[環境効果](Atmospheric Effects)をレンダリング状態です。

[ renderfields: <boolean> ]

既定値は現在のレンダラーの[フィールド レンダリング](Render Fields)状態です。

[ fieldorder: #odd | #even]

既定値は現在のレンダラーのフィールド順序状態です。

[ outputfile: <string> ]

ファイルのイメージ形式が単一のイメージ形式(.bmp、.jpg、.tga など)で、フレーム範囲がレンダリングされている場合、ファイル名にフレーム番号が付加されます。既定値は仮想フレーム バッファへのレンダリングです。

[ vfb: <boolean> ]

true に設定すると、[レンダリング フレーム ウィンドウ](Rendered Frame Window)にレンダリング後のイメージを表示します。false に設定すると、レンダリング後のイメージは表示されません。

既定値は、現在のレンダラーのレンダリング フレーム ウィンドウ状態です。

履歴:

3ds Max 6 より前のバージョンでは、「レンダリング フレーム ウィンドウ」のことを「仮想フレーム バッファ」(略して VFB、RFW ではありません)と呼んでいました。

[ pos: #vfb_upper_left | #vfb_lower_left | #vfb_upper_right | #vfb_lower_right | #vfb_center | #vfb_renderer_position | #vfb_vprimary_position | #vfb_vsecondary_position]

vfb: オプションに true を指定した場合、レンダリング フレーム ウィンドウ(別名: 仮想フレーム バッファ、上の注を参照)を開く画面上の位置を指定できます。

既定値は #vfb_renderer_position です。これは、レンダリング後にユーザがウィンドウを開いていた最後の位置です。

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

[ outputHDRbitmap:<boolean> ]

true に設定すると、新しい 32 ビット浮動小数のフレーム バッファが使用されます。false に設定または何も指定しない場合には、標準のフレーム バッファが使用されます。3ds Max 8 以降 で使用可能です。

[ netrender: <boolean> ]

レンダリングをネットワーク レンダリングのために Backburner に送信します。

既定値は現在のレンダラーの[ネットワーク レンダリング](Net Render)状態です。

[ renderType: #normal | #region | #regionCrop | #blowup | #selection | #regionselected | #cropselected | #bakeSelected]
[ region: #(left,top,right,bottom) ]

レンダリングのタイプをコントロールします。これは、[レンダリングのタイプ](Render Type)(3ds Max ツールバー) メニューに相当します。

#region #regionCrop #blowUp のいずれかを選択している場合は、 region: パラメータを使用して、ビットマップ(VFB)内の左上隅を基準としたピクセル座標として指定されたアクティブ ビューポートに対して、現在設定されている領域を無効にできます。この領域引数は、他のすべてのレンダリング タイプでは無視されます。領域引数には Box2 値を使用できます。

rendertype が #blowup であり、領域が指定されている場合、領域矩形はレンダリング出力サイズと同じアスペクト比に設定する必要があります。上部、底部、および左側のコンポーネント値は領域引数から得られますが、幅はアスペクトを強制的に適合するように再計算されます。

注: #region#regionCrop、および #blowUp は、アクティブ ビューポートのレンダリング以外には選択できません。カメラ レンダリングに対して指定するとエラーが発生します。既定値は #normal です。

サポートするタイプ、エイリアス、および該当する UI タイプをすべて次に示します。

#view、#normal - [表示](View)に該当します。

#selection、#selected - [選択](Selected)に該当します。

#region - [領域](Region)に該当します。

#regionCrop、#crop - [クロップ](Crop)に該当します。

#blowUp - [引き伸ばし](Blowup)に該当します。

#regionselected - [選択された領域](Region Selected)に該当します。

#cropselected - [選択されたクロップ](Crop Selected)に該当します。

注:レンダリング タイプ #boxselected は[選択されたボックス](Box Selected)に該当しますが、現在はサポートされていません。

#bakeSelected rendertype は、[テクスチャをレンダリング](Render To Texture)のツールセットが 1 つ以上の BakeElements を定義してオブジェクトのベイク処理を準備した後、レンダリングを呼び出す際に使用されます。使用方法の例については、テクスチャをレンダリング スクリプトのソースコードを参照してください。

[ to: <bitmap> ]

レンダリング先となる既存のビットマップを指定します。 render() 関数は、既存のビットマップからイメージ サイズと他のパラメータ設定値を取り込みます。指定されない場合は、新しいビットマップが作成されます。これは render() 関数から返されます。

[ channels: <array_of_channel_names> ]

レンダリング中に作成する G-バッファ チャネルを指定します。

例:

bm = render camera:$cam2 channels:#(#zDepth, #coverage, #objectID)

この場合、Z-深度、ピクセル範囲およびオブジェクト G-バッファ ID チャネルのある新規ビットマップに $cam2 がレンダリングされます。

channels: 引数は、次のいずれかのチャネル識別子の配列でなければなりません。

#zDepth
#matID
#objectID
#UVCoords
#normal
#unClamped
#coverage
#node
#mask
#shaderColor
#shaderTransparency
#velocity
#weight

既定では G-バッファ チャネルは指定されていません。

[ aperture: <float> ]

既定値は現在のレンダラーの[口径幅](Aperture Width)値です。

[ ditherTrueColor: <boolean> ]

既定は現在のレンダラーで設定されている[ディザ フルカラー](Dither True Color)状態です。

[ ditherPaletted: <boolean> ]

既定は現在のレンダラーで設定されている[ディザ 256](Dither Paletted)状態です。

[ videocolorcheck: <boolean> ]

既定値は現在のレンダラーの[ビデオ カラーをチェック](Video Color Check)状態です。

[ renderPAL: <boolean> ]

既定値は現在のレンダリング設定[NTSC/PAL ビデオ カラーをチェック](Video Color Check NTSC/PAL)状態です。 true の場合で、[ビデオ カラーをチェック](video color checking)が有効な場合は、PAL ビデオ カラー チェックが実行されます。

[ superBlackThreshold: <integer> ]

既定値は現在のレンダリング設定の[スーパー ブラックしきい値](Super Black Threshold)の値です。

[ maxPixelSize: <float> ]

このプロパティは[シーンをレンダリング](Render Scene)ダイアログ ボックスで利用でき、RadiosityPreferences インタフェースからもアクセスできます。

[ useRadiosity: <boolean> ]

このプロパティは[シーンをレンダリング](Render Scene)ダイアログ ボックスで利用でき、RadiosityPreferences インタフェースからもアクセスできます。

[ ComputeRadiosity: <boolean> ]

このプロパティは[シーンをレンダリング](Render Scene)ダイアログ ボックスで利用でき、RadiosityPreferences インタフェースからもアクセスできます。

[ cancelled: <&var> ]

レンダラーがキャンセルされた場合、変数 var には true が格納され、それ以外の場合は false が格納されます。

bm = render cancelled:&wasCancelled
if (not wasCancelled) do....
[ progressbar: <boolean> ]

true の場合は、ビューポート全体の表示が無効となり、進行状況バーと[キャンセル](Cancel)ボタンがステータス パネルに表示されます。false の場合、または指定されていない場合は、ビューポート表示が無効になりません。いずれの場合も、[Esc]が押されるとレンダリングがキャンセルされます。

[ renderMultiPassEffects:<boolean> ]

true にするか、または指定しないと、レンダリングしているビューがカメラ ビューであって MultiPass 効果がそのカメラで有効になっている場合、その MultiPass 効果が使用されてレンダリングが実行されます。明示的に false を指定すると、MultiPass 効果はレンダリングされません。3ds Max 8 以降 で使用可能です。

[ renderElements:<boolean> ]

true にするか、または指定しないと、レンダリング要素がシーンに存在する場合、そのレンダリング要素がレンダリングされます。 outputfile: 引数を指定した場合、[レンダリング出力](Render Output)ファイル名を指定した状態で[シーンをレンダリング](Render Scene)ダイアログ ボックスからレンダリングした場合と同じ方法で、レンダリング要素出力がディスクに書き込まれます。false にすると、レンダリング要素はレンダリングされません。3ds Max 8 以降 で使用可能です。

[ renderElementBitmaps:<&var> ]

レンダリング要素がレンダリングされると、レンダリング要素出力ビットマップが配列に配置され(レンダリング済みレンダリング要素ごとに 1 つの配列要素)、指定した参照変数によってこの配列が返されます。複数のフレームをレンダリングする場合は、最終フレームの出力が使用されます。3ds Max 8 以降 で使用可能です。

render renderMultiPassEffects:true renderElements:true renderElementBitmaps:&reb
if reb != undefined do for b in reb do display b

以下のプロパティは、標準スキャンライン レンダリングを使用している場合に利用できます。

[ antiAliasing: <boolean> ]

既定値は現在のレンダラーの[アンチエイリアシング](Anti-Aliasing)状態です。

[ antiAliasFilterSize: <float> ]

既定値は現在のレンダラーのアンチエイリアシングの[フィルタ サイズ](Filter Size)値です。

[ antiAliasFilter: <filter> ]

既定値は現在のレンダラーのアンチエイリアシング フィルタです。

[ enablePixelSampler: <boolean> ]

既定値は現在のレンダラーの[グローバル スーパー サンプリング](Global SuperSampling)状態です。この状態は、[すべてのサンプラーを使用不能](Disable all Samplers)にチェックマークが付いている場合は true 、チェックマークが付いていない場合は false になります。

[ mapping: <boolean> ]

既定値は現在のレンダラーの[マッピング](Mapping)状態です。

[ shadows: <boolean> ]

既定値は現在のレンダラーの[シャドウ](Shadows)状態です。

[ autoReflect: <boolean> ]

既定値は現在のレンダラーの[自動反射/屈折とミラー](Auto-Reflect/Refract and Mirrors)状態です。

[ forceWireframe: <boolean> ]

既定値は現在のレンダラーの[ワイヤフレームで実行](Force Wireframe)状態です。

[ wireThickness: <float> ]

既定値は 1.0 です。

[ filterMaps: <boolean> ]

既定値は現在のレンダラーの[アンチエイリアシング フィルタ マップ](Anti-Aliasing Filter Maps)状態です。

[ objectMotionBlur: <boolean> ]

既定値は現在のレンダラーの[オブジェクト モーション ブラーを適用](Object Motion Blur Apply)状態です。

[ objectBlurDuration: <float> ]

既定値は 0.5 です。

[ objectBlurSamples: <integer> ]

既定値は 10 です。

[ objectBlurSubdivisions: <integer> ]

既定値は 10 です。

[ imageMotionBlur: <boolean> ]

既定値は現在のレンダラーの[イメージ モーション ブラーを適用](Image Motion Blur Apply)状態です。

[ imageBlurDuration: <float> ]

既定値は 0.5 です。

[ autoReflectLevels: <integer> ]

既定値は 1 です。

注:3ds Max 5 以降の render() メソッドは、レンダラー クラス インスタンス上へすべてのキーワード引数を引き渡すため、そのキーワード引数で、すべてのレンダラー パラメータ ブロックまたは FPS インタフェース プロパティを設定できます。この動作により、上記のトピックで説明した、ハードコード化されたキーワード引数が置き換えられます。既定のスキャンライン レンダラー FPS インタフェース プロパティは、既存のスクリプトとの一貫性を保つように名前が付けられています。

抑制モード オプション

[ quiet: <bool> ]

true の場合、参加のダイアログ ボックスが表示されません。

[ missingExtFilesAction: <actions> ]

見つからない外部ファイルに対して実行されるアクション。<actions> は、 #logmsg #logToFile #abort 、および/または整数、あるいはこれらの 1 つ以上の項目の配列です。

[ missingExtFilesList: &variable ]

#logmsg がアクションに指定された場合、見つからない外部ファイルの名前の配列によって参照変数が入力されます。

[ missingUVWAction: <actions> ]

見つからない UVW に対して実行されるアクション。<actions> は、 #logmsg #logToFile #abort 、および/または整数、あるいはこれらの 1 つ以上の項目の配列です。

[ missingUVWList: &variable ]

#logmsg がアクションに指定された場合、見つからないマップ チャネルおよびノード名を含む文字列の配列によって参照変数が入力されます。

[ unsupportedRenderEffectAction: <actions> ]

サポートされていないレンダリング効果に対して実行されるアクション。<actions> は、#logmsg#logToFile#abort#default、および/または整数、あるいはこれらの 1 つ以上の項目の配列です。3ds Max 8 以降 で使用可能です。

[ unsupportedRenderEffectList: &variable ]

#logmsg がアクションに指定された場合、サポートされていないレンダリング効果名の配列によって参照変数が入力されます。3ds Max 8 以降 で使用可能です。

詳細については、「抑制モード」を参照してください。

注: render() 関数は、[Esc] キーを使用してフレームの途中で中断できます。

レンダラ出力

レンダラーを呼び出すことができます。レンダリングされた出力を 4 つ以上取得することができます。

例:

render camera:$cam01 outputwidth:320 outputheight:240
for c in cameras do
render c outputFile:(c.name + ".bmp") vfb:off
rollout1.image.bitmap = render camera:$cam01

メモリ管理の考慮事項

出力を明示的に MAXScript ビットマップ値に割り当てずにループ内部で render() を呼び出すと、各コールによってビットマップ値が作成され、ガベージ コレクションが自動または手動でトリガされるまで保持されます。MAXScript ヒープで保存されるデータは非常に小量なため(C++ ビットマップ データへのポインタ)、ループが終わるまでに自動ガベージ コレクションをトリガできない場合があります。

この場合のメモリ問題を回避するため、結果のビットマップを明確な MAXScript 変数に割り当て、 close() メソッドを使用してメモリを手動で解放できるようにします。

あるいは、空の MAXScript ビットマップ値をループの開始前に初期化し、 to: キーワードを使用して render() 結果を出力することができます。ループが反復されるごとに、同じビットマップ値が再使用されます。

関連事項