質問: タイトルの通り,3Dオブジェクトに対して,2次元の画像を投影する形でテクスチャマッピングをしたいです.そしてその投影する光源位置は視点を常に同じであるようにしたいです. つまり視点を移動させるとそれに即して光源位置も移動させたいです.(常に目がプロジェクタになっているようなイメージです.) こちらのソースコードを参考にさせていただき,画像を投影することはすぐにできました. 視点も元々移動できました. ただ,その視点移動に応じて光源位置を変更する方法が分かりません. どなたか教えていただけないでしょうか? 一般的なことでもいいので,ヒントが欲しいです.
回答: 物体を回転させる変換行列をシャドウマップの変換行列にも乗じていただければ、ご期待の動作になるかと思います。 具体的には、 ``` // シャドウマッピング用の変換行列 const GgMatrix ms(ggPerspective(window.getZoom() * 0.01f + 0.3f, aspect, 3.2f, 6.8f) * mv); ``` の部分を ``` // シャドウマッピング用の変換行列 const GgMatrix ms(ggPerspective(window.getZoom() * 0.01f + 0.3f, aspect, 3.2f, 6.8f) * mv * window.getLtb()); ``` のように変更します。 ただ、このように常に視点側から投影する場合には裏側を見ることはありませんので、シャドウマッピングを用いなくても問題ないかもしれません (視点マッピング)。 ご質問から時間が経っておりますので、遅きに失しておりましたらお許しください。