長い廊下の壁面をどのように飾るか

今のところBumpmapを適当に設定したテクスチャを使った壁がずっと続いているだけ。
これだけでも悪くはない。後で柱や梁を作り足していけばなかなか独特な雰囲気になると思う。
しかし広い場所なだけに、それだけでは物足りないだろう。いろいろ小物を置きたくなるに違いない。
で、この壁面に Parallax mapping を施したらどうなるかな、と、もちろんまだ使えない機能ではあるが、想像してみた。一度に広範囲が視野に入るので、ポリゴンを増やさずに装飾ができるというのはなかなか魅力のある技術だ。


しかし、是非そういう技術にでしゃばってもらいたい場面であるにもかかわらず、ほとんど役に立たないことに、一瞬で気がつく。
HL2では、その気になれば使えるのに使われていない。マテリアルには Parallax map 用のテクスチャを指定したもののコメントアウトされ使用が中止されているものが残っていたりもする。
この件については聞くまでもないが、どんな判断が働いてどんな仕様変更や調整を行ったのかがわかるようになっていたら余計な手間が省けていいのに。
"Valve Blog"
だめか。


去年のSIGGRAPHで、ATiのプレゼンで使われた資料を見つけた。こういう技術ネタのプレゼンを女の人がやったとは、意外。
Parallax mapping 以前に Horison mapping というのが既にあったのだそうだ。しかしこれは緩やかな凹凸を作ることを念頭においていたようで、HL2で使われている技術でいうとDisplacement的な見た目になる。これでは案外使い道がない。
その後 Parallax、Relief と続くが、Relief mapping については新しすぎたのか名前以外言及なし。
読んでいくと、Parallax mapping を提唱したのはKanekoとなっている。株式会社国際電気通信基礎技術研究所というところの金子氏率いるグループが2001年に発表した論文の事を指しているようだ。
今回実際に使えるかどうかこの素人が考えてみただけで"ダメだこりゃ"という結論に瞬時に達した。ATiの資料の中でもいくつか理由となる問題が挙げられている。
まず何よりも激しく論外なのは、浅い角度から見たらやっぱり平面、ということだ。長い廊下の壁ってのは非常に浅い角度から見ることのほうが圧倒的に多いわけで、意味がない。
第二に、ものすごく出っ張って見えてもそのテクスチャが張られているポリゴンは面なのであって、物を投げつけた時の違和感はかなりひどいはず。
さらに、天井がアーチ状になっているのだが、曲面(ぽく並んだ一連の平面)に適用したとき、"厚み"があるそのテクスチャはどのように表現されるんだろうか。例えば球体に Parallax map を適用したら、面と面の境目に切り口が開いて見えるようなことになるんじゃないか。アーチのようにへこんだところに適用すると、突起部が重なってしまうだろう。思い返してみると、Parallax mapping のテクノロジーショーケースは、すべて適用面が平面だった。この件についてはATiの資料でも触れられているのだが、後のほうに出てくるモデルでは綺麗に仕上がっている。どういうことだろう。
もう一つ、Parallaxで凹凸を表現した部分には今現在Bumpmapで実現しているような表面の質感が加えられないのではないだろうか。そこまで盛り込もうとするとHRDIとか必要になりそう。


Sourceエンジンで使用する場合にはさらにいくつか問題がある。
全体的にSourceエンジンでは影がぼんやりしたものになる。思いっきりくっきりさせても、影の輪郭が少しぼやけている。そんな中に Parallax map のくっきりと濃い影が出ていたらものすごく不自然じゃなかろうか。
それと、Parallax map が施された面のうえに別の影が落ちた場合どうなるのか。今の段階でもstaticな影の中にdynamicな影が落ちたときの表現はひどい。


Relief mapping ならこんな感じに丸いものにも使えるとの事。


まともな形で実用化されるのは相当先だろうな。おまけに今の段階ですら実装済みの機能をうまく使っている人は多いとはいえないし。