点光源を並行光源としてつかう

本日考えたこと

  • 点光源を並行光源として使う場合、最終的にどのようなベクトルになっているのか想像すること
  • スペキュラのシャイネスが高すぎると逆に効果が低く感じる
  • 法線マップから法線を取り出す時には正規化が必要かも
  • ベクトルを変換する時の行列を確認すること

少しだけ補足


『点光源を並行光源として使う場合、最終的にどのようなベクトルになっているのか想像すること』

ブリンフォンをやっていて、思ったようにスペキュラが出ないなぁ...なんて考えて悩んでたんだけど、よくよく光源の位置を確認してみたら真上からの平行光源になるようなライトを設定していた.


『スペキュラのシャイネスが高すぎると逆に効果が低く感じる』

スペキュラの項だけ書くと

S = (N•H)^s

ので、ハーフベクトルが法線に近くなる時にしかスペキュラが出にくくなっていく.

H = normalize(V + L)
V ... 視線
L ... ライトへのベクトル

なので、とうぜん光の入射と視線の入射が同程度の角度になる時が強くスペキュラが表れる.

...頭ではわかってるつもりなんだけど、かなりの時間ハマってしまった...

光を真上から当てて、視線の入射が浅い場合ってのはハーフベクトルは、当然のごとく傾いてるわな...

結果、データが悪かったんだけども、中途半端にスペキュラが見えたからプログラムは正しいって確信にたどり着くのが遅れた


『法線マップから法線を取り出す時には正規化が必要かも』

正規化しなくても良いんじゃね?
でも、正規化するとバンプマップのギラギラした感じが無くなったので、データに、対しての処置としては正しかったと思う.

サンプラにnearestとか設定してるとジャギ(?)が、目立つのか?
逆にlinerを設定すると単位長に復元出来ないのか?

もう少し考えておく必要がありそう


『ベクトルを変換する時の行列を確認すること』

指定する行列を間違えたのは、単なるポカ.
でも、vsでスキニングをする場合、ライトベクトル/視線ベクトルをローカル変換する時はどうすれば良いんだ?

ウェイトをどう取り扱えば良いのか理解が足りない


...ふむ、それなりに課題の多い一日だった