2012年

8月

31日

法線マッピングをやってみた

2ヶ月ぶり・・・かな?本当に久しぶりの更新です。

今回は、聞いたことはあるけど使ったことのなかった技術『法線マップ』をやってみました。

法線マッピングとは?

3次元コンピュータグラフィックスにおけるバンプマッピング的技法の一種wiki参照

 

テクスチャで擬似的に面のデコボコを表現させる技法。 

法線マップと呼ばれるテクスチャにモデルの頂点法線をピクセル単位で持たせ、シェーダ内で頂点UVを使ってテクスチャから法線データを取り出し、光源計算して陰影をつける。

 

こんな感じ。

シェーダを使っている人なら実装は難しくないでしょう。とても簡単な技術です。

 

これを使う利点は、ローポリゴンメッシュをハイポリゴンメッシュのように表現させることが可能だということです。

 

例えば武器モデルを作成していて装飾に細かい凹凸を作りたい場合、ポリゴン化すると頂点・面データが大幅に増えてしまいます。このような時にこの技法が役立ちます。

 

この技法を使えば、1枚のポリゴンに細かな凹凸を擬似的に表現することが可能です。

実装する上でまず法線マップテクスチャがいるので、作成する必要があります。Blenderでも作れるらしいですけど、手持ちにあるGTA4モデルデータにデフォルトで法線マップが備わっているようなので、今回は見送りました。

 

せっかくのGTAモデルなので、GTAViewerも色々改良しながら法線マップを取り入れて以下のようになりました。

 

カラーテクスチャON 法線マップOFF

 

カラーテクスチャOFF 法線マップOFF

 

カラーテクスチャOFF 法線マップON

面の接ベクトルの計算式に問題があり、不完全なものですがそれっぽく見えると思います。

 

DirectXだとメッシュの頂点に接ベクトル情報を持たせることも可能なのですが、それをやるとソフトの仕様を大幅に変更しなければならないのでシェーダ内で計算させるようにしてみました。

ちなみに、この武器モデルのカラーマップと法線マップはこのようになっています。

久しぶりのブログ更新でした。頻繁に更新できればいいんですけど、あまりネタもなく・・・

まぁこれからもボチボチと続けていく予定です。

コメントをお書きください

コメント: 1
  • #1

    名無し (月曜日, 03 9月 2012 11:06)

    自分はプログラマ目指してるんですが
    このブログはいつも参考にさせてもらってます

    これからもゆっくりでいいので更新してくださると助かります