LightWave で NPR:筆描き表現を目指して #3

上の記事に続いて、以前紹介したことのある LightWave のシェーダープラグインunReal Xtreme2」を使ったモノクロ筆描き表現を試みた。ソフトウェアの使用バージョンは LightWave 2015.3 日本語版である。

事前準備

プラグインをインストールしておく。Layout でビューはVPRにしておく。背景を白にしておく(これは ToonTracer のオプションで設定してもよい)。

オブジェクトごとに線を違う太さにしたい場合はサーフェイスを分けるといったように、出したい輪郭線の設定によって任意にサーフェイスを調整しておくとよい。今回も前回同様に『終りなき戦い』のコンバットシェル(改変版)を利用しているが、コンバットシェルとその他のオブジェクトでサーフェイスを別にしている。

そして以下のようなMatCap用画像を用意する。作成方法は前回参照のこと。パーツ(サーフェイス)ごとに質感を分けたいなら、その分だけ別の画像も用意する。

今回は輪郭線を描画するブラシに画像テクスチャを設定する(つまりテクスチャで輪郭線を描く)ので、そのために以下のような少し濃い目の画像も用意した。

また、今回も平面対策として変形(Displacement)ノードを使いオブジェクトに微小な凹凸をつけている。これも設定方法は前回参照のこと。

サーフェイスにMatCapを設定する

Layout(Modeler でも可能)にて、左上メニュー[色・質感編集](ショートカット【F5】)で[Surface Editor]を開く。サーフェイスを選択して[基本]タブの[ノード編集]ボタン右隣のチェックボックスをオンにしたら、[ノード編集]ボタンを押して[Node Editor]を開く。

プラグインがインストールされていれば左のノード欄に[unReal]という項目が出来ているので、[unReal]>[unReal2::PaintmapCoordinate]から[PaintmapCoordinate]ノードを出す。そして[2D Textures]>[Image]で[Image]ノードを出す。

[PaintmapCoordinate]ノードの[U Offset]出力を[Image]ノードの[U Offset]入力へ、[V Offset]出力を同じく[V Offset]入力へ、[Position]出力を[Position]入力へとそれぞれ繋ぐ。最後に[Image]ノードの[Color]出力を[Surface]ノードの[Diffuse Shading]に繋ぐ。

[Image]ノードをクリックして編集パネルを出し、[Image]>[(load image)]から質感を適用するMatCap用画像を読み込む。すぐVPRのビューに反映されるだろう。これを適用したいサーフェイスすべてでおこなう。


EdgeTracer をセットする

そのまま[Surface Editor]にて、[シェーダ]タブの[シェーダ追加]プルダウンメニューで[unReal2::EdgeTracer]を選択する。

追加されたその名称部分をダブルクリック(または右クリック>[プロパティ])して出てきた[グループID]欄に番号を振る。今回は2種類のサーフェイスにそれぞれ「0」と「1」を割り当てた。この「グループID」を割り振ることで、IDごとに太さを変えたりといった輪郭線設定の調整ができる。


ToonTracer を設定する

Layout 左上メニュー[ウィンドウ]>[イメージプロセッシング]で[特殊効果]ウィンドウを開く(ショートカット【Ctrl+F8】)。[プロセシング]タブ>[ピクセルフィルタ追加]から[unReal2::ToonTracer]を選択して追加。

追加されたその名称部分をダブルクリック(または右クリック>[プロパティ])して[unReal Xtreme2 - ToonTracer]設定パネルを出す。このパネルで線の描画設定をおこなう。

まず[タイプ]を[画像]にして、右の[(Load Image)]からあらかじめ用意したブラシ用画像を読み込む。ブラシAAは[高]にした。

次に[ブラシ設定]タブの各パラメータを設定する。[サイズ]は30、[柔らかさ]は100%、[圧縮率]は20%、[角度]は10°、[不透明度]80%、[中心点X]と[Y]は共に20%にしてみた。

ここのブラシ設定でノイズ系のプロシージャルテクスチャを利用することで、手描き風の効果を出すことができる。まず[サイズ]の右にある[T]ボタンを押して[テクスチャ編集]パネルを開き、[レイヤー種]を[プロシージャル]にして、[プロシージャル種]でノイズ系のプロシージャルテクスチャを選択する。ここでは[Turbulent Noise]にしている。

このノイズによってブラシサイズが均一ではなく、線の太さが不規則に変化するようになる。[柔らかさ][圧縮率][角度]でも同様にプロシージャルテクスチャを適用する。ちなみに[T]ボタンは【Shift】を押しながらクリックすると解除できる。なお、[優先順位チェック]は[深度]にした。

[境界設定1]タブでは[オブジェクト境界][サーフェイス境界][グループ境界][深度境界]にチェック、[境界設定2]タブでは[法線の折り目][アウトライン]にチェックした。

ToonTracer ではブラシ設定と描画設定を1つのレイヤーとして扱う。先ほどサーフェイスに設定したグループIDごとに太さを変えたいので、ここでレイヤーを分けたい。左の[レイヤー]リストで現在のレイヤーを選択し、上の[レイヤー複製]ボタンを押して複製する。パネル上部の[レイヤー名]で分かりやすいようにレイヤー名を変更する。今回は「NewLayer0」と「NewLayer1」にした。

各レイヤーを選択してから左下[グループ]リスト一番左の欄で、それぞれ描画を適用するグループIDを決めてチェックする。ここでは「NewLayer0」にグループ「0」、「NewLayer1」にグループ「1」をそれぞれ適用させている。左から2番目の欄では描画から除外するグループIDにチェックする。

ここではコンバットシェルのサーフェイスに割り当てたグループ「0」を「NewLayer0」へ適用させ、それ以外のサーフェイスに割り当てたグループ「1」を「NewLayer1」に適用させた。そしてコンバットシェルつまり「NewLayer0」の輪郭線を20pxにして、30pxとしていた他のサーフェイス(レイヤー)よりも細く設定した。その他の設定は一緒。

すべてのサーフェイスに設定し終えたら、ショートカット【F9】でレンダリングして画像に出力。作成したサーフェイス設定を保存するならオブジェクトの保存を忘れずに。

静止画ではそれなりだが、動画だと輪郭線の途切れなどが目立つ。まだ設定が甘いのかもしれない。静止画でレタッチ前提なら使えるかも。動画のレンダリング時間は前回の手法よりも圧倒的に早かった。

筆書き風の画像を出力する手法として前回と比較すると、スフィアマッピング機能があり、テクスチャで線を描け、レンダリングが早いという3点くらいしか「unReal Xtreme2」を使う利点がない気がする。

ライセンス

本記事に使用したオブジェクトの元データは、作成者の rogerharkavy 氏によりクリエイティブコモンズ・ライセンスの「Attribution-NonCommercial-ShareAlike(表示-非営利-継承)」で配布されているため、その派生物である本記事内の出力画像にも同じライセンスを適用する。

クリエイティブ・コモンズ・ライセンス
rogerharkavy, Ditty を著作者とするこの 記事内の画像クリエイティブ・コモンズの 表示 - 非営利 - 継承 4.0 国際 ライセンスで提供されています。
http://www.thingiverse.com/thing:21308にある作品に基づいています。