2012-12-09 5 views
1

raytracer에 부드러운 그림자를 구현하려고합니다. 그렇게하기 위해 교차점에서 여러 개의 그림자 광선을 영역 광원쪽으로 쏠 계획입니다. 구형 영역 광원을 사용하려고합니다. 즉, 광선에 방향 벡터가있는 임의의 점을 생성해야합니다 (광선이 원점과 방향으로 지정되었음을 상기하십시오).부드러운 그림자를위한 구형 영역 광원

구형에서 임의의 점을 균일하게 분포시키는 방법을 살펴 보았지만 찾고있는 것보다 조금 복잡해 보입니다. 누구든지 영역에서 이러한 점을 생성하는 방법을 알고 있습니까? 내 구형 영역 광원은 XYZ 세계 좌표, RGB 색상 값 및 r 반경으로 간단히 정의됩니다.

I이 코드를 참조한

그래픽 젬 III에서 (동일한 방법 herehere 논의도) 페이지 126 :

}

이 미세하고 I이 이해 내 구 광원은 3D XYZ 좌표와 반지름으로 지정된 공간의 어느 지점에 위치합니다. 나는 수식이 단위 구체에 대해 작동한다는 것을 알고 있지만 수식이 어떻게 구의 위치를 ​​설명하는지 잘 모르겠습니다.

감사합니다. 감사드립니다.

답변

1

방향을 생성하는 수식 (예 : 구의 한 점)과 방향/방향/구형을 생성하려고한다는 사실을 혼동하는 것처럼 보입니다.

주어진 공식은 무작위 광선을 균일하게 샘플링합니다. 방향으로 간주 할 수있는 단위 구상에 X, Y, Z 트리플을 찾습니다.

실제로 달성하려고하는 것은 방향 (구의 한 점)을 생성하는 것이지만 구체쪽으로 향하는 특정 방향을 선호하는 것입니다 (또는 원추로 제한되는 원뿔 : 카메라의 중심과 구형 광원의 실루엣). 이러한 일이 두 가지 방법으로 수행 할 수 있습니다 :

  • 코사인 엽와 구형 광원의 중심을 향해 어느 중요성 샘플링.
  • 위에서 정의한 콘에서 균일 한 샘플링. 첫 번째 경우

이 공식은 "글로벌 조명 일람표"에 제시되어있다 : http://people.cs.kuleuven.be/~philip.dutre/GI/TotalCompendium.pdf (항목 38 페이지) ... 두 번째 경우 , 일부 거부 샘플링을 할 수있는,하지만 난 ' 꽤 가까운 폼 공식이 있다는 것을 확신합니다.

마지막 옵션이 있습니다. 공식을 사용하고 결과 (X, Y, Z)를 장면의 한 점으로 간주하여 구의 위치로 변환하고 벡터를 만듭니다 카메라쪽으로 향하고 있습니다. 그러나, 그것은 심각한 문제를 제기한다 :

  • 당신은 당신은 당신이 필요 방향의 생성 세트의 PDF 파일에 대한 어떤 공식이 없습니다
  • 하여 구 빛의 뒤쪽으로 벡터를 생성한다 나중에 Monter Carlo 통합.나는 내가 할 노력 정확히 무엇을 혼동 않은 추측 -
+0

은 매우 명확 응답했다, 감사합니다. 여러분이 제공 한 리소스가 매우 도움이 될 것 같지만 사각형 대신 다른 광원을 사용하는 것이 좋습니다. 그렇습니다. 구현하는 것이 훨씬 간단 할 것 같습니다. 광선을 향해 쏘기 위해 직사각형에 점을 지정하기 위해 두 개의 무작위 변수를 생성해야합니다. 맞습니까? 이것에 대한 자료를 알고 있습니까? 다시 한 번 감사드립니다! –