2013-07-16 5 views
1

Comparison레이 나는 왼쪽 것과 비슷한 이미지를 렌더링하는 노력과 그림자 + ​​반사에 문제가 있습니다

http://pastebin.com/vkTJt0sT

추적 그림자 버그.

지금은 문제를 표시하기 위해 섀도우 코드 만 열려 있습니다.

빨간 공은 녹색 근처에 그림자가 있어야하지만 픽셀은 이상한 이유로 엉망이됩니다. 코드의 그림자 부분을 닫으면 빨간 공이 그림자없이 정상적으로 렌더링됩니다.

이 문제의 근본 원인은 반사에 영향을 미친다고 생각합니다. 당신이 내게 몇 가지 조언을 줄 수 있기를 바랍니다. 나는 그것을 잃고있다.

+1

외부 사이트에 링크하는 대신 일반적으로 코드를 직접 게시물에 포함해야합니다 (가능한 경우 작은 것으로 자릅니다). – Ryan

+0

실제로 자기 그림자가 아닌지 확인하십시오. 나는 전에 비슷한 것을 썼고 광선은 그것이 떠난 표면과 교차하고 있었고, 나는 교차점을 나가는 광선의 방향으로 (표면으로부터 멀리) 움직여 고정시켰다. – Borgleader

+0

couldnt은 코드를 게시하여 내부적으로 연결하기 때문에 :/ – Esqarrouth

답변

4

왼쪽 이미지가 인 것을 감안할 때, 이것이 반영된 그림자 광선의 고전적인 경우입니다. 섀도우 레이를 테스트 할 때 레이를 생성 한 표면을 제외해야합니다. 그림자 객체에 소스 객체를 전달하고 무시하십시오.

이 방법은 볼록한 모양에만 적용됩니다. 셀프 섀도우 (예 : 토러스)를 사용하는 셰이프를 사용하는 경우 더 일반적이어야합니다. 일반적인 접근법은 엡실론 (부동 소수점 오류 허용 오차)을 정의하고 그보다 더 가까운 교차점을 무시하는 것입니다.

다른 접근법은 어느 쪽 표면에 을 감지하는 것입니다. 광선이 표면 법선 (즉, 인출 광선의 광선과 표면 법선의 양이 양수인 경우)과 동일한 일반 방향으로 캐스팅되기 때문에 구면에서 그림자가 없어야합니다. 그림자.

0

는 해결 : 설명하기 쉽지 않다 알고리즘 문제가 발생했습니다

또 다른 방법은 다음과 같습니다 코사인 각도가보다 큰 0.0001 인 경우이 내가 돈 다음 큰 경우 Basicly 내가, 확인을 그림자를 사용하지 마십시오