background

シャドウマップ・その原理。

2006年09月07日(Thu)

シャドウマップを使用してレンダリングを開始すると、
Poserは画面の描画を始める前にライトごとの影の計算を始める。
この時Poserの中の人が何をしているのか、実際にその計算の手順を追っていこう。
ちなみに今回の図そのものはShadeで疑似的に表現したものなので、
多少の誤差があることをあらかじめお断りしておく。
 
このような形状がある場合を考える。簡単のために光源は一つであるとする。
さらに(めんどくさいので)透明な物質のことは考えないようにする。
 
120-1

まず最初に、光源からの視点でシーン全体をレンダリングし、Z値を求める。
するとZバッファの中はこんな風になる。
 
120-2

次にこのZバッファの値を、光源からの視点ですべてのオブジェクトにマッピングする。
ちょっとわかりにくいが、Zバッファの内容をテクスチャとして、
ライトカメラからのカメラ投影を用いてシーン全体をUVマッピングする……という感じだ。
単純にZバッファのグレースケール画像をそのまま貼り付ける、と考えたらいいかもしれない。
 
そして今度は実際にレンダリングするときのカメラ視点からシーンをレンダリングする。
レンダリングといっても、ライトによるシェーディング(陰付け)は行わず、
マッピングされた値をそのまま描画するだけだ。
 
120-3

 
さらに、もう一度カメラの視点からレンダリングをする。今度描画するのは
マッピングされた画像でも通常の表面材質でもなく、
光源からの距離そのものをグレースケール化したものだ。
 
120-4

そして求めた二つの画像を比較してその差を求める。するとこんなふうになる。
 
120-5

白い部分、つまり差が出ている部分は光源から見たZ値と実際の距離が異なるところ、
言い換えれば光源から遮られて影になっている部分だ。
したがってこれを反転すれば影の画像が求められる。
これを最初の影無しレンダ画像に乗算することで、影有りレンダの結果が得られる。
ライトが複数ある場合は、この処理をライトの分だけ繰り返し、
ライトごとに影有りレンダの結果を求めてから最後に加算する。
 
120-6

ちなみにこちらがShadeで実際にシャドウマップを使ってレンダリングしたもの。
まあちょっとズレているわけだけども(マッピングの精度がね……)。
 
120-7

このようにシャドウマップとは、光源の視点からの奥行き(Z深度)を求め、
それをマッピングすることで影になっている部分を求める手法である。
 
これに対しレイトレースシャドウでは、視点から発せられた光線(レイ)がなんらかの
オブジェクトに衝突した時に、その地点から光源を探してその間の障害物の有無を調べる。
障害物があればその地点は影になるというわけだ。
 
シャドウマップの利点は、なにより処理が高速で簡単なことだ。
1ピクセルずつその部分が影になっているかどうかを調べなくても、
ぱぱっとレンダリングして一括してZバッファを抽出すればいいのだから、手軽である。
また、最初に得た画像にぼかしフィルタをかければ、ソフトシャドウも簡単に実現できる。
レイトレースシャドウで影をぼかそうと思ったら、
サンプリングを増やしたりとにかく時間のかかる処理をしなくてはならない。
 
このような利点のあるシャドウマップだが、もちろん良いことばかりではない。
というわけで次はシャドウマップの抱える欠点と、それを軽減する方法について。
 

 
忘れていたので宣伝。
自サイトでJames/Koji/M3用の下駄を配布しています。
http://www001.upp.so-net.ne.jp/ruten-ryojo/poser/download.html
 
ついでにおまけネタを自分ちのブログにUP。
http://rutenshikai.blog63.fc2.com/blog-entry-145.html
 
や、こちらが真面目なTipsに偏ってるのもので……。
 
120-8

 
■頂いたコメント■


コメント:(MAKIRI)
1週間ぶりにのぞいてみたらば…おお!
なんとシャドウマップの解説がっ!
いやいや、本当に分かりやすい。と同時に本家のコミックも拝見させていただきましたw
そこはかとなく青池保子女史のエロイカシリーズを彷彿させるような、そんな雰囲気を感じました(的外れだったら済みません)。
今後ちょくちょく拝見させていただきます~m(_ _)m

コメント:(duha)
前回といい今回といい、理論編もとても面白いです。中の人はこんなことをしていたんですね。「影の計算中」って何度も考え込んでるのはこういう訳だったんだと納得しました。次回も楽しみです。
ところで、読んでる側はネタが無くても十分楽しいんですけど、書く側としてはネタがないと物足りなくなるものなのでしょうか(笑)?

コメント:(linkinpark)
まさしくPOSERでもCARRARAでもレイトレースの影に癖があって扱いにくいのでシャドウマップばかりつかっています、こいったことは3Dの基礎的な事なのでしょうがここまで明確に説明されているのははじめてです、とてもタメになります。でもシャドウマップの問題点もあるんですねー次回の講義も楽しみに待っています。

コメント:(sannzi)
今日も有難うございます。
本日ののは私には理解するのがハードな物がありました。
でも急須の部分ではなくて床の白い部分だけ考えたら多少理解が楽になりました。
急須本体は陰と影が複合して自然な陰影が付くんですね。
此処で取り残されては後が大変と思い一生懸命考えました。
多分理解できたと思います。
あ、下駄は先日むっつりいただきしておりました、いまさらながら有難うございました。
あの、私も青池保子さんのキャラを感じておりました。
あのユーティさん、特に好きなキャラだったりしてます(^^

コメント:(Kyotaro)
>MAKIRIさん
お帰りなさいませ(^^
ライティングTipsもなんだか佳境に差し掛かっている模様です(他人事みたいに)。
青池保子さんの作品は読んだ事がなくて、タイトルと絵を知っているだけなのですが、相通ずるものがあるのかも知れませんね~。いい歳した野郎たちがドタバタしてるあたり……(いや、的外れだったらすみません(^^;)
またいらして下さいね~
 
>duhaさん
普段は意識しないものですが、中の人の仕事っぷりもなかなか新鮮ではないでしょうか。何度も「影の計算中」と出ても、その分だけライトがあるからということで勘弁してあげてください(笑)
ネタはですねー、定期的に挟んでおかないと、Kyotaroは真面目なヤツなんだと誤解される可能性が……(ないない)。まあ、こんな性格なもので(爆)。
 
>linkinparkさん
レイトレースの影は時間がかかりますし、思うような品質が出ない時もあったりして確かに扱いにくいですね。シャドウマップの原理自体はあまり意識する必要はないと思いますが、これがあると設定の意味がわかりやすくなるのではないかと。
というわけで次回は設定のあたりを書いていきたいと思います。
 
>sannziさん
原理の細かい部分は、まあそんなものなんだと思っていただけたら充分だと思います(^^;
急須に落ちる影のように、自分自身に落ちる影のことをセルフシャドウと呼ぶそうですが、これを手軽に描画できるのもシャドウマップの利点ということです。
おや、むっつり頂かれておりましたか。まいどありがとうございます。
sannziさんもエロイカシリーズをご覧になったことがおありですか。
ユーティはテクスチャのベースがKen1さんのPGM3RR02なので、図らずもDNAを受け継いでいるのやも知れません(いや、やっぱり眉上一直線の髪形か…)

コメント:(pines)
Poser君ががんばってることが、よーく分かりました。
で、どうやってがんばってるかというと・・・何となく分かったような・・・
 
次も楽しみにしてます。

コメント:(Kyotaro)
>pinesさん
頑張り屋さんなんですけどねー、頑張る方向がときどき的外れになるのが辛いところです(笑)
まあ理屈的なところは、あまり突き詰めなくてもいいんじゃないかと思います。
次回の内容の方が肝心なんですけど……上手くまとまるかな~(汗)




Menu

Profile

Kyotaro

確定名:Kyotaro
ネタを探しているらしい。

Categories

Calendar

07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -

Comments

Archives

Track back

RSS feed

Links

Search

※2011年4月6日のサーバ障害の為、エントリのアドレスが以前のものからズレています。当Blogのエントリにリンクを張っておられた方は、お手数ですがアドレスのご確認をお願い致します。

※Internet Explorer非推奨。