輪郭線をレンダリングする (レイトレーシング)
輪郭線をに表現するレンダリング手法として「トゥーンレンダラ」を使用できますが、
Standard/Professonalのグレードのみの機能になります。
複雑な手順になりますが、
Basicのグレードやレイトレーシング/パストレーシング手法でも、ある程度の制限をかけることで輪郭線の表現を行うことができます。
制限事項
この方法では、以下のような制限事項があります。
- 輪郭線の色は単一
- 輪郭線にジャギーが発生しやすい
- レイトレーシング/パストレーシングの手法でのみ使用できる(ただし、大域照明は使用できない)
- 鏡のような反射には反映できない
- 透明を使用するため、レンダリング時間がかかる
手順
以下の手順では、黒色の輪郭線を表示します。
- 対象形状を複製し、一方を輪郭用の形状とする
- ポリゴンメッシュの面のベベル(オフセット)で輪郭用の形状をわずかに膨らませる
- 表面材質の「発光」をマイナス値にして輪郭を表現
- カメラの前に「発光」を指定した面を配置し、形状にかかったマイナスの発光を打ち消す(輪郭だけ残す)
対象形状を複製
以下のような形状に黒の輪郭線を与えていきます。
ブラウザで、形状「bunny」を同じ位置に複製します。
この複製した形状に、輪郭用の表面材質を与えます。
面のベベル(オフセット)で輪郭用の形状をわずかに膨らませる
ポリゴンメッシュで操作します。
自由曲面を使用している場合は複製した形状をポリゴンメッシュに変換すると、同等の操作ができます。
複製した形状をブラウザで選択します。
形状編集モード + 面選択モードに移行します。
すべての面を選択します。
ツールボックスの「編集」-「メッシュ」-「編集」-「ベベル」を選択し、
面のベベル(オフセット)を使用して、ポリゴンメッシュを全体的にわずかに太らせます。
この場合は、ツールパラメータの「サイズ」を4mmとました。
これが輪郭線の太さに相当します。
ツールパラメータで「確定」ボタンを押して確定します。
これで、オリジナルの「bunny」形状を囲むように複製した「bunny」が配置されました。
表面材質の「発光」をマイナス値にして輪郭を表現
複製/ベベルのオフセットをかけた形状を選択し、表面材質より以下の設定を行います。
「その他」ボタンを押し、「陰影付けしない」「影を落とさない」「影を表示しない」をオンにします。
「拡散反射」を0、「光沢1」を0、「透明」を1.0(白)にします。
これで、完全な透過表現になります(レンダリングに反映されないようにする)。
加えて「発光」を-1.0にし白色を割り当てます。
スライダ操作ではマイナス値を入れることができないため、数値入力ボックスで「-1」と入力します。
これはマイナス方向の発光になり、暗くなる効果がかかります。
この段階でレンダリングすると、真っ黒(実際はマイナスに発光)なポリゴンメッシュ内に
オリジナルのポリゴンメッシュが配置される状態になり、
黒くレンダリングされます。
カメラの前に「発光」を指定した面を配置
カメラの前に、スクリーンが隠れるように長方形を配置します。
カメラは、オブジェクトカメラにしておくと四面図で位置を確認しやすいです。
ツールボックスから「作成」-「形状」-「ポリゴン」-「長方形」を選択し、図形ウィンドウでドラッグして長方形を作成します。
マニピュレータを使ってカメラと形状を遮るように移動/回転させます。
これは適当でいいです。
透視図で見て、スクリーン全体を覆うように配置します。
この板形状の名前をブラウザで「Mask」と名前変更し、表面材質で以下の設定を行います。
「その他」ボタンを押し、「陰影付けしない」「影を落とさない」「影を表示しない」をオンにします。
「拡散反射」を0、「光沢1」を0、「透明」を1.0(白)にします。
これで、完全な透過表現になります(レンダリングに反映されないようにする)。
加えて「発光」を1.0にし白色を割り当てます。
この「発光」は輪郭線用の形状と同じ色指定で、発光値の符号を反転させたものです。
これにより、「マイナスの発光を打ち消す」効果を与えます。
レンダリングすると以下のようになりました。
なお、「アダプティブサンプリング」を使用したアンチエイリアス処理をかけたほうが若干ジャギー具合が収まります。
膨らませた輪郭線に対し、
オリジナルの形状がある部分は発光が打ち消されて普通にレンダリングされます。
輪郭は黒で残ることになります。
しかし、地面と背景が真っ白になってしまいました。
地面を正しくレンダリングする
「Mask」の形状で発光1.0(白色)を与えてスクリーンを覆ってますので、
これを打ち消す必要があります。
地面の形状を選択し、表面材質の「発光」-1.0(白色)を与えます。
この操作は、スクリーンから見えるすべての「輪郭線の処理をしない形状」に対して行う必要があります。
レンダリングすると以下のようになりました。
背景を正しくレンダリングする
統合パレットの背景より「イメージ」レイヤを追加します。
あらかじめ真っ白なテクスチャ画像を作成しておき、ツールボックスの「作成」-「その他」-「イメージ」からシーンに読み込んでおきます。
レイヤの「イメージ」を指定し、読み込んだ白色のイメージを割り当てます。
背景画像のプレビュー部を右クリックしたコンテキストメニューより「イメージ」から指定します。
「領域」は「全体」、「投影」は「平面」を選択。
合成は「加算」をポップアップメニューより指定し、濃度値は「-1」を指定します。
これは、輪郭線や非輪郭線形状の「発光」で指定した値と同じ効果です。
背景の場合は、「加算」を指定することで指定の色(この場合は白)で発光する効果を与えます。
マイナス値であるので黒色のマイナスの発光が行われることになります。
レンダリングすると以下のように背景が反映されました。
このように、Basicの機能だけで輪郭線を表現できました。
輪郭線のジャギーが出る原因は ?
輪郭線のジャギーは、アンチエイリアス設定を調整しても回避が難しいです。
これは、マイナス発光で黒色になっている輪郭部と周囲のピクセルの輝度差が大きく平均化できないために起きる問題です。
「面光源の周囲がアンチエイリアシングされない ?」を参照くださいませ。
これを回避するには、一度大きめの画像でレンダリングしてから縮小するのが手っ取り早いかもしれません。