お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
[CEDEC 2007]最新3D技術論文読みこなしのススメ。2007年注目の「Frequency Domain Normal Map Filtering」とは?
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2007/09/28 23:26

ニュース

[CEDEC 2007]最新3D技術論文読みこなしのススメ。2007年注目の「Frequency Domain Normal Map Filtering」とは?

田村尚希氏(シリコンスタジオ 技術本部ソフトウェア開発部 エンジニア)。氏がFrequency Domain Normal Map Filteringについて解説した
画像集#002のサムネイル/[CEDEC 2007]最新3D技術論文読みこなしのススメ。2007年注目の「Frequency Domain Normal Map Filtering」とは?
 最新3Dグラフィックスに関連した技術トラックは,CEDEC 2007のなかでも特別に「Imagire Day」と題されている。本稿ではその中から,2007年9月28日に行われた「ゲーム開発者向け最新技術論文解説・実装講座」を紹介したい。
 「トップレンダリストを目指して」というサブタイトルの用意された同セッションは,「最新の学術論文をリサーチしてゲームの実装に生かそう」という趣旨で,2007年8月に北米で開催されたCG関連の学会&展示会「SIGGRAPH 2007」において発表された,二つの最新論文について解説が行われた。その両方を採り上げるというのは筆者にはやや荷が重いので,今回は比較的分かりやすい,「Frequency Domain Normal Map Filtering」を採り上げてみよう。


英語の論文を読みこなそう


 さて,本セッションは,バンダイナムコゲームスの今給黎(いまぎれ)隆氏とシリコンスタジオの田村尚希氏が,それぞれSIGGRAPH 2007で発表された最新の論文を1本ずつ紹介&解説するという形で進められた。

今給黎 隆氏(バンダイナムコゲームス コンテンツ制作本部制作統括ディビジョン 技術部 プロジェクトサポート課 プログラマ)
画像集#003のサムネイル/[CEDEC 2007]最新3D技術論文読みこなしのススメ。2007年注目の「Frequency Domain Normal Map Filtering」とは?
 冒頭,登壇した今給黎氏は,まず学術論文の成果を収集することの重要さを強調。情報を収集する場としてSIGGRAPH 2007をはじめ,欧州で開催されている「Eurographics」,GPUメーカーやソフトベンダーが発表を行う「GDC」などを紹介し,「論文は英語だが,英語を勉強するしかない」と会場に呼びかけた。

 続いて氏が解説したのが,SIGGRAPH 2007で発表された「Eikonal Rendering」(独マックス・プランク研究所,Ivo Ihrke,Gernot Ziegler,Art Tevs,Christian Theobalt,Marcus Magnor,Hans-Peter Seidel)である。
 Eikonal Renderingというのは,簡単にまとめると光が屈折するようなオブジェクト――ガラスや水などが典型例だ――を高効率でレンダリングする技法である。先にお断りしたとおり,本稿では採り上げないので,興味のある人には公式サイトに用意されている論文やサンプルビデオの参照を勧めたい。

 一方,田村氏が解説したのが,同じくSIGGRAPH 2007で発表されたFrequency Domain Normal Map Filteringである。
 Frequency Domain Normal Map Filteringは,ミップマップと法線マップを利用した現在のレンダリングに見られる問題点を,比較的効率のいい方法で改善しよう,というものだ。では,そもそもどういう問題があるのか。田村氏はそこから話をスタートさせた。


ミップマップと法線マップの問題点


元のテクスチャから,あらかじめ小さなテクスチャを用意しておく。これがミップマップテクスチャだ。なお,会場で撮影した写真では数式などが見づらかったため,本稿では配布された資料のスキャンを利用する。ご了承願いたい
画像集#004のサムネイル/[CEDEC 2007]最新3D技術論文読みこなしのススメ。2007年注目の「Frequency Domain Normal Map Filtering」とは?
 どういう問題があるのかを把握するには「そもそもミップマップとか法線マップって何よ?」という話から入る必要がある。
 ご存じのように,3Dキャラクターというのは,3Dのオブジェクトにテクスチャを貼ることで,“それらしく”見せている。2次元の絵であるテクスチャを3Dのオブジェクトに貼り付けているわけだ。

 オブジェクトが遠くにあると,オブジェクトは小さく表示される。したがって,テクスチャも小さくしなければならないわけだが,いちいち縮小するのは面倒で,計算の負荷もかかる。そこで,その都度縮小するのではなく,あらかじめ小さなサイズのテクスチャを生成して用意しておくのだが,このとき用意されるのが「ミップマップテクスチャ」である。

 ミップマップテクスチャは,元のテクスチャの2×2ピクセルの色を平均して1ピクセルする,といった具合に縮小して生成する。
 ミップマップを使う場合の問題点の一つに,「奥行きがあるオブジェクトだと,奥に行くにしたがって異なるサイズのテクスチャが貼られるため,継ぎ目が生じる」というものがある。これを目立たなくするのが「ミップマップフィルタリング」という技法で,ゲームの設定などにも時折見かける「トリリニアフィルタリング」とか「バイリニアフィルタリング」というのがそれである。

法線マップとミップマップテクスチャ。それぞれの大きさのテクスチャに,それぞれ法線マップを用意するが……
画像集#005のサムネイル/[CEDEC 2007]最新3D技術論文読みこなしのススメ。2007年注目の「Frequency Domain Normal Map Filtering」とは?
 ところで,オブジェクトの表面は平坦とは限らない。カメラ位置から見えるピクセルの色を得るには,オブジェクト表面の向きの情報が必要だ。テクスチャの各ピクセルの向きの情報を「法線マップ」というが,実際に画面に描かれるときには,光源とピクセルの向き(法線マップ)からカメラ位置の画像を得ることになる。

 ここで示されているスライドのように,2×2ピクセルの法線を平均した法線を使って,ミップマップテクスチャに対応する法線マップを用意する。これで,オブジェクトが遠くにあっても近くにあっても表面の向きの情報を含めた画像が再現される……わけだが,ここに問題がある。

 現実の世界を考えてみよう。遠くにクルマがあるとする。目に映るクルマは,「クルマが反射した光」が小さく見える像のハズだ。クルマが反射する光は,元の大きさの法線マップから得られるはずである。
 要するに,遠くにある物体を正しく描画するには,元の大きさのテクスチャと元の大きさの法線マップを使って反射する光の色を求め,それを小さく縮小しなければならないわけだ。このような方法を「スーパーサンプリング」と呼ぶ。

 「平均化したテクスチャと平均化した法線を使って求めた色」と,「スーパーサンプリングで求めたピクセルの色」に,違いが出る場合があるのは,もはや必然である。
 仮に,クルマの表面に凹凸があって,凹凸の内部が赤と黒で塗られており,赤い色の面の法線はカメラ方向を,黒い色の面はカメラとは異なる方向を向いていたとすると,遠方にあるカメラには凹凸部分の色が赤色に近い感じで見えるはずだ。だが,平均化したテクスチャと平均化した法線を使って色を求めると,決してそのようには再現されないことは,容易に想像できるだろう。


スーパーサンプリングに近い結果を得る

Frequency Domain Normal Map Filtering


 スーパーサンプリングを利用すると,遠くにある物体を正しく描画できる。しかし,これをリアルタイムのレンダリングで行うのは計算量的に無理だ。できるだけシンプルな方法で(=リアルタイムのレンダリングが行える程度の計算量で)スーパーサンプリングに近い結果が得られないだろうか,ということで提案されたのが,Frequency Domain Normal Map Filteringという技法である。

 まず,スーパーサンプリングを数式化すると,「BRDF」(Bidirectional Reflectance Distribution Function,双方向反射率分布関数)だけをスーパーサンプリングすればいいという結果が得られる。

スーパーサンプリングを数式化すると,このスライドのようになる。詳細は省くが,「L(x,ωi)は定数だから,BRDFだけをスーパーサンプリングすればいい」わけだ
画像集#006のサムネイル/[CEDEC 2007]最新3D技術論文読みこなしのススメ。2007年注目の「Frequency Domain Normal Map Filtering」とは?

 BRDFとは,「ある方向から光が入射して反射するときに,どの方向にどれくら
いの光が反射するか」の分布を表す関数である。上のスライドで網掛けになって
いる部分にあるf(ωi,ωo;nq)がそれだ。また,BRDFを視覚化してみると下のスラ
イドのような感じになる。

BRDFを視覚化するとこんな感じ。楕円が「その方向に反射する光の強さの分布」である
画像集#007のサムネイル/[CEDEC 2007]最新3D技術論文読みこなしのススメ。2007年注目の「Frequency Domain Normal Map Filtering」とは?

 では,BRDFをスーパーサンプリングするとどうなるのか。それを視覚化したのが次のスライドだ。

BRDFをスーパーサンプリングすると,こんな感じの図が得られる
画像集#008のサムネイル/[CEDEC 2007]最新3D技術論文読みこなしのススメ。2007年注目の「Frequency Domain Normal Map Filtering」とは?

 ハートのような形が見て取れるが,これが「あるピクセルに光が入射したとき,どの方向にどれくらい反射するか」という情報で,それを論文では「Effective BRDF」(※効果つきBRDF,くらいの意味で理解しておくのがよさそうだ)と呼んでいる。Effective BRDFには「ある方向に対して反射する光の量の元の情報が残っている」ことが分かるのではないかと思う。


 少し難しくなってきたので,ちょっと話を戻そう。
 ミップマップテクスチャと法線マップの問題点は,ミップマップに対して(例えば)2×2ピクセルの各法線を平均化した1本の法線を使うことだった。一方,Effective BRDFなら,元となる2×2ピクセルの法線情報が残るため,よりよい結果が得られるわけである。

法線の数をNとして,N分の1で正規化したデータがNDF。スライドにあるように難点はデータサイズが大きいことだが…
画像集#009のサムネイル/[CEDEC 2007]最新3D技術論文読みこなしのススメ。2007年注目の「Frequency Domain Normal Map Filtering」とは?
 もっとも,このままではスーパーサンプリングと計算量は変わらない。「いかにしてEffective BRDFを得るか」がFrequency Domain Normal Map Filteringのキモになる。そこでFrequency Domain Normal Map Filteringでは,「NDF」(Normal Distribution Function)という概念が導入されている。
 NDFというのは,4本の法線があったとしたら,それを4分の1で正規化したデータのこと。このNDFとBRDFを“畳み込んでやる”(=乗算して足し合わせる)と,Effective BRDFが得られる……のだそうだ。

NDFとBRDFを畳み込むと,Effective BRDFが得られるという
画像集#010のサムネイル/[CEDEC 2007]最新3D技術論文読みこなしのススメ。2007年注目の「Frequency Domain Normal Map Filtering」とは?
 ここまでをまとめると,

  1. ミップマップテクスチャの各ピクセルに対してNDFを用意する
  2. 光源とカメラ位置が決まったら,NDFとBRDFをたたみ込んでEffective BRDFを得る
  3. そこからカメラ位置のピクセル色を計算する

という形が「よりよい結果」になるというわけである。

 問題はNDFのサイズが大きいということで,それを解決するために「球面調和関数」を使う。球面調和関数を使うとNDFのサイズがかなり抑えられ,しかもEffective BRDFを求めるのが楽になるオマケまでつくようだが,一方で球面調和関数は近似に過ぎないので,理想の値からは少し外れてしまう。まあ,このあたりになるとかなり難しいので,興味がある人は後述する原論文を参照してほしい。

 「で,実際のところ,どういう効果があるか?」が,会場のスライドでも紹介された,原論文の例で示しておくことにしよう。

左側がスーパーサンプリングを使った正しい画像。ウサギの表面の凹凸がそれとなく再現されていることが分かる。右側が現在一般的な方法を使ったもので,ウサギの表面がのっぺりしてしまっていることが分かると思う。中央がFrequency Domain Normal Map Filteringを使ったもの。スーパーサンプリングに近い結果が得られているのが分かる(出典:Frequency Domain Normal Map Filtering:Charles Han, Bo Sun, Ravi Ramamoorthi, and Eitan Grinspun(Columbia University))
画像集#011のサムネイル/[CEDEC 2007]最新3D技術論文読みこなしのススメ。2007年注目の「Frequency Domain Normal Map Filtering」とは?

 以上,Frequency Domain Normal Map Filteringを紹介したが,言うまでもなく,こうした手法は処理コストとのトレードオフになる。セッションでも触れられていたが,法線の分布が緩やかな(=表面に凹凸がない)オブジェクトや,法線マップの解像度が低いような場合,Frequency Domain Normal Map Filteringの効果はほとんどないそうだ。そういった場合は,演算コストが大きい分だけ損をするわけで,使いどころを誤れば逆効果ではないかと筆者は思う。
 いずれにしても,SIGGRAPH2007ではかなり注目された論文なので,筆者の説明では不満(またはよく分からん)という人は,コロンビア大学のサイトで公開されている原論文をぜひ当たってみてほしい。


●「Frequency Domain」とは
 Frequency Domainについて,少しだけ突っ込んで説明してみたい。ある程度の前提知識が必要になるので,その点はご了承を。

 さて,本文で説明したように,NDF(※NDFという概念についてのスライドを参照してほしい)をキューブマップで保存しようとするとデータサイズが大きくなりすぎ,現実的ではなくなる。そこで,球を使う。ツノ(=法線)が何本か生えたような球を想像してほしい。
 そして,この球を保存するために球面調和関数を使う。球面調和関数というのは,ラプラス方程式の解――解になる関数を調和関数という――を球座標の角度の関数で書いたもので,通常,複素関数になる。球のような形状を実部と虚部という2種類のパラメータで表せるわけだ。

 実部1,虚部1で真球となり,パラメータを増やすほど複雑な形状を表せる。パラメータを無限に取れば,どんな複雑な形状でも表せるようになるが,適当な数に絞っても大ざっぱな形状は保存される。球面調和関数を使えばツノの生えた球をいくつかのパラメータに還元でき,NDFをわずかなサイズに切り詰めることができる,というわけである。

 ところで,パラメータの数を詰めるということは高周波成分を切り捨てる作業に相当する。ラプラス変換とフーリエ変換の関係を知っていれば,おおよそ想像が付くと思われるが,「Frequency Domain」(周波数域)という名称は,このあたりから来ているのだ。
 Frequency Domain Normal Map Filteringにおいて法線データの高周波成分(=急峻な法線の変化)は再現されないのだが,元を正せば法線データの細かな情報が失われることが問題だった。つまり,「NDFを圧縮するときのパラメータの数を絞りすぎると元も子もないことになりかねない」ので,このあたりは押さえておいたほうがよさそうである。

  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
スペシャルコンテンツ
注目記事ランキング
集計:11月28日〜11月29日