アニメ調リアルタイムレンダリング

アニメ調ってどう表現すればいい?
ここ最近は3DCGに関することでは8割方、このことを考えている。そんな中素晴らしい技法が次々と見られたので一旦まとめておく。

最初に定義しておこう。アニメ調の表現に必要なものは以下のものだ。

  1. 輪郭・エッジ線表現
  2. トゥーン表現


まずはじめに輪郭・エッジ線表現からだ。これは過去、そして現在に至るまでの鉄板表現がある。それはモデルの拡大・反転。最も一般的な手法であり、リアルタイムトゥーンレンダリングはほぼコレであると思われる。コストはモデル二倍になるだけ(?)であり、輪郭線もエッジ線も出る。そしてモデル的に実装するにしても、プログラム的に実装するにしても表現は容易である。

続いて使われていると思われるのがZ値検出。まず3Dのモデルなのだから、Z方向(前後方向)への差が出てくる。そして境界・エッジ部分はZ方向への差が大きい。通常そういった情報はZマップに書き込まれているのでそれをポストエフェクトで輪郭検出し、輪郭線を描くという方法だ。これは当然プログラム側での実装となる。

ここまで2つ紹介したが、実現手法を見て分かる通り全てモデル形状に依存しており、微妙な調整をしようとすると職人の技が必要となる。私のような脱初心者レベルの3DCGモデラーが出したいところに輪郭線を出せるか?というとそんな簡単なものではない。

そこで次に出てくるのが輪郭線を調節できる方法である。以下のページを見てもらいたい。
MEGA-MOUTH - 3DCGアニメ 検証:3Dアニメに輪郭線は必要か?その3
この記事で紹介されている技術は、モデルデザイナーが出したい線を出来る限り出せる輪郭線表示の方法だ。表示用のテクスチャとは別にテクスチャを保持しておくか、頂点カラーを変えることにより実現している。これらをポストエフェクトとして輪郭検出し、レイヤーを重ねるわけだ。どう素晴らしい効果が出ているかは、リンク先を参照してもらいたい。

以下書きかけ。


あれの続き。【Blender】アニメ調(トゥーン)マテリアル&ノードその2