【コラム】

3Dグラフィックス・マニアックス

15 微細凹凸表現の基本形「法線マップ」(2)

 

15/99

微細凹凸の高低を濃淡で表現したハイトマップから法線マップ

法線マップのデザインツールは、フリーウェアや商業ものの双方で多様な物がリリースされているが、商業アプリケーションではPixologic社の「ZBrsuh」が有名だ。なお、ZBrushでは、多ポリゴンでモデリングした微細凹凸のディテールを、低ポリゴンモデル+法線マップに落とし込んで出力する機能にも対応している。

Pixologic社の「ZBrsuh」による多ポリゴンモデルからの法線マップ生成

あるいは、「白を高い」「黒を低い」と定義し、高さ低さを表現するようなハイトマップ(高さマップ、ディスプレースメントマップと言ったりもする)を用意し、この白黒グレースケールのテクスチャから、法線マップを生成する、という方法もよく活用される。ハイトマップは白黒の濃淡で凹凸を表現できるので、手描きで微細凹凸を制作する際には直観的で分かりやすい。前出のZBrushは、多ポリゴンモデルを低ポリゴン+ハイトマップに変換する機能も持っている。

ハイトマップは微細凹凸の高低そのものを表しているだけなので、法線マップへの変換が必要になる。

これはハイトマップの各テクセルにおける隣接する高低値を求め、横方向と縦方向についての傾きを計算する。各点における法線ベクトルは、そこにおける横方向の傾きと縦方向の傾きの双方に直交するベクトルなので、これを計算してやる。これをハイトマップの全テクセル単位に計算してやって、求めた法線ベクトルをテクスチャに出力してやれば法線マップはできあがる。

このハイトマップから法線マップの変換生成はピクセルシェーダを活用することでリアルタイムに生成することも可能だが、法線マップ自体が動かないことが分かり切っている場合は、あらかじめオフラインで事前に生成しておくこともある。逆にハイトマップを動かし、これをリアルタイムに法線マップへと変換し、アニメーションする微細凹凸を表現する、といったユニークなテクニックも実現可能だ。ちなみに、いずれ本連載でも取りあげることになる「水面のリアルタイムさざ波アニメーション」などの表現は、まさにこのテクニックを利用している。

図2: ハイトマップから法線マップへの変換イメージ

法線マッピングの実際

実際の法線マップを用いたバンプマッピングの流れは図3のようになっている。

図3: こちらで軽く紹介した図を再掲載する。
ピクセルシェーダのお仕事の例--バンプマッピングが完成するまでの概念図。ハイトマップから法線マップへの変換もピクセルシェーダで行うことができる。法線マップは法線ベクトルを格納したテクスチャで、1テクセルあたりに1個のXYZで表される3次元の法線ベクトル値が格納されている(XYだけを格納してZは計算で求めるという手法もあり)

ハイトマップを法線マップに変換し、ピクセルシェーダで、法線マップを参照して法線ベクトルを取り出し、これを用いてピクセル単位のライティングをする。

ここで、1つ注意しなければならないのは、法線マップにおける法線ベクトルは、単にテクスチャという平面の上に構成された微細凹凸面の向きでしかなく、これから貼り付けるポリゴンの向きを全く考慮していないということ。

法線マップはただの2Dテクスチャなので、貼り付けるポリゴンの座標系のことは全く配慮されていない。そう、座標系の統一のための変換処理が必要になるのだ。

図4

最も直観的なのは、法線マップから取りだした法線ベクトルをワールド座標系やローカル座標系にその都度変換する方法だろう。この方法だと、全ピクセルにおいて、取りだした法線ベクトルに対していちいち座標系変換の計算を行う必要があり負荷が高い。

そのため、頂点シェーダの時点で、ピクセルシェーダに受け渡される光源ベクトルや視線ベクトルを、法線マップを適用するポリゴン基準の座標系とテクスチャの座標系がピッタリ合うように変換しておく手法が一般化している。適用する法線マップが固定的な場合は、法線マップ自体を事前にオフラインで3Dモデルのローカル座標系に変換しておく、といった手法も用いられる。このあたりの実践的な方法の違いは3Dゲームエンジンの設計などによって様々だ。(続く)

図5

(トライゼット西川善司)

15/99

インデックス

連載目次
第99回 3D立体視の解体新書 - 立体視という知覚(4)~単眼立体視と両眼立体視の有効範囲の考察
第98回 3D立体視の解体新書 - 立体視という知覚(3)~両眼立体視
第97回 3D立体視の解体新書 - 立体視という知覚(2)~単眼立体視(2)
第96回 3D立体視の解体新書 - 立体視という知覚(1)~単眼立体視(1)
第95回 人工知性でコンテンツを生成するプロシージャル技術(19)
第94回 人工知性でコンテンツを生成するプロシージャル技術(18)
第93回 人工知性でコンテンツを生成するプロシージャル技術(17)
第92回 人工知性でコンテンツを生成するプロシージャル技術(16)
第91回 人工知性でコンテンツを生成するプロシージャル技術(15)
第90回 人工知性でコンテンツを生成するプロシージャル技術(14)
第89回 人工知性でコンテンツを生成するプロシージャル技術(13)
第88回 人工知性でコンテンツを生成するプロシージャル技術(12)
第87回 人工知性でコンテンツを生成するプロシージャル技術(11)
第86回 人工知性でコンテンツを生成するプロシージャル技術(10)
第85回 人工知性でコンテンツを生成するプロシージャル技術(9)
第84回 人工知性でコンテンツを生成するプロシージャル技術(8)
第83回 人工知性でコンテンツを生成するプロシージャル技術(7)
第82回 人工知性でコンテンツを生成するプロシージャル技術(6)
第81回 人工知性でコンテンツを生成するプロシージャル技術(5)
第80回 人工知性でコンテンツを生成するプロシージャル技術(4)
第79回 人工知性でコンテンツを生成するプロシージャル技術(3)
第78回 人工知性でコンテンツを生成するプロシージャル技術(2)
第77回 人工知性でコンテンツを生成するプロシージャル技術(1)
第76回 3Dモデルの変形までが可能な動的PRT(5)~SH Exp演算の大胆な近似による高速化
第75回 3Dモデルの変形までが可能な動的PRT(4)~SH Log演算とSH Log次元における遮蔽の統合
第74回 3Dモデルの変形までが可能な動的PRT(3)~帯域調和関数(Zonal Harmonics)の導入
第73回 3Dモデルの変形までが可能な動的PRT(2)~SH LogとSH Expとは?
第72回 3Dモデルの変形までが可能な動的PRT(1)~3Dモデルの変形に対応した動的PRT技術の台頭
第71回 限定条件付き動的PRT(2)~PSF技法におけるライティング
第70回 限定条件付き動的PRT(1)~動的PRT第一段階PSF技法とは?
第69回 事前計算放射輝度伝搬(PRT)~PRTの基本。静的PRT(4)
第68回 事前計算放射輝度伝搬(PRT)~PRTの基本。静的PRT(3)
第67回 事前計算放射輝度伝搬(PRT)~PRTの基本。静的PRT(2)
第66回 事前計算放射輝度伝搬(PRT)~PRTの基本。静的PRT(1)
第65回 事前計算放射輝度伝搬(PRT)~PRTとは?
第64回 表面下散乱によるスキンシェーダ(8)~表面下散乱とスキンシェーダ(6)
第63回 表面下散乱によるスキンシェーダ(7)~表面下散乱とスキンシェーダ(5)
第62回 表面下散乱によるスキンシェーダ(6)~表面下散乱とスキンシェーダ(4)
第61回 表面下散乱によるスキンシェーダ(5)~表面下散乱とスキンシェーダ(3)
第60回 表面下散乱によるスキンシェーダ(4)~表面下散乱とスキンシェーダ(2)
第59回 表面下散乱によるスキンシェーダ(3)~表面下散乱とスキンシェーダ(1)
第58回 表面下散乱によるスキンシェーダ(2)~ハーフライフ2で採用の疑似ラジオシティライティング(2)
第57回 表面下散乱によるスキンシェーダ(1)~ハーフライフ2で採用の疑似ラジオシティライティング(1)
第56回 水面の表現(5)~大きな波
第55回 水面の表現(4)~水面のライティング(2)
第54回 水面の表現(3)~水面のライティング(1)
第53回 水面の表現(2)~動的なさざ波
第52回 水面の表現(1)~水面表現の歴史
第51回 HDRレンダリング(11)~トーンマッピング
第50回 HDRレンダリング(10)~HDRブルーム/グレア処理
第49回 HDRレンダリング(9)~HDRテクスチャ
第48回 HDRレンダリング(8)~HDRレンダーターゲット
第47回 HDRレンダリング(7)~HDRレンダリングのプロセス
第46回 HDRレンダリング(6)~HDRレンダリングの歴史と動向(2)
第45回 HDRレンダリング(5)~HDRレンダリングの歴史と動向(1)
第44回 HDRレンダリング(4)~HDRレンダリングの第三の効能
第43回 HDRレンダリング(3)~HDRレンダリングの第二の効能
第42回 HDRレンダリング(2)~HDRレンダリングの第一の効能
第41回 HDRレンダリング(1)~HDRレンダリングとは?
第40回 ジオメトリシェーダ(11)~ジオメトリシェーダを活用した新表現(7)
第39回 ジオメトリシェーダ(10)~ジオメトリシェーダを活用した新表現(6)
第38回 ジオメトリシェーダ(9)~ジオメトリシェーダを活用した新表現(5)
第37回 ジオメトリシェーダ(8)~ジオメトリシェーダを活用した新表現(4)
第36回 ジオメトリシェーダ(7)~ジオメトリシェーダを活用した新表現(3)
第35回 ジオメトリシェーダ(6)~ジオメトリシェーダを活用した新表現(2)
第34回 ジオメトリシェーダ(5)~ジオメトリシェーダを活用した新表現(1)
第33回 ジオメトリシェーダ(4)~ジオメトリシェーダのアクセラレーション的活用(4)
第32回 ジオメトリシェーダ(3)~ジオメトリシェーダのアクセラレーション的活用(3)
第31回 ジオメトリシェーダ(2)~ジオメトリシェーダのアクセラレーション的活用(2)
第30回 ジオメトリシェーダ(1)~ジオメトリシェーダのアクセラレーション的活用・ステンシルシャドウボリューム技法の影生成を加速する
第29回 影の生成(10)~改良型デプスシャドウ技法(5)
第28回 影の生成(9)~改良型デプスシャドウ技法(4)
第27回 影の生成(8)~改良型デプスシャドウ技法(3)
第26回 影の生成(7)~改良型デプスシャドウ技法(2)
第25回 影の生成(6)~改良型デプスシャドウ技法(1)
第24回 影の生成(5)~デプスシャドウ技法
第23回 影の生成(4)~ステンシルシャドウボリューム技法(2)
第22回 影の生成(3)~ステンシルシャドウボリューム技法(1)
第21回 影の生成(2)~投射テクスチャマッピング技法
第20回 影の生成(1)~3Dグラフィックスにおける2つのカゲの存在
第19回 バンプマッピングの先にあるもの(3)~セルフシャドウ付き視差遮蔽マッピング
第18回 バンプマッピングの先にあるもの(2)~視差遮蔽マッピング
第17回 バンプマッピングの先にあるもの(1)~視差マッピング
第16回 微細凹凸表現の基本形「法線マップ」(3)
第15回 微細凹凸表現の基本形「法線マップ」(2)
第14回 微細凹凸表現の基本形「法線マップ」(1)
第13回 3Dグラフィックスの概念とレンダリングパイプライン(5)
第12回 3Dグラフィックスの概念とレンダリングパイプライン(4)
第11回 3Dグラフィックスの概念とレンダリングパイプライン(3)
第10回 3Dグラフィックスの概念とレンダリングパイプライン(2)
第9回 3Dグラフィックスの概念とレンダリングパイプライン(1)
第8回 GPUとシェーダ技術の基礎知識(8)
第7回 GPUとシェーダ技術の基礎知識(7)
第6回 GPUとシェーダ技術の基礎知識(6)
第5回 GPUとシェーダ技術の基礎知識(5)
第4回 GPUとシェーダ技術の基礎知識(4)
第3回 GPUとシェーダ技術の基礎知識(3)
第2回 GPUとシェーダ技術の基礎知識(2)
第1回 GPUとシェーダ技術の基礎知識(1)

もっと見る

関連キーワード

人気記事

一覧

新着記事