スクリプトレンダラーを使ったアウトラインレンダラーEdger
Category : その他
DAZ Studio 3 Advanced(DS3A)の機能の一つにスクリプトレンダラー(Scripted Renderer)があります。マニュアルにも詳細は書いていないのですが、レンダリングプロセスをフルコントロールできるという機能らしいのです。
今回ご紹介するアウトラインレンダラーEdgerはその機能を使い、通常の3Delightレンダリングに加えてオブジェクトの輪郭線を描画するようになっています。ただしこの機能を持つAdvanced版でしか使えないということで記事のリクエストを頂いておりましたので、どんな特徴があるのかを調べてみました。

■使ってみる
EdgerはXextria氏の手により製作されたもので、無償で公開されています。氏の配布ページより、ありがたくダウンロードさせて頂きました。今回はEdgerのみですが、その他のトゥーンシェーダーなども機会があれば試してみたいですね。
配布ページに使い方なども日本語で詳しく書かれていますので、それに沿って準備を整えます。
Renderタブ内のAdvancedタブのUse Softwareの欄がScripted 3Delightに変化していると思います。もしオプションが表示されていない場合はもう一度3Delightにプルダウンメニューから戻し、さらにScripted 3Delightに切り替えて下さい。
Edgerはレンダリングのオプションによって輪郭線を描画するように設定するものなのでシェーダー設定などは関係なく、レンダリングするだけでその効果が現れます。
使用例として、ジープを1台シーンに配置しました。
3Delightレンダラーで普通にレンダリングしたのがこちらです。
ライトはRaytrace影つきのDistant Light1灯と全体を均一に照らすためのIBLライト(AOオフ)を配置し、イラストっぽい仕上げにしてみました。

まず、輪郭線だけをレンダリングするために以下のようにします。
・シーンにライトを1灯配置し、それを非表示にすることでシーンに照明のない状態を作り出します。
・Background Colorを黒にします。
・シェーダーのAmbientやReflectionが0%でないサーフェイスはレンダリングされてしまうのも注意です。
これで輪郭線だけが白くレンダリングされるようになります。
今回の例ではすでにライトが配置されていますので、それらを非表示にしました。
オプションを初期値のままにしてレンダリングしたのが次の画像です。

この時点でもう素晴らしいです。他のトゥーンレンダラーなどではジープのボンネットなどに太い輪郭線が発生してしまいますが、Edgerではすべての輪郭線が均一な太さになります。場所によって太い輪郭線に見えるのは、複雑なジオメトリにラインが密集しているせいです。
ラインが少し太かったのでEdge Widthを0.001に下げました。

ちょっとラインが多すぎるのでShading Rateを2に、Edge Thresholdを0.4に上げました。ラインが途切がちで破線のようになってしまう箇所が出てくるのがこのレンダラーの弱点かもしれませんね。

Pixel Samplesを最大の8に上げ(ラインが途切れにくくなります)てレンダリングしたものと、3Delightレンダラーで普通にレンダリングしたものをPhotoshopなどのフォトレタッチソフトで合成(輪郭線レイヤーを色調反転して描画モード:乗算で重ねる)して完成です。より綺麗な仕上げを目指すなら、Edge Thresholdを下げてレンダリングした画像を切り貼りして足りない輪郭線を補完すると良いでしょう。

※今回は分かりやすいように輪郭線だけを別にレンダリングしましたが、もちろん、オブジェクトのシェーディングと輪郭線の描画を同時にして、合成の手間を省くこともできます。
■Edgerのオプション
EdgerのオプションはRenderタブ内のAdvancedタブで設定します。
最初の方はBucket Orderなど通常の3Delightレンダラーと同じなので省きます。

■Edge Variables
Edge Variablesによる描画の違いを見てみましょう。
作例として、akatoraさんのDecoちゃんをモデルにさせていただきました。
・Normal
Edgerが他のトゥーンシェーダーなどと違うのはこれですね。均一な太さのラインを引いてくれます。スカートのすそなどが太いラインになっているように見えるのは、布の厚みにより2本ラインが引かれているからです。

・Depth
視線と垂直に近い箇所にラインを引いているように見えます。オブジェクトの形状によりラインの太さが不均一になる方法です。

・Opacity
オブジェクトの(言葉通りの意味での)アウトラインが描画されます。

■Edge Fade-out
オプションのEdge Fade-outのところは、カメラからの距離(DS単位)によって輪郭線の太さを変化させるオプションです。NearからFarの間のオブジェクトに対し遠くに行くほど輪郭線を細く描画します。その時、Minimum Widthの値を設定することで設定値より輪郭線を細くしないようにできます。

■Edgerのポイント
Edgerを使ってみてのメモを書き出してみました。
・Renderタブ内のGeneralタブの内容を変更するとオプションが初期化されてしまうのでご注意下さい。
・Pixel Samplesのパラメータは最大にした方がラインが途切れにくくなります。
・Shading Rateも輪郭線の発生に影響します。オブジェクトによりますが1~2ぐらいでもいいかもしれません。
・オブジェクトにConvert to SubD(メインメニューのEdit)をして滑らかな曲面にしておくと良い結果が得られます。
・通常より大きめにレンダリングして、それを縮小するのもいいかもしれません。
・シーンにフィギュアだけ配置などpng保存で透明部分が発生する時は、bmp形式など透明成分の入らない形式で保存しないとアウトラインの太さが半減してしまいます。
・File Exportオプションを使ってみようとしましたが、「P1029: cannot find display driver 'tiff'」というエラーが出てしまいました(DS3.1.0.148)。
■他のトゥーンシェーダーとの比較
最後に簡単にですがEdger、トゥーンシェーダーpwToon、DSのレンダリングスタイル:Cartoon(Renderタブで設定)の3種類で比較をしてみました。
後の2つは塗りもトゥーンになりますので比較しにくいとは思いますが、輪郭線だけを参考にして下さい。
それぞれの画像をクリックすると全身像が開きます。
pwToonについてはこれらの記事をご参照下さい。



今回のツールと画像の素材はこちら
今回ご紹介するアウトラインレンダラーEdgerはその機能を使い、通常の3Delightレンダリングに加えてオブジェクトの輪郭線を描画するようになっています。ただしこの機能を持つAdvanced版でしか使えないということで記事のリクエストを頂いておりましたので、どんな特徴があるのかを調べてみました。

■使ってみる
EdgerはXextria氏の手により製作されたもので、無償で公開されています。氏の配布ページより、ありがたくダウンロードさせて頂きました。今回はEdgerのみですが、その他のトゥーンシェーダーなども機会があれば試してみたいですね。
配布ページに使い方なども日本語で詳しく書かれていますので、それに沿って準備を整えます。
Renderタブ内のAdvancedタブのUse Softwareの欄がScripted 3Delightに変化していると思います。もしオプションが表示されていない場合はもう一度3Delightにプルダウンメニューから戻し、さらにScripted 3Delightに切り替えて下さい。
Edgerはレンダリングのオプションによって輪郭線を描画するように設定するものなのでシェーダー設定などは関係なく、レンダリングするだけでその効果が現れます。
使用例として、ジープを1台シーンに配置しました。
3Delightレンダラーで普通にレンダリングしたのがこちらです。
ライトはRaytrace影つきのDistant Light1灯と全体を均一に照らすためのIBLライト(AOオフ)を配置し、イラストっぽい仕上げにしてみました。

まず、輪郭線だけをレンダリングするために以下のようにします。
・シーンにライトを1灯配置し、それを非表示にすることでシーンに照明のない状態を作り出します。
・Background Colorを黒にします。
・シェーダーのAmbientやReflectionが0%でないサーフェイスはレンダリングされてしまうのも注意です。
これで輪郭線だけが白くレンダリングされるようになります。
今回の例ではすでにライトが配置されていますので、それらを非表示にしました。
オプションを初期値のままにしてレンダリングしたのが次の画像です。

この時点でもう素晴らしいです。他のトゥーンレンダラーなどではジープのボンネットなどに太い輪郭線が発生してしまいますが、Edgerではすべての輪郭線が均一な太さになります。場所によって太い輪郭線に見えるのは、複雑なジオメトリにラインが密集しているせいです。
ラインが少し太かったのでEdge Widthを0.001に下げました。

ちょっとラインが多すぎるのでShading Rateを2に、Edge Thresholdを0.4に上げました。ラインが途切がちで破線のようになってしまう箇所が出てくるのがこのレンダラーの弱点かもしれませんね。

Pixel Samplesを最大の8に上げ(ラインが途切れにくくなります)てレンダリングしたものと、3Delightレンダラーで普通にレンダリングしたものをPhotoshopなどのフォトレタッチソフトで合成(輪郭線レイヤーを色調反転して描画モード:乗算で重ねる)して完成です。より綺麗な仕上げを目指すなら、Edge Thresholdを下げてレンダリングした画像を切り貼りして足りない輪郭線を補完すると良いでしょう。

※今回は分かりやすいように輪郭線だけを別にレンダリングしましたが、もちろん、オブジェクトのシェーディングと輪郭線の描画を同時にして、合成の手間を省くこともできます。
■Edgerのオプション
EdgerのオプションはRenderタブ内のAdvancedタブで設定します。
最初の方はBucket Orderなど通常の3Delightレンダラーと同じなので省きます。

・Render Outline | 輪郭線を描画するかどうかのスイッチです。 |
・Edge Variables | 輪郭線の抽出方法を選択できます。Normal(法線)、Depth(デプス)、Opacity(不透明度)とそれらの組み合わせが用意されています。 |
・Edge Threshold | 抽出のしきい値です。小さいほど細かい部分にまで輪郭線を引きます。 |
・Edge Filter Width | エッジフィルターの幅となっていますが、パラメータによる差は見分ける事ができませんでした。 |
・Edge Width | 輪郭線の太さです。 |
・Edge Color | 輪郭線の色です。 |
■Edge Variables
Edge Variablesによる描画の違いを見てみましょう。
作例として、akatoraさんのDecoちゃんをモデルにさせていただきました。
・Normal
Edgerが他のトゥーンシェーダーなどと違うのはこれですね。均一な太さのラインを引いてくれます。スカートのすそなどが太いラインになっているように見えるのは、布の厚みにより2本ラインが引かれているからです。

・Depth
視線と垂直に近い箇所にラインを引いているように見えます。オブジェクトの形状によりラインの太さが不均一になる方法です。

・Opacity
オブジェクトの(言葉通りの意味での)アウトラインが描画されます。

■Edge Fade-out
オプションのEdge Fade-outのところは、カメラからの距離(DS単位)によって輪郭線の太さを変化させるオプションです。NearからFarの間のオブジェクトに対し遠くに行くほど輪郭線を細く描画します。その時、Minimum Widthの値を設定することで設定値より輪郭線を細くしないようにできます。

■Edgerのポイント
Edgerを使ってみてのメモを書き出してみました。
・Renderタブ内のGeneralタブの内容を変更するとオプションが初期化されてしまうのでご注意下さい。
・Pixel Samplesのパラメータは最大にした方がラインが途切れにくくなります。
・Shading Rateも輪郭線の発生に影響します。オブジェクトによりますが1~2ぐらいでもいいかもしれません。
・オブジェクトにConvert to SubD(メインメニューのEdit)をして滑らかな曲面にしておくと良い結果が得られます。
・通常より大きめにレンダリングして、それを縮小するのもいいかもしれません。
・シーンにフィギュアだけ配置などpng保存で透明部分が発生する時は、bmp形式など透明成分の入らない形式で保存しないとアウトラインの太さが半減してしまいます。
・File Exportオプションを使ってみようとしましたが、「P1029: cannot find display driver 'tiff'」というエラーが出てしまいました(DS3.1.0.148)。
■他のトゥーンシェーダーとの比較
最後に簡単にですがEdger、トゥーンシェーダーpwToon、DSのレンダリングスタイル:Cartoon(Renderタブで設定)の3種類で比較をしてみました。
後の2つは塗りもトゥーンになりますので比較しにくいとは思いますが、輪郭線だけを参考にして下さい。
それぞれの画像をクリックすると全身像が開きます。
pwToonについてはこれらの記事をご参照下さい。



今回のツールと画像の素材はこちら
![]() pwToon | ![]() WWII Jeep |