イベント
[CEDEC 2015]テクスチャの最適品質をソフトで分析? 「グランツーリスモ」のポリフォニー・デジタルが公開した分析ツールの威力とは
それはさておき,このポリフォニー・デジタルが,CEDEC 2015で「フーリエ変換を用いたテクスチャ有効解像度推定とその応用」と題した,かなりユニークな技術セッションを行っていた。
このセッション,ポリフォニー・デジタルが手がけたゲームには直接関係しないのだが,ゲーム開発だけでなく,映像や写真の品質という観点でも興味深い内容であったので,その概要をレポートしたい。セッションを担当したのは,ポリフォニー・デジタルの内村 創氏と,安富健一郎氏である。
内村 創氏(エンジニアチーム エンジニア,ポリフォニー・デジタル) |
安富健一郎氏(テクニカルアーティスト,ポリフォニー・デジタル) |
良いテクスチャと悪いテクスチャをソフトウェアで見分けられるか
ことの発端は,安富氏から内村氏に送られた,「ゲームに使うテクスチャの最適な解像度を,定量的に推し量るツールが欲しい」というショートメッセージだったという。
テクスチャマップは3Dモデルの質感表現に欠かせない要素であるが,では,そこで使う「最適な解像度」をどうやって決めればいいのだろうか。
画面にオブジェクトが描画されたときに,表現したい質感が正しくユーザーに伝わりながら,容量がなるべく小さければ,そのテクスチャは「最適な解像度である」といえよう。逆に,表現される質感に対して無駄に容量が大きいテクスチャは,「最適でない解像度」のテクスチャといえそうだ。
理解を深めるために,内村氏は,ポリフォニーらしい実例を示した。「よいテクスチャ」の事例に挙げられたのは,サーキットコースの路面だ。サンプルは,
次は,下に掲載した「悪いテクスチャ」の例だ。ロゴテクスチャとディテール凹凸陰影生成用の法線マップを,どちらも2048×512テクセルにしたものだが,そもそもロゴテクスチャと法線マップの解像度を一致させる必然性がない。「それぞれを適した解像度に分ければ,テクスチャ容量を節約できる」と内村氏を指摘する。
こうした最適なテクスチャ解像度の判断や決定は,アーティスト達の経験や眼力に頼っている部分が多い。フォトリアルを突き詰めるポリフォニー・デジタルとしては,無駄なく多くのテクスチャ素材を詰め込みたいわけで,テクスチャの最適解像度を定量的に決定したい,という要望が出てきたというわけだ。
そもそも,細かい模様を多く含んだテクスチャの場合,人間の視覚はごまかされやすく,適切な解像度の判断を間違えることもあるという。内村氏が示した下のスライドが,判断の難しい例だ。どちらのテクスチャが最適解像度なのか,分かるだろうか。
じっくりと見れば気がつくが,最適解像度のテクスチャは左側だ。右側は低い解像度の画像に拡大処理をかけたものなので,よく見るとけっこうボケている。
もし,制作時のミスで右のテクスチャが製品版のゲームで使われてしまったら大変だ。低解像度のテクスチャを無意味に高解像度で記録しているのだから,メモリ容量やファイル容量を無駄に使ってしまうことになる。
フーリエ解析法による「1/fライン」理論の発明
では,どうすれば「適性解像度」が分かるのか。
テクスチャに限らず,画像や映像にきめ細かい模様や細かいディテールが含まれている場合,「高周波成分が多い」と表現される。逆に,アニメのような「塗り」と「グラデーション表現主体」の画像や映像は,「高周波成分が少ない」という。つまり,解像度の高低は周波数の高低で示せるはずだ。
「どんな複雑な波形も,正弦波(サイン波)の合成で作り出せる」という理論を,18世紀の科学者であるジョセフ・フーリエが発見した。後に,「フーリエ解析法」として応用されることとなるこの理論は,高次元解析手法の開祖となり,デジタル技術の基本である「ナイキスト定理」(標本化定理)の根幹理論の導出にもつながった。
一方で,複雑な波形を基本となる単位波形に分解していく解析手法に,「フーリエ変換」というものがある。たとえば,音声をフーリエ変換すると,ある瞬間の音波が,周波数ごとの振幅情報に分解できるというものだ。これは,その瞬間にどの周波数成分の音圧が一番高いかを推し量る情報として利用できる。音楽に合わせてバーが上下するスペクトラムアナライザ(は,分かりやすいフーリエ変換の応用事例なのだ。
さて,音声が複雑な一次元波形であるように,画像は二次元波形の集合体と見なせる。画像の周波数分析やヒストグラム化といった手法は,画像解析手段として,さまざまな用途で実用化されているものだ。そこで内村氏も,テクスチャの最適解像度を割り出すために,フーリエ変換を使ってみることにしたのである。
なお,画像のフーリエ変換についてきちんと理解したい人は,OpenCVのサンプルページに,大阪大学大学院生命機能研究科の視覚神経科学研究室が,分かりやすい動画を公開している。以下に掲載しておこう。
話を戻そう。画像をフーリエ変換すると,二次元的なヒストグラムができる。画像解析に使うフーリエ変換後のプロット図は,中央を原点に,原点に近いものほど低周波成分が,遠くなるほど高周波成分が存在することを示す。縦軸は縦波で,横軸は横波。軸からずれるほど回転した波になるイメージであるが,これでは人間が見てもなんだか分からない。
内山氏も,プロット図のままでは,最適な解像度を分析する情報として使うのは厳しいと感じて,エンジニアらしい工夫をすることにした。それは極座標変換だ。
2次元フーリエ変換後のプロットグラフは,中央が原点で,中央に近いほど低周波,遠いほど高周波であるから,原点を円弧の中心点に置いて,角度θと半径rで表す極座標系のグラフであると見なせる。
一方で,我々がよく見るグラフというのは,X軸とY軸の直交する軸上に,X,Yの値で情報をプロットする直交座標系のグラフだ。そこで,見慣れた直交座標で見やすくするために,座標系を極座標系に変換してみてはと,内山氏は考えたわけだ。
実際に変換してみると,同心円状に散らばっていたプロットが,見慣れた直交座標系のグラフっぽい形状に変わった。横軸が周波数(右に行くほど高周波)で,縦軸が振幅(強さ。上に行くほど強い)なので,グラフィックイコライザーの見映えに少し近づいたといえる。
内村氏は,これをさらにヒストグラム風の表現に近づけるため,両軸を対数化し,さらに縦軸を振幅でとっていたものを平均値に置き換えて,プロットし直してみた。ようやく,画像の周波数を見やすいグラフ状で表示することができたわけだ。
さらに内村氏は,こうして作成したアプリケーション「Histogram」を,誰でも使えるようにと無償公開に踏み切った。
Histogramのダウンロードリンク
このツールで,さまざまな写真やテクスチャを分析してみたところ,内村氏はある法則性に気付いたそうだ。
それは,見栄えのいい画像や自然の情景を撮影した写真は,「強度が周波数fに反比例する線上に揃う」ことだ。これは,人間が心地よく感じるといわれる「1/f」(f分の1ゆらぎとも)なのではないかと考えた内村氏は,便宜上これを「1/fライン」と命名する。
この理論の正確性を確かめるために,内村氏はさまざまな実験を続けたという。たとえば,算術ノイズのホワイトノイズは,ツール上では水平に揃った線としてプロットされることが分かった。
また,ある情景を撮影した1024×683ピクセルの写真をツールにかけたところ,普通に1/fラインに揃うのだが,同じ情景でも,手振れでぶれた写真を分析すると,高周波成分が激しく落ち込むという結果が得られたそうだ。
同じ情景を極端に高い感度(高ISO)で撮影して,ノイズまみれな写真だとどうなるか。ノイズを含んだ写真は解像度が高いといえないはずで,実際に分析結果を見ると,高周波が持ち上がって1/fラインからは外れているのが分かる。
このように,さまざまな写真で検証した結果,内村氏は,「1/fラインから逸脱する変化点付近が,その素材における有効解像度の限界といえるのではないか」という仮説を立てたそうだ。
そこで,先ほどの写真をわざと劣化させてみよう。
1024×683ピクセルの写真に対して,半径1ピクセルのガウスブラー(ガウスボカし)を適用する。これは,ピクセル数こそ変わらないが,解像度情報が半分になってしまうボカし効果だ。ボカした写真をツールで分析すると,683に近い2のべき乗値「512」の半分となる「256」あたりで,急に1/fラインから外れてしまうことが分かった。
なお,256や512という数値が出てきたのは,高速離散フーリエ変換は処理の都合上,2のべき乗となる要素数のデータに対して有効となるためだ。
このガウスボカし画像を,縦横半分のピクセル数に縮小してしまっても,見映え的に違いは分からないはずで,ツールによる解析結果もそれを裏付けている。「半径1ピクセルのガウスブラーを適用した画像」と「その画像のピクセル数を縦横半分に縮小した画像」を,内村氏が実際に目で見て確認したが,違いはほとんど分からなかったという。
つまり,「1/fラインから逸脱するところまでが,テクスチャの有効解像度である」という仮説は正しいようである。
1/fラインが暴く,カメラの本質的な解像度
内村氏に続いて登壇したのは,ツール開発の切っ掛けを作った,テクニカルアーティストの安富健一郎氏だ。安富氏からは,このツールの使い方とその経験談が語られた。
ツールで分析した結果から導き出される傾向は,以下のように要約されるわけだが,安富氏はこのツールを使って実験を繰り返していくうちに,アーティストらしい視点で見たときの特徴に気付いたという。
安富氏が「よく撮れているな」と思っていた写真をこのツールで分析してみると,予想外に高周波が落ち込んでいることがあったという。
その原因は複合的なもので,たとえば,微妙に手ぶれを起こしていたり,カメラの経年劣化でオートフォーカスの精度が鈍っていたりと,理由は様々なのだった。また,同じカメラで撮影した写真には,すべて似たような傾向が出ることも気づいたという。
このように,カメラの機種ごとに出る「ある決まった周波数以上の落ち込み」は,どうやらカメラが持つ「ローパスフィルタ」の特性であるようだ。
一般的なデジタルカメラが使う撮像素子の場合,受光画素は白黒しか感じられない。受光画素にRGB(赤緑青)のカラーフィルタを組み合わせることで,カラー撮影を可能にしている。撮影された写真の各画素は,基本的には隣接したRGBの単色画素から,算術合成して作られているわけだ。
空間的に離散しているRGB単色画素を,直接処理してフルカラーの画素を合成しようとすると,本来は存在しない偽色が出てしまうことがある。また,撮影対象に周期的な模様があり,模様の周期が撮像素子上の画素が並ぶ間隔の周期と近かったり一致したりすると,それがモアレ模様として撮影画像上に浮かび上がることもあるなど,単純に合成すればいいというものではない。
特定の高周波数以上に生じるカメラの機種に応じた落ち込みは,ローパスフィルタの影響が強そうだというのが,安富氏の読みなのだ。
最近ではローパスフィルタレスカメラも出てきているが,安富氏がこのツールで分析してみた限りでは,どの機種もまだまだどれも発展途上という感触だったとのこと。
「カメラが持つオリジナル解像度こそが最高画質である」と考える人は多いが,このツールを使っていくうちに,「オリジナル解像度はそれほど重要ではない」と,安富氏は考えを改めるようになったそうだ。
テクスチャの反復パターンを暴く
そのほかにも,このツールを使って分かったことに,テクスチャの反復パターンが持つ特徴もあるという。
たとえば,煉瓦の壁は,その積み重ねが反復パターンを作っていることもあって,ある程度の反復パターンが検出される。反復パターンの存在は,ツールで出力されるプロットラインに,定期的な立ち上がりとして現れるそうだ。
こうしたプロットラインに見える特徴は,同じテクスチャを繰り返し適用した場合にも見られるので,同じくテクスチャを広範囲にコピー&ペーストしているような手抜き具合が,このツールで分かるというわけである。
ちなみに,煉瓦模様自体をテクスチャとして,さらに複数回リピートさせた上でツールにかけると,プロットラインで低周波が抜けるという分かりやすい傾向が検出されるそうだ。
ほかにも,細かいディテールを含んだテクスチャでは,最初から1/fラインに揃わない場合もあるという。たとえば,下のスライドにある砂利模様がそうで,これは低周波成分と高周波成分で,それぞれ異なるラインがある例外的な事例であるそうだ。
検証ツールを使って,テクスチャの品質を向上させよう
最後に安富氏は,MIP-MAPテクスチャ制作に,このツールを使うときのノウハウを説明した。
MIP-MAPを作る縮小法はいくつもあるが,「ニアレストネイバー法」による縮小で作ったMIP-MAPは,お話にならないほど,元のテクスチャからずれてしまうそうだ。
一方,「バイリニア法」による縮小は,おおむね良好だが,縮小を進めていくに連れて色味が薄くなる傾向が強まるため,ツールで出力されるプロットラインでは,縮小を重ねたテクスチャほど下に下がる傾向が見てとれる。
「バイキュービック法」による縮小は,縮小されたテクスチャにおける最高周波数成分が,やや落ち込む傾向があるそうで,安富氏はここが問題と指摘していた。
そこで,安富氏は,バイリニア法とバイキュービック法のいいとこ取りをするために,目標とするMIP-MAPテクスチャの前段階までをバイキュービック法で縮小し,目標のMIP-MAPテクスチャは,バイキュービック法で縮小したものをバイリニア法で縮小することで得るという,変速2段縮小がお勧めであると述べていた。
テーマが分かりやすくイメージしやすい「テクスチャの話題」ということと,ただ「ツールを作りました」という話だけでなく,そのツールが公開されたこともあってか,セッション終了後もCEDEC会場のあちこちで,このセッションについて会話している人が見られた。
このツールはテクスチャの有効解像度を分析するだけでなく,写真の品質を分析するにも使えそうなので,ゲーム開発者以外の人も試してみるとよさそうだ。
CEDEC 2015 公式Webサイト
- この記事のURL: