2013-11-14 4 views
0

안녕하세요.이 수평선의 원인은 무엇입니까 ?? 영역 표시등은 녹색 평면 위의 노란색 사각형입니다. 선의 패턴은 평면 위의 영역 조명 거리에 따라 달라 지지만 여전히 수평 선입니다.광선 추적 : 영역 표시등이있는 수평 아티팩트

필자는 영역 광원 (노란 사각형 패치)의 표면에 4 개의 광원을 균일하게 분포 시켰습니다.

모양은 here (16 배 슈퍼 샘플링)입니다.

+0

그림자 여드름 (A.K.A. 잘못된 셀프 섀도 잉)처럼 보입니다. 그림자 광선이 원래의 표면과 교차하지 않도록하려면 어떻게해야합니까? 서페이스 법선을 사용하여 그림자 광선의 원점을 오프셋하거나 교차 된 모양이 광선의 원래 모양과 다른지 검사 할 수 있습니다. – davidnr

답변

1

그림자 여드름처럼 보입니다. 원하지 않는 셀프 섀도우 잉이며 근사 오차로 인해 무늬가 있습니다. 그림자가 완전히 음영 처리 된 부분에는 나타나지 않으므로 음영 처리 시스템이 녹색 평면이 음영에 잘못 있다고 "생각"한다는 문제가 있음을 알 수 있습니다.

편집 : 광선 추적이므로, 방출 된 그림자 광선이 "방출 된"비행기에서 잘못 교차하고있는 것이 문제 일 수 있습니다.


그림자 매핑 먼저 기록, 각각의 빛의 관점에서 깊이 맵을 그리는 방식으로 작동합니다 ... 다음의 제안은 그림자 맵이 아닌 광선 추적과 래스터에 적용,하지만 그들은 여전히 ​​교훈이 될 수있다 섀도 잉 대상의 "섀도우 맵". 그런 다음 실제 이미지를 그릴 때 각 픽셀은 섀도우 맵에서 섀도 잉 깊이를 샘플링하고이를 픽셀 위치의 해당 광에서 계산 된 깊이와 비교합니다. 픽셀 깊이가 섀도우 깊이보다 큰 경우 그림자가 적용됩니다. 개체 그려지는 경우

주 광에 가까운 음영 객체 화소 깊이 음영 깊이와 동일한되어야한다. 그러나 샘플링 및 부동 소수점 계산이 정확하지 않기 때문에 비교는 과 동일합니다. 따라서 샘플링 및 부동 소수점 오류의 변덕을 기반으로 한 시간의 일부인 픽셀 깊이는 동일한 객체로 인해 발생하는 그림자 깊이보다 멀리 있다고 생각합니다. 즉, 객체 자체가 그림자를냅니다.


그림자 여드름을 피하는 데는 여러 가지 방법이 있습니다. 가장 간단한 옵션 (그리고 씬의 확실한 선택)은 섀도우 캐스터 목록에서 오브젝트를 제거하는 것입니다. 귀하의 비행기가 "바닥"으로 의도 된 것처럼 보이기 때문에 어쨌든 그림자를 그어서는 안됩니다. 이것은 다른 그림자 맵에 바닥을 그리는 데 걸리는 시간을 절약 할 수있는 추가적인 이점이 있습니다 ...

동일한 원리로, 물체가 "방수"이고 바깥 쪽을 향한 일직선 삼각형 섀도우 맵에 대한 삼각형 방향 테스트를 취소해야합니다. 이것은 어두운면의 그림자 깊이를 취합니다 (어쨌든 그림자가 그림자처럼 보이기 때문에 그림자가 생깁니다), 밝은면에는 여드름을 유발하지 않습니다.

양면으로 볼 수있는 평면 개체가있는 경우 그림자 깊이에 바이어스를 적용 할 수 있습니다. 그래픽 소프트웨어 및 하드웨어에는 일반적으로 이에 대한 조항이 있습니다. 불행하게도, 이것은 조금 비웃을 수 있습니다 : 바이어스는 샘플링/계산 오류를 감추기에 충분해야하지만 다른 인공물을 발생시키지 않을만큼 작아야합니다.