読者です 読者をやめる 読者になる 読者になる

SourceChord

C#とXAML好きなプログラマの備忘録。最近はWPF系の話題が中心です。

Zバッファについて追記

http://d.hatena.ne.jp/minami_SC/20070427/1177682467 の続き
この前書いたような方法で視点からのZ値が求められますが,Zバッファの画像として出力するために,その値を0〜255のグレースケール画像に収める必要があります.


このとき求められるZ値は0〜∞(交点までの距離の最大値)の範囲の値を取ります.
なので,この値をどうやって0〜255の範囲に落とし込むか考えてみました.

  • 前方クリッピング面・後方クリッピング面を指定して,前方を0・後方を255となるようにする.
  • 注視点の位置が中心値127をとるようにする.


クリッピング面を指定して0〜255の範囲にする方法の方が制御しやすいと思うのですが,自分のレンダラではクリッピング処理をしていないので,二つ目の方法でやってみました.

レンダラの設定でレンズの焦点距離のパラメータがあるので,その位置での値が127になるように調整しています.
ピントがあっている位置が画像の中での注目している点であろう,ということで,ピントの合っている位置周辺のZ値がなるべく詳細に画像に表現できるようにしました.

左:左の球にピントを合わせた時のZバッファ画像
右:右の球にピントを合わせた時のZバッファ画像