#

普通に絵を描く際にはわりと適当な基準で引いている輪郭線だが、機械的に引かせるなら明確なアルゴリズムが要る。理屈として有名な物に、深度、法線、マテリアルエッジの 3つがある。

* 深度エッジ

カメラから見た深度のバッファを作成し、それをシェーダで処理して、深度に大きな差がある部分に線を引く。結果は以下のようになる。


(クリックで原寸)

この方式の弱点は、検出の精度=深度バッファの精度であるため、バッファを贅沢に使えないと輪郭が出にくくなる。アルゴリズムの都合上、この傾向は対象となる物体とカメラとの距離が一定に近い時に弱まり、シーンが非常に広くて焦点を合わせにくい時に強まる。

* 法線エッジ

カメラから見た法線マップを作成し、それをシェーダで処理して差のある部分に線を引く。

やる前から想像つくが、球のようになだらかに法線が変化する箇所や、たまたま遠くの物体と法線が合ってしまった場合など、様々な理由で「出ていいはずの輪郭」が出ない。これがこの方式の最大の弱点と言える。また、法線を格納する関係上3チャンネル必要なため、深度のようにAだけで頑張ってパスを節約するといった事ができず、GPUへの負担が大きい。一方距離と全く関係なく常に一定の品質で検出に成功するのは利点である。

* マテリアルエッジ

カメラから見たマテリアルマップを作成し、それをシェーダで処理して差のある部分に線を引く。結果は以下のようになる。


(クリックで原寸)

シーン全体で一つのマテリアルIDリストを共有した場合、異なる物体が所有するマテリアルIDは必ず違う物になるので、どの輪郭線も確実に出る。そしてその輪郭線は「マテリアル境界」という角度にも距離にも左右されない安定した基準で引かれており、機械ノイズが混じりにくく、あたかもline命令で引いたような綺麗な線になりやすい。

と書くといい事ずくめのように思えるが、前記2方式と違って今度は出て欲しくない部分に輪郭線が出る事が多く、これはこれで結構問題がある。またメッシュを作る段階から輪郭線の事を考えなくてはならないので、ただ作って放り込めば後はシェーダが何とかしてくれる前2方式と比べ、データ管理が圧倒的に面倒くさい。


// Time Stamp
  2005-11-29 04:21:05 (Last Modify)
  0000-00-00 00:00:00 (First Edition)

// Bookmarks

// アクセスの多い記事

# 2007-07-30 11:29:32 - レイクドリャフカ - しろくま屋
# 2006-10-26 06:09:21 - MMORPG用語の基礎知識
# 2006-10-11 01:16:45 - 似非SFでよく誤用される近代~近未来兵器についての知識
# 2006-12-11 02:59:04 - 彼にはカルドセプトサーガの前に数当てゲームを作らせるべきだった
# 2010-02-18 23:26:20 - カミナギ - 人工無能
# 2006-12-25 04:53:42 - febgm Build100
# 2007-06-05 17:34:54 - フィーチャーから見る格闘ゲームの歴史
# 2007-04-30 15:04:20 - 格ゲー衰退の根本的な問題点と解決策とは?
# 2007-06-14 20:00:20 - カプコンとSNKの必殺技コマンド入力判定の厳しさの差を検証
# 2006-12-13 02:44:53 - 真の低脳は意外なところに潜む
# 2006-10-28 11:38:39 - 文系はコミュニケーション能力という名の処刑斧を振るった
# 2006-10-24 03:08:51 - 「MMORPG」の画期的特性とは何だったのか

Sitemap: インデックス > blog

ConnectingDB: 0.00ms.
Logging: 0.06ms.
QueryingPrimary: 0.00ms.
OutputtingRelationEntries: 0.00ms.
OutputtingPopularEntries: 0.00ms.
OutputtingReferer: 0.00ms.

Powered by PHP / MySQL, 4080th Visitor