2009-12-11 2 views
0

6 개의 스팟 라이트를 렌더링하여 섀도우 매핑 알고리즘을위한 포인트 라이트를 생성하려고합니다.6 개의 스포트 라이트를 사용하여 점 광원을 렌더링 하시겠습니까?

alt text

을 : 나는이 권리를하고있어 경우

내보기 및 프로젝션 행렬을 설정할 때 내가 어느 정도의 지침 here을 따라했지만 최종 결과는 다음과 같다, 잘 모르겠어요

흰색 영역은 6 개의 쉐도우 맵 중 하나에 의해 덮여있는 부분이며, 어두운 영역은 섀도우 맵에 포함되지 않는 영역입니다. 분명히 나는 ​​찻 주전자와 상자에 그림자를 투사하는 데 문제가 없지만 6 개의 쉐도우 맵에 맹점이 있다는 것을 알 수 있듯이. 큐브 형 섀도우 맵이 어떻게 보이겠습니까? 그것은 점 광원의 그림자 맵처럼 보이지 않습니다 ...

답변

2

실제로 6 개의 반점을 조절하여 큐브의 각면을 완벽하게 채울 수 있습니다. 각 원뿔의 구경을 설정하여 각 큐브면 주위에 외접하는 원을 만들면됩니다. 이 경우 겹치기에 대해 걱정할 필요가 없습니다. 이 겹치면 부분이 얼굴 영역 밖에 있습니다.

조명의 '투영 행렬'FOV를 조정하면 밝은 원뿔을 포함하는 뷰 frustum은 없지만 원추는 뷰 frustum을 포함합니다.

전체 구현은 see this paper입니다.

2

여기서 볼 수있는 것은 원과 두 쌍곡선 - 원뿔형 섹션 - 정확히 두 번 끝내면 얻을 수있는 결과입니다. 원추형으로 그것을 비행기와 교차 시켰습니다.

이 수학은 상황에서 제거 된 것으로 보일 수 있지만 문제를 설명합니다. 스포트라이트가 빛의 원뿔을 만들고, 동일한 지점에서 오는 원뿔의 무리로 완전히 단색 공간을 채울 수는 없습니다. (나는 여러 장의 종이를 구르고 그 점들을 모아서 시험해 보도록 권합니다.)

그러나 시뮬레이션 된 점 소스의 원점에서 멀리 떨어지면 원뿔이 수렴합니다 그들의 assymptotes에, 그리고 빛에는 극히 좁은 간격이있다.

해결 방법 중 하나는 원뿔의 초점을 약간 겹치게 변경하는 것입니다. 이렇게하면 과다 노출되는 영역이 만들어 지지만 멀리 지나갈수록 과다 노출이 명확 해집니다. 모든 물체가 점 광원 근처에있는 한, 이것은별로 문제가되지 않을 수도 있습니다.

또 다른 옵션은 모든 광원의 초점을 광원에 가깝게 이동하는 것입니다. 이렇게하면, 그들은 더 빨리 assymptote에 수렴 할 수 있습니다.

관련 문제