« 人の掌の上で踊る | トップページ | 友人との何気ない会話という名の情報交換 »

2012年10月23日 (火)ただ使うだけではダメで・・・・。

こんにちは、まだまだ知らないこともたくさん(?)ある、デザイナーのJ.Sです。

3DCGについて少し興味のある方、もしくはゲームのデータが、どう作られているのか、
多少なりともご存知の方なら、ノーマルマップ(法線マップ)テクスチャをご存じだと思います。

念のため、知らない方のために・・・・。

ゲームグラフィックの世界では、使えるポリゴン数は全く多くありません。
よく見る、ハリウッド映画などの特殊撮影効果や、最新の技術を駆使したキャラクターモデリングや、背景のオブジェ、風景描写に比べると、非常に少ないポリゴン数です。
また、実際にゲームを作っていく過程で、沢山のポリゴン数を費やしたモデルを作る時間もありません。少なくとも、我々AGにおいてはそうです。
(もしかすると、何らかの方法で、それらの制限を緩和できるのかもしれませんが・・・・・・。)

そこで、低いメッシュ解像度のポリゴンモデルデータに、細かいディテール(キャラクターの顔のしわ、岩石のひび割れなど)などを与えてるのがノーマルマップテクスチャの役目です。
ノーマルマップテクスチャというのは、とても乱暴な言い方をしてしまうと、それが張られているポリゴンの面が、「どのように・どれくらい凸凹して見えるか?」といった情報が書き込まれているテクスチャです。
作り方はいろいろあります。
いったん大変高いポリゴン数のモデルを作り、それで詳細な凹凸情報を表現し、それをポリゴン数のモデル用の法線情報として抽出するやり方や、テクスチャデータからディテールを表現するための法線情報を作成するやり方まで様々有ります。

いかにも、誰にとっても有用そうなノーマルマップ・・・。

ところが、ついこの前この手法について、単純だけれども思わぬ事を学び、恥ずかしながら奥の深さを感じました。

どういった事かというと・・・。

ある大きさの1本の円柱があります。その円柱には上面と底面がついていて、すべての面にノーマルマップの適用されたマテリアルが適用されています。
ノーマルマップは画像ベースで、NVIDIANormal Map filter をつかって作りました。
出力には、Freeのゲームエンジンとして知られる、UDK(Unreal Development Kit)を使います。
とりあえず、テストという事もあって、真っ白の画像からノーマルマップに変換し適用します。

○作ったノーマルマップテクスチャ
2012_1022_00

○XSi上でのUV展開
2012_1022_02

○Unreal Development Kit上での見た目
2012_1022_01

あれ、....?所々、線が入ってハードエッジの様にになってしまっています。
モデル書き出しのときに、ここだけハードエッジにしたままだったでしょうか?

○XSI上での見た目
2012_1022_05


いいえ違います。この時、この現象の原因はノーマルマップテクスチャにありました。

○修正したノーマルマップテクスチャ
2012_1022_03


○改善されたUDK上での見た目
2012_1022_04

これが修正したノーマルマップです。以前の紫色の画像とは違い、青一色のものになっています。(R G B / 0 0 255)

UDK上でもきれいにつながって見えます。

そもそも、ノーマルマップが「それが張られているポリゴンの面の凸凹情報」をどのようにして表現しているかといえば、
テクスチャとして保存された R G B チャンネルデータの色の階調がポリゴンメッシュの各部分のローカル座標の x y z に対応して表現しています。

そのため、最初の紫色のテクスチャでは R Gに余計な情報が入っていてうまく円筒形のUVがつながって表現できなかったのではないでしょうか?

つまり原因は、
「何も描いていない真っ白の .psdデータを、ノーマルマップ化 =(イコール) デフォルトの平らな面の(円周を囲むような)ノーマルマップとして使える」
・・・と、勝手な思い込みをしていたことでした。

正直なところ、今回の一件でツールを使って何かを作ってみただけで、(たとえばNVIDIANormal Map filterを使って、ノーマルマップを作る)解ったつもりになっていてた自分に気づかされました。
なぜそのツールがそのような表現で、その使われ方をしているのか、知らなければいけない事はたくさんあるということです。ノーマルマップ以外でも、何か他にも有る、解ったつもりになって、全然解っていない落とし穴・・・・。

背景など、オブジェクトを作る身としては、
「本当に理解して使いこなしているかどうか?」
という点が、描画エラーなどが発生したときのスムーズな対処につながると思います。

私は、たった1本の円柱にそんなことを学びました。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2012/10/post-4c87.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

« 人の掌の上で踊る | トップページ | 友人との何気ない会話という名の情報交換 »

CGデザイナー」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: ただ使うだけではダメで・・・・。:

« 人の掌の上で踊る | トップページ | 友人との何気ない会話という名の情報交換 »