シーン・レンダリング
MaxScript チートシート の章一覧
シーン全体の設定とレンダリング実行です。解像度などのグローバル設定は render() の既定値になりますが、ファイル出力は render() の outputfile: で指定 します。[レンダリング設定]ダイアログの設定どおりに実行したいときは max quick render を使います。
レンダリング設定(共通)
renderSceneDialog.close() -- ダイアログが開いていると設定が反映されない
renderWidth = 1920 -- 出力幅
renderHeight = 1080 -- 出力高さ
renderPixelAspect = 1.0 -- ピクセルアスペクト
rendTimeType = 1 -- 1=単一フレーム 2=アクティブ タイム セグメント 3=範囲指定 4=フレーム指定(rendPickupFrames = "1,3,5-12" とセットで使う)
rendStart = 0f -- 範囲指定時の開始(0f = 0 フレーム目)
rendEnd = 100f -- 範囲指定時の終了
レンダリングを実行する
bmp = render() -- 現在設定でレンダリング。ビットマップ値を返し、レンダリング フレーム ウィンドウを開く
close bmp -- 使い終わったら閉じる(開いたままだとメモリを保持し続ける)
render outputfile:"c:/out/frame.png" vfb:false -- ファイル出力・レンダリング フレーム ウィンドウを開かない(バッチ向け)
cam = freeCamera pos:[0,-200,50] -- カメラがあるとき(例: camera:$Camera001)
render camera:cam outputwidth:1920 outputheight:1080
render fromframe:0 toframe:100 outputfile:"c:/out/frame.png" -- 連番出力
- ⚠️
render()の引数は その回だけの上書き。恒久的に変えたいならrenderWidth等のグローバルを設定します。 - 連番出力時のファイル名は
frame0000.pngのように 自動で番号が付与 されます。 - ⚠️
render()は [レンダリング設定]ダイアログの出力先(rendOutputFilename/rendSaveFile)を 見ません。ファイルとして保存するにはoutputfile:を使います。
出力先(レンダリング設定ダイアログ相当)
rendOutputFilename = "c:/out/frame.png" -- 出力ファイルパス
rendSaveFile = true -- ファイル保存を有効化
- これらは UI からのレンダリング(F9 /
max quick render/ バッチ レンダリング)に効く設定です。render()から保存するときはoutputfile:を使います。
レンダラーを切り替える
renderers.current -- 現在のレンダラー(通常はプロダクション レンダラーと同じ)
renderers.current = Default_Scanline_Renderer() -- 2022 の既定は Arnold。試しに軽いスキャンラインへ切り替える例
classof renderers.current -- レンダラーのクラスを確認
環境(背景・環境マップ)
backgroundColor = color 0 0 0 -- 背景色
environmentMap = bitmapTexture filename:"c:/hdr/sky.exr"
useEnvironmentMap = true -- 環境マップを有効化
ambientColor = color 30 30 30 -- 周囲光カラー
単位
units.SystemType = #centimeters -- システム単位(シーンの内部スケール。既存シーンで変えると混乱の元)
units.DisplayType = #metric -- 表示単位(見た目だけ)。#metric にしたら units.MetricType = #centimeters で表示単位を選ぶ
シーン情報
maxFilePath -- 現在のシーンのフォルダ(未保存なら "")
maxFileName -- シーンファイル名(未保存なら "")
sceneMaterials.count -- シーン内マテリアル数
よく使う形(ビューポートのプレビュー保存)
-- アクティブビューポートを画像として保存
redrawViews() -- キャプチャ前に確実に描画しておく
img = gw.getViewportDib() -- captureAlpha:true でアルファ付きも取得できる
img.filename = "c:/out/viewport.png" -- 拡張子で保存形式が決まる
save img
close img -- 出力ファイルは close が呼ばれるまで開いたまま
ビューポート操作 / ダイアログ設定どおりに実行する
viewport.activeViewport = 1 -- アクティブビューポートを切り替え
viewport.setCamera $Camera001 -- カメラがあるとき、そのビューに切り替え
max quick render -- [レンダリング設定]ダイアログの設定どおりに実行
落とし穴まとめ
render()の引数は一時的な上書き。恒久設定はグローバル変数で。render()は [レンダリング設定]ダイアログの出力先(rendOutputFilename/rendSaveFile)を見ない。ファイル保存にはoutputfile:を使う。- 連番出力はファイル名に番号が自動付与される。
- レンダラーごとに固有プロパティが異なる。
showProperties renderers.currentで確認する。 - 環境マップは
useEnvironmentMap = trueにしないと反映されない。 - [レンダリング設定]ダイアログが開いていると設定が保持されない。
renderSceneDialog.close()を先に呼ぶ。 render()が返すビットマップは使い終わったらcloseする。
関連
- 出力パスの組み立て・存在確認: 「ファイル・パス」章
- レンダラー固有プロパティの調べ方: 「デバッグ・調査」章
コメント