バンプマップについて
がいよう
さて、ここ数日公式サイトでおちゃっこ神その他諸々の人体実験が行われ、バンプマップが正式にサポートされた。これによりモデルの表現の幅が広がった。
ここではバンプマップの理論や弊害などを軽くなぞった後、実際にどんな感じになるのか2~3簡単なモデルを作って表示してみることにする。
勘のいい諸兄達ならばすぐに感じたと思うが、この記事は桜橘御大がバンプマップを使いたくなった時に備えてあらかじめ作成しておくものである。従って、お前達の役に立つかどうかはわからん!
バンプマップとはなんぞ
一言で言い表すと
面にデコボコがついたかのように、テクスチャに陰影を持たせる技術の事
りろんというか
かいつまんで適当に説明しているが、理論抜きに実践だけできればいいという場合は読み飛ばしたほうがいい。
さて、物体に光が当たり、反射してきた光を感知することで、人間は物体を見ることが出来る。この反射してくる光は、物体の形によって、様々な方向へ反射する。
鏡を傾ければ太陽光を任意の場所に移すことが出来るが、それと同じで、物体の角度によって光の反射角が決まる。バンプマップとは、面に光がどのように反射するかの情報を別に持たせることで、擬似的に陰影を作り出す技術のことである。
使用例
1まいの板ポリゴンにバンプを適用した例を表示しておく。このポリゴンは、頂点数4のタダの正方形で、テクスチャもpixiaで5秒ほどで作成したものだ。
単純な板ポリに、ミミズ腫れのように出っ張りが出ているように見える。一見テクスチャがそうなっているように見えるが、光の反射角という概念を持っているため、カメラや光源の位置が変わればそれに合わせてきちんと動く。遠目に見ている分にはホントウにそこが出っ張っているかのようだ。
利点と欠点
最大の利点として、複雑な形状を少ないポリ数で表現することが出来る。ごつごつザラザラした岩石などを表現する際、適当に削ったモデルにバンプマップを使ってやるだけで随分見栄えが変わる。テクスチャをモリモリ書かずとも、光源の位置関係などをきちんと反映したモデルを表現できる。ウィキペディアでバンプマップを検索すると顕著な例が見れる。
逆に欠点としては、単純なテクスチャマッピングより多少処理が重いという事だ。また、ピクセルシェーダ2.0が入っていない環境では、バンプマップは表示されないものと思われる。
大抵のビデオカードではもう問題ないはずだが、チョイ古めのPCではE3Dのバンプマップが機能しない可能性があるという点も頭に入れておこう。
もう一つ、これは表現的な限界だが、実際に出っ張っているわけではない。
あたかもそこにでっぱりがあるかのように光を反射させているだけなので、近寄ったり横から見たりすると実際に出っ張っていないことがわかる。
段階的学習でバンプマップ適用モデルを作ってみる
予備知識
- バンプマッピングを適用させる面には、テクスチャが張られていなければならない。-デコボコしているように見せかけるだけなので、近くで横から見たりするとばれる。
バンプマップの作り方
E3Dで使うバンプマップは、黒と白で構成された(グレースケールという)画像ファイルから、バンプマップのためのファイルを生成してそれをオブジェクトのマテリアルに指定することで使用する。手順を簡潔にまとめると
- バンプマップの元となるファイルを作る
- RokDeBone2に搭載された変換機能で、バンプマップファイルを作成する
- 任意のオブジェクトのマテリアルに、バンプマップファイルを適用する
となる。ややこしいが、適当に1から見ていこう。
グレースケール画像を作る
バンプマップファイルの元となるファイルを作成する。作り方は単純で、低く見せたい部分を黒く、高く見せたい部分を白く塗ればいい。
このような3色のテクスチャに対して、右のようなグレースケールファイルを用意すると、2が高く、1と3が低いようになる。グレースケールというくらいなので
のようにぼかすことが出来る。この場合、その濃度に応じた高さの割合になり、崖ではなくなだらかな丘のようなものが出来上がる。
RokDeBone2で変換する
あらかじめ、さっきの3色をはっつけた板ポリゴンを準備しておいた。これをRokDeBone2に読み込んでおく。
今回は、コイツをバンプマップとして指定してみよう。出来上がりは頭の中で想像できただろうか。真ん中が白いので、真ん中が出っ張った感じになるはずだ。
RokDeBone2のメニューから、法線マップを選択する。
すると変換メニューが開くので、元となる白黒画像と、バンプマップの保存先を選択する。この時注意する点は、拡張子をきちんとつけること。
高さパラメータは、白と黒の高低差をどの程度のモノにするかという設定だ。増やせば増やすほど、白かった点は黒い点より高いという風に扱われるが、あまり大きい数値を設定すると表示が破綻してしまう可能性があるので、適当に設定しておこう。
バンプマップを適用させる
これによって出力されたバンプマップを、面マテリアルの設定で適用してやったものがこれ。
真ん中がぽっこり盛り上がっているように見える。