smallpt 학습하고 실험 한 후 작은 경로 추적기를 작성했습니다 .
내가 직접 작성하고 이해하지 못한 유일한 것은 카메라에서 초기 광선을 계산하고 발사하는 방법입니다. 나는 원칙을 올바르게 얻었지만 방법을 설명하는 몇 가지 리소스를 찾고 있습니다.
- 광선의 초기 방향 계산
- 피사계 심도 같은 효과를 허용하는 실제 렌즈를 모델링합니다 (핀홀 카메라와 반대)?
최신 수학 및 물리학은 필요하지 않지만 철저하게 설명하면 괜찮습니다.
smallpt 학습하고 실험 한 후 작은 경로 추적기를 작성했습니다 .
내가 직접 작성하고 이해하지 못한 유일한 것은 카메라에서 초기 광선을 계산하고 발사하는 방법입니다. 나는 원칙을 올바르게 얻었지만 방법을 설명하는 몇 가지 리소스를 찾고 있습니다.
최신 수학 및 물리학은 필요하지 않지만 철저하게 설명하면 괜찮습니다.
답변:
핀홀 카메라 모델의 다음 단계는 얇은 렌즈 모델입니다. 여기서 렌즈를 무한대로 얇은 디스크로 모델링합니다. 이것은 실제 카메라 모델링과는 거리가 멀지 만 이상적인 피사계 심도 효과를 제공합니다.
panohelp.com의 위 이미지 는 기본 아이디어를 보여줍니다. 이미지의 각 지점마다 2D 렌즈 표면의 모든 지점을 통해 해당 이미지 지점에 여러 광선이 도달합니다. 따라서 Monte Carlo를 사용하여 이와 같은 이미지를 생성하려면 각 광선에 대해 이미지 평면의 2D 샘플 포인트와 렌즈 표면의 독립 2D 샘플 포인트를 모두 선택해야합니다.
설정할 사용자 대면 매개 변수는 렌즈 반경 (씬 단위의 물리적 반경)으로 초점 범위의 얕은 정도 (큰 렌즈 = 얕은 초점 범위)와 물체의 거리를 제어합니다. 초점.
장면에 눈 광선을 생성하기 위해 렌즈 표면을 떠나는 광선의 위치와 방향을 계산할 수 있습니다. 이 모델에서는 이미지 평면과 렌즈를 통한 굴절을 명시 적으로 시뮬레이션 할 필요가 없습니다. 기본적으로 렌즈는 카메라 위치를 중심으로하고 카메라 방향을 향하도록합니다.
이미지 위치를 기준으로 핀홀 모델에서와 같이 카메라 위치 (렌즈 중심)에서 장면으로 광선을 만듭니다. 초점면과의 교차점을 찾으십시오. 그곳에서 이미지 위치의 모든 광선이 수렴해야합니다. 이제 광선의 시작점을 렌즈에서 임의로 선택한 점으로 오프셋하고 방향을 수렴 점을 향하도록 설정할 수 있습니다.
초점면이 평면 이외의 것이거나 렌즈가 원형 디스크 이외의 것이되도록 허용하고 동일한 프로세스를 수행하여 이것을 조금 일반화 할 수 있습니다. 그것은 물리적이지 않은 물리 효과라면 흥미로울 수 있습니다. 카메라의 렌즈 요소를보다 실제적으로 시뮬레이션하여이 간단한 모델을 뛰어 넘는 것도 가능하지만 그것은 저의 전문 지식을 넘어서는 것입니다.
Kolb, et al., 컴퓨터 그래픽을위한 현실적인 카메라 모델 , SIGGRAPH 95를 참조하십시오.
그러나 실제 카메라를 모방 한 카메라 모델이 렌더링 단계에 반드시 필요한 것은 아니라는 점을 명심하십시오. 시각 효과 / 후반 작업 시나리오에서는 카메라 모델에 의한 흐림 / 비네팅 / 왜곡이 많을수록 합성기 / 컬러 타이머가 더 나빠집니다. 포스트 패스로하는 것이 더 좋습니다.