(Terragen 4) レンダリングクォリティ設定に関する話
本記事の対象Terragen 4バージョン:Free / Creative / Professional (Educational含む)
TG4には,シーンの画質を決定するパラメータがいくつもあります。パラメータを上げていけば当然画質は良くなりますが,それと引き換えにレンダリング時間が激増します。場合によっては,大して差がないのにレンダリング時間がめちゃくちゃ伸びた,ということも起きます。
そのため,PS社の中の人が,パラメータをどのようにチューニングして行くべきかのガイド[ref. 1]を書いてくれています。TG3時代に書かれたものですが,TG4でも使えるものです。
以下は私の要約であり,いらないなと思った分は削ってるし,私の解釈による補足が多分に含まれています。余裕があれば原文を参照ください。もちろん,誤訳・誤解釈について指摘があれば速やかに対応します。
=== ここから ===
まずはデフォルトの設定でレンダリングしてみる。その上で,気になるところについて設定をチューニングしていく。
雲のノイズが気になるなら,cloudノードのQuality値を上げる。大気のノイズが気になるなら,Atmosphereノードのsample数を上げる。
Atmosphereのsampleは,16〜64,高くても128にする。CloudのQualityは高くても1にする*1。
Cloudのレンダリング時間は,高さ(Depth),密度(Dense),縁のシャープさ(edge sharpness)の三つに大きく依存する。同じQuality値でも先の3つのパラメータを上げると,レンダリング時間は伸びる。
GIのクォリティにもう少し精細さが欲しかったら,GI detailを試す。1つずつあげて行くこと。上げてもあまり効果がないようなら別のところに問題がある。
コントラストが高くなるような境界部分(大気と地表の境目とか)でシャギーが見られるなら,RenderノードのAnti-aliasingの数値を上げる。高くても8〜12まで。普通は4〜6あれば十分。細い草木(←fine vegetationの意味これでいいかな?)があるような場合はもっと上げる必要が出てくるが,本当に必要でない限り16より上にはしないこと。
ここまでやって,まだ全体のクォリティを上げたいなら,Detailを上げる。
Detailも少しずつ上げて行くこと。決して一気に最大値にしないこと。だいたい0.5で十分な結果が得られるはず。0.7〜0.8で,レンダリング時間を削減しつつ最終レンダリングにふさわしいくらいの画質になる。0.9は1.0よりレンダリング時間を減らしつつ1.0とほとんど変わらない画質が得られる。(aokcub追記:TG4ではスライダの最大値は0.8になっています。直接入力して1.0にすることもできます)
0.9を1.0にしたからといって見た目で違うくらいの差が得られるとは限らない。ピクセル未満の差しか出ていないことがある。
=== ここまで ===
実際問題
そんな試してる時間はないので(おい),自分は最終レンダリングだとこんな感じでやっています。
大気:最低でも32。朝・夕焼けシーンでは64〜96。64より低いとオレンジが綺麗に出ない場合があるので。
雲:v2 cloud(TG4では,GlobalとHigh levelのCirrus)だと0.8〜1.0
v3 cloud(上記以外のもの)はまだ研究中。
GI関係:デフォルト
レンダラ:0.6〜0.8(大気と雲がちゃんとできてれば0.6で十分)
Anti-Alias:3〜6(だいたい3。v3 cloudのノイズが減らない時に5や6にしたりする)
Reference
*1:TG4のEasy cloud等ではRay-marching qualityになっていますが,同じように適用できるか調査中
(Terragen 4) コマンドラインからレンダリングする
本記事の対象Terragen 4バージョン:Creative / Professional (Educational含む)
TG4はコマンドラインから実行することができます。
バッチファイルからレンダリングしたい,といった場合に便利です。
パスの追加
Windowsの場合は,コマンドプロンプトを開いてsetxコマンドで環境変数を追加できます。ここでは"TG4_PATH"という名前で設定します。TG4のインストールフォルダは適宜修正してください。なお,setxを使用する際はコマンドプロンプトは管理者権限で実行してください。
> setx /M TG4_PATH "C:\Program Files\Planetside Software\Terragen 4" echoコマンドで確認(一度閉じる必要があります) >echo %TG4_PATH% C:\Program Files\Planetside Software\Terragen 4
システム環境変数ではなくユーザ環境変数にしたい場合は/Mを削除してください。
実行
Windows > "%TG4_PATH%/tgdcli" (オプション)
オプションは次の通りです。全部ではなく,よく使うものだけ載せます。なお,オプションは全OS共通です。
-pと-r以外は必要な時以外使わなくて良いです。
オプション | 値 | 説明 | 例 |
---|---|---|---|
-p | プロジェクトファイル名 | プロジェクトファイルを開く | -p hoge.tgd |
-r | (なし) | プロジェクトファイルをレンダリングする | -r |
-rendernode | Render node名 | 指定したRender nodeをMasterにする。-rでレンダリングする場合は指定したRender nodeでレンダリングされる。複数のRener nodeを設定していない限りは指定する必要はないです。 | -rendernode "Render 01" |
-f | フレーム名 | -rを指定した場合に,ここで指定したフレームをレンダリングします。カンマ,ハイフン,スラッシュを使って細かく指定することができます。アニメーションを使わない場合は指定しなくて良いです。 | -f 1-50,66,71-100/10 => 1から50フレーム, 66フレーム,加えて71〜100フレームを10フレーム刻みで(つまり71, 81, 91)レンダリングします。 |
-o | 出力ファイル名 | -rを指定した時,レンダリング後に保存する画像のパスを指定します。指定しない場合は,RenderのSequence/outputタブで指定されているファイル名が使用されます。アニメーションレンダリングの場合は,%04dのようにフレーム番号が入るところを作ってやってください。dの前の数字はフレーム番号の桁数です。その前に0を入れるとゼロ埋めされます。 | -o temp.%04d.bmp => temp.0001.bmp, temp.0002.bmpのように保存されます。 |
-tilex | レンダリングするx方向の範囲。 | 指定した範囲をレンダリングします。シーンの左端が0,右端が1です。tilexを指定すると,RenderのCropで指定した値は無視されます。 | -tilex 0 0.2 |
-tiley | レンダリングするy方向の範囲。 | 指定した範囲をレンダリングします。シーンの下端が0,上端が1です。tileyを指定すると,RenderのCropで指定した値は無視されます。 | -tiley 0.5 0.7 |
例
hoge.tgdの,1-10フレームをレンダリングし,result.01.exr, result.02.exr...の連番OpenEXRで保存する。
Windows > "%TG4_PATH%/tgdcli" -p hoge.tgd -r -f 1-10 -o result.%02d.exr
実行するとレンダリングが始まります。正常に終了すると最後はこのようになります。
以上です。
Reference
より詳しい説明はこちらから。
Command Line Reference - Terragen Documentation from Planetside Software
宣伝
高解像度全天球テクスチャです。
++skies; - Photo-Realistic Panoramic Sky Textures
去年CG集つくりました。よろしければ買ってください。
【風景CGイラスト集】今日も空を見ている - aokcub::Booth - BOOTH
ポストカードもあります。
風景CGポストカード - aokcub::Booth - BOOTH
その他缶バッジなどもあります。
aokcub::Booth - BOOTH
(Terragen 4) CropとGI cacheを使って重いレンダリングの精神的負担を軽くする
本記事の対象Terragen 4バージョン: Creative / Professional (Educational含む)
こんにちは。
ここ数年,TG4(前はTG3)で16384x8192とかそういう解像度のレンダリングを100時間くらいかけてやることが多いのですが,長時間レンダリングになると怖いのがやはりレンダリング途中のクラッシュです。単にエラーで落ちることもあれば、メモリが足りなくなって落ちることもあります。以前90%以上完了していたレンダリングが落ちたこともありました。死にたい。
レンダリング課金勢にとっては,クラッシュした分はRどころか何も引けなかったに等しいです。ドブってレベルじゃない。
そういう無駄な課金を防ぐためにはシーンを分割してレンダリングするのが一つの方法です。分割することで,失敗した時の精神的・金銭的ダメージを抑えられます。
以下は私がスカイドームテクスチャを作成する際に常にやっていることですが,スカイドームでなくても通常のシーンレンダリングでも使える方法です。なお,文中のキャプチャはMac OS X版で撮っていますが,やり方はWindows版でも同じです。
Crop rendering
分割するということで,まずはCropの使い方から。
TG4には(たぶん他のソフトウェアと同様に),カメラ内の指定した領域だけレンダリングしてくれる機能があります。設定はRenderのCropタブで行います。
"Do crop region"にチェックを入れ,下の4つのフィールドに数字を入れることで,レンダリングする領域を指定することができます。
シーンの左端、下端が0、右端,上端が1になります。
Cropを有効にすると,プレビュー上ではその領域が赤枠で表示されます。
これでレンダリングするとこんな感じに。
この機能はシーンの一部だけレンダリングして様子を見たいような時も使えるので,覚えておくと便利です。
今回はシーンを横に5分割してやります。つまり,[left, right]がそれぞれ[0, 0.2], [0.2, 0.4], [0.4, 0.6], [0.6, 0.8], [0.8, 1]となるようにします。それぞれレンダリングしてやれば,5枚の分割レンダリング画像が出来上がります。
アニメーションレンダリング機能と組み合わせて,一気にレンダリングすることもできます。アニメーション機能については詳しくは触れませんが,Crop領域を指定してやった後でAnimation keyをセットします。 1フレーム目は[0, 0.2], 2フレーム目は[0.2, 0.4]といった感じで,5フレーム使って各領域をレンダリングしてやるような感じです。
各フレームの設定が終わったら,"Sequence/output"タブに移動します。"sequence first"を1,"sequence last"を5にして,"Render Sequence"を押してアニメーションレンダリングを始めます。"Output image filename"は任意の名前で良いですが,"%04d"は残しておいてください。ここにフレーム番号が入ります。
Command lineでレンダリングする場合は-fオプションを入れます。
Windows "%TERRAGEN_PATH%/tgdcli" -p hogehoge.tgd -r -f 1-5 OS X ./'Terragen 4' -p hogehoge.tgd -r -rendernode full -f 1-5 Linux ./terragen -p hogehoge.tgd -r -f 1-5
レンダリングが終わると
このように5枚の画像が出来上がります。(ファイル名は一例です)
あとはこの5枚の画像を合成するだけ...のはずなんですが,多くの場合ここで悲惨な結果になります。
このように,分割した画像間で明るさに差が出てしまいます。これは,分割してレンダリングしたことで,それぞれのレンダリング時に行われるライティングの計算にミスマッチが出ることによります。
すでにTG4でレンダリングをしたことがある方なら,レンダリングし始めると黒い画面にポツポツと点が現れ,それが全体に広がると,今度は精細な画像が現れ始めるのを見たことがあると思います。最初のポツポツが出ている時,TG4はシーン内の明るさを計算しています(この段階をprepassと呼んでいます)。その後,prepassの結果を使ってシーンを仕上げて行きます(final passと呼んでいます)。
prepassはレンダリングする領域に対して行われるため,分割すると領域ごとにどうしても誤差が出てしまいます。
GI cacheの書き出し
これを防ぐために,GI cacheというものを使います。これは,prepassでの計算結果をキャッシュファイルとして保存することができる機能です。
GI cacheを使うためには,まず"Do crop region"のチェックを外し,シーン全体をレンダリング対象にします。
次に,Renderの"GI setting"をクリックし,開いたダイアログの真ん中あたりにある"Write to GI cache file"をチェックします。ファイル名はなんでもいいですが,ここでは"gicache_%04d.gic"にします。
終わったらレンダリングします。"Write to GI cache file"を選択している場合は,prepassまででレンダリングが終了します。
同時に,拡張子gicのファイルが出力されます。これで,シーン全体に対して計算を行った結果が保存されました。
GI cacheの読み込み
次に,保存したキャッシュファイルを読み込んで,シーンをレンダリングします。
もう一度"GI setting"を開いて,今度は"Read GI cache file(s)"をチェックします。そして,先ほど保存されたキャッシュファイルを指定します。そして,"Blend mode"を"One file (exact filename)"にします。
今回は一つのキャッシュファイルを使いますが,複数のファイルを読み込むこともできます。その時にどのようにファイルを使っていくかを指定するのが"Blend mode"です。いつか仮に(本格的な)アニメーションレンダリングの解説を書くことになったら触れるのでしょうが,今は放っておきます。
読み込むキャッシュファイルを指定したら,もう一度分割レンダリングの設定をして,レンダリングを始めます。
prepassはもう完了しているため,Final passから始まると思います。これで,全てのフレームで同じprepass結果を使用してレンダリングをすることができるため,明るさのミスマッチが生じなくなります。
レンダリングした画像をまとめるとこの通り。
課金額を減らして効率的にSSRを手に入れましょう。以上。
補足
この設定を毎回やるのは面倒です。
なので自分はRenderを二つ用意して,キャッシュ書き出し用とキャッシュ読み込み・レンダリング用にしています。この設定をしたものをテンプレとして保存して使っています。
Command lineでは-rendernodeオプションにより使うRenderを指定できます。
Windows "%TERRAGEN_PATH%/tgdcli" -p hogehoge.tgd -r -rendernode cache -f 1 "%TERRAGEN_PATH%/tgdcli" -p hogehoge.tgd -r -rendernode full -f 1-5 OS X ./'Terragen 4' -p hogehoge.tgd -r -rendernode cache -f 1 ./'Terragen 4' -p hogehoge.tgd -r -rendernode full -f 1-5 Linux ./terragen -p hogehoge.tgd -r -rendernode cache -f 1 ./terragen -p hogehoge.tgd -r -rendernode full -f 1-5
補足2
解像度が高い場合,キャッシュファイルのサイズが数GBに及ぶことがあります。ストレージの空きにはご注意ください。
Reference
Terragen 4 Global Illumination - Terragen Documentation from Planetside Software
Rendering Methods - Terragen Documentation from Planetside Software
Render - Crop Tab - Terragen Documentation from Planetside Software
Command Line Reference - Terragen Documentation from Planetside Software
宣伝
高解像度全天球テクスチャです。
++skies; - Photo-Realistic Panoramic Sky Textures
去年CG集つくりました。よろしければ買ってください。
【風景CGイラスト集】今日も空を見ている - aokcub::Booth - BOOTH
ポストカードもあります。
風景CGポストカード - aokcub::Booth - BOOTH
その他缶バッジなどもあります。
aokcub::Booth - BOOTH
2018-02-17 2:20 補足2加筆,対象バージョン追加,本文中のCreative/Professional向けの区分削除,その他微修正
2018-02-17 2:49 2レンダーノード設定時のコマンドライン実行方法追加
2018-02-17 2:54 OS Xのコマンドラインコマンド追記