2013-06-19 2 views
1

카메라 깊이를 평면에 투사 할 수 있습니까?
평면에 깊이 버퍼를 전송하면 카메라의 시점에서 항상 깊이가 표시됩니다. 그러나 깊이를 표시하는 대신 평면의 관점에서 어떻게 진행할 수 있습니까?
쉐이더에 효과를 적용하고 싶습니다. 나에게 그것은 문제가되는 행렬 일지 모르지만 나는 그것을 얻지 못한다.
3D 평면에 카메라 깊이 투영

답변

2

깊이 버퍼는 표현과 관련되어 있으므로 (예를 들어) 쉐이더를 사용하여 모든 평면에 투영 할 수 있습니다. 그러나 ..

깊이 버퍼는 개체의 완전한 기하학적 표현이 아니라 camara POV의 "보이는"표면의 것입니다. 수심 버퍼를 투사하면 물체의 일부가 투영되지 않습니다 (이미지 참조).

사진에서 카마라 (적목 현상)가 물체 (검은 색)를보고 있습니다. 깊이 버퍼는 카마라와 빨간색 표면 사이의 거리를 나타냅니다. 평면 (파란색 선)의 경우 전체 대상 투영 (파란색 표면)을 가져 오려고하지만 평면에 빨간색 표면을 투영하면 전체 파란색 표면 중 일부만 나타납니다. Projection depth buffer

는 전체 블루 표면을 원하는 경우에

,

  1. 변경 그냥 비행기 뒤에 카마의 POV.
  2. 장면을 렌더링하십시오.
  3. 깊이 버퍼를 가져 와서 텍스처/이미지/버퍼 (P)에 저장하십시오.
  4. 이 셰이더에 대한 이미지 (P)를 사용하여 답변
+0

감사 장면을 렌더링하여 카마의 POV 재설정, 물론 깊이 버퍼는 객체의 기하학적 표현이 아니다. 내 예를 들어, [여기] (http://stackoverflow.com/questions/17123558/volumetric-fog-shader-camera-issue/17163017#17163017), 나는 카메라의 관점을 가지고 있으며, 비행기의 POV를 갖는 방법. 문제를 이해합니까? 정확한 깊이를 가지고 진행하는 법을 모르겠습니다. – MaT

+0

비행기가 QUAD (A, B, C, D)라고 가정하면 1) A-B와 A-C의 교차 곱을 사용하여 평면의 법선을 얻습니다. 이것은 카마라 방향으로 사용될 수 있습니다. 2) 쿼드의 중심점을 카마라 위치로 사용할 수 있습니다. (A + C)/2. 3) 원하는대로 카마라를 ortogonal 및 other 매개 변수로 설정하십시오. 이것은 아마도 "어려울"것입니다. 예 : 카마라의 "원거리"평면의 크기는 QUAD의 크기 일 수 있습니다. –

+0

좋아, 답장을 보내 주셔서 감사합니다. 새 카메라가 필요한지 궁금해서 생각했지만 그것이 ... 나는 쉐이더에서 행렬을 사용하여 작동 할 위치의 관점을 변경했습니다. – MaT