2014-03-29 1 views
0

레이 트레이싱에 문제가 있습니다. 저는 구를 만들 수 있지만 ı는 그림자를 줄 수 없습니다. 명령 줄 (cmd)에서이 코드를 컴파일해야합니다. 우리는 어떻게이 3 개의 구체에 그림자를 넣을 수 있습니다.이 코드를 컴파일하면 3 개의 구체와 빛도 볼 수 있습니다. 하지만 아무 그림자가 pls 도움이됩니다. 감사합니다.그림자를 레이 트레이싱 구에 넣을 수있는 방법

+1

진지한가? 여기에 전체 코드를 덤프하고 그것을 읽고 확장 할 것을 기대하십니까? 기본적인 아이디어는 한 지점을 조명하기 전에 다른 교차로 테스트를 추가하는 것입니다. 이 테스트는 적중 위치에서 빛까지의 광선이 대상에 의해 차단되는지 여부를 확인합니다. –

+0

각 픽셀에 대해'seenTri'를'-1'로 설정하면 안됩니까? 또한 'computeColor'는 구 및 삼각형 모두에 사용되지만 함수는 구에 대해서만 작동합니다. – pat

답변

2

장면/광선 교차 논리를 함수로 일반화해야합니다. 그런 다음이 기능을 사용하여 카메라의 광선뿐만 아니라 다른 대상의 교차점을 따라갈 수 있습니다.

카메라 광선이 물체에 닿으면 각 광원에 대한 교차점에서 새 광선을 만들고 광선/장면 교차점을 다시 실행하는 것이 좋습니다. 이 광선들 중 하나가 광원보다 가까운 물체와 교차하면 그 지점에 어떤 에너지도 기여하지 않습니다.

반사 광선을 계산하고 그 색상을 재귀 적으로 결정하여 오브젝트의 표면 특성으로 변조 할 수도 있습니다. 당신은 재귀의 깊이를 제한하여 무한대의 거울에 갇히지 않도록하고 싶을 것입니다.

관련 문제