2012-03-28 3 views
5

현재 Kevin Beason (smallpt : http://www.kevinbeason.com/smallpt/)이 개발 한 광선 추적 장치를 이해하려고하는데 코드를 올바르게 이해하면 무작위로 반사 또는 굴절을 선택합니다 광선 (표면이 반사적이고 굴절 인 경우).광선 추적 : 반사 및 굴절 광선 대신 단일 광선 만 사용하십시오.

라인 71 ~ 73 :

return obj.e + f.mult(depth>2 ? (erand48(Xi)<P ? // Russian roulette 
radiance(reflRay,depth,Xi)*RP:radiance(Ray(x,tdir),depth,Xi)*TP) : 
radiance(reflRay,depth,Xi)*Re+radiance(Ray(x,tdir),depth,Xi)*Tr); 

누군가는 대신 둘의 단일 광선을 캐스팅의 단점을 설명해 주시겠습니까? 나는이 기술에 대해 들어 보지 못했고, 복잡성을 대폭 감소 시켰을 때 트레이드 오프가 궁금합니다.

+2

모든 것을 설명하고 해당 사이트에 분명하게 링크되어있는 [이 프레젠테이션] (https://docs.google.com/open?id=0B8g97JkuSSBwUENiWTJXeGtTOHFmSm51UC01YWtCZw)을 보았습니까? – KillianDS

+0

예, 프리젠 테이션을 읽었으며 훌륭합니다! 내가 찾고있는 것은 단일 광선을 주조하는 것이 알고리즘의 효율성에 어떻게 영향을 미치는지에 대한 깊이있는 설명이다. 왜 그는 2까지의 깊이에 대해 두 개의 광선 모두 평가해야하지만 이후에는 그렇지 않다는 결론을 내 렸습니다 (즉, 정확히 2 인 이유 또는 다소 불규칙한 이유에 대한 이유가 있습니까?). – crapper

+0

다소 불규칙하지만 아이디어는 아마도 당신이 처음 몇 번의 반사와 흡수로부터 대부분의 색 강도를 얻을 것이라는 것입니다. 반사/굴절을할수록 더 작은 공헌이 있어야합니다. – KillianDS

답변

3

몬테카를로 추적기입니다. 장점은 몇 가지 간단한 기하학에서 발생할 수있는 기하 급수적으로 증가하는 광선을 생성하지 않는다는 것입니다. 단점은 많은 샘플을 평균화해야한다는 것입니다. 일반적으로 실제 값에서 예상되는 편차가 "충분히 낮을 때까지 샘플링합니다. 몇 개의 샘플이 필요한지 계산하려면 몇 가지 통계가 필요하거나 많은 샘플을 가져 가야합니다.

2

아마도 그는 슈퍼 샘플링 픽셀을 사용하고 있으며 정확한 것은 아니지만 평균 색상이 대략 정확할 것이라고 추측합니다.

즉, 한 픽셀을 통해 4 개의 광선을 발사하고 평균 2 개는 반사되고 2 개는 굴절됩니다.
그들을 결합하여 하나의 광선이 반사되고 굴절 된 근사를 얻습니다.

+0

코드를 보면서 오른쪽에서 보았을 때 83,84 행을 보았습니다. –