예상 그리드 워터 호라이즌 디테일


13

C ++ 및 DirectX11을 사용하여 바다 장면을 구현하려고합니다. 현재는 투영 그리드, Gerstner 파도 및 기본 음영이 있습니다. 내 문제는 카메라를 수평으로 조준 할 때 멀리 물 수평선을 볼 수 있기 때문에 높은 정점 수에서도 투영 된 격자가 불충분하다는 것입니다. 이 스크린 샷은 문제를 보여줍니다.

그늘진 물 표면

와이어 프레임 수면

문제의 원인은 투영 된 그리드의 개념에 있다는 것을 알고 있습니다 (그리드는 카메라 근처에 상세하며 카메라에서 멀리 떨어져 있습니다). 그러나 이것을 해결하는 가장 좋은 방법이 있어야합니다.

어떤 아이디어?

답변:


7

일반적인 해결책은 그리드를 렌더링하는 데 사용되는 카메라 변환에서 그리드를 투영하는 데 사용되는 카메라 변환을 분할하는 것입니다. 하향식에 가까운 관점에서는 두 카메라가 일치하지만, 뷰잉 카메라가 수평 관점에 가까워 질수록 프로젝션 카메라는 최소한의 기울기를 유지하려고 시도합니다.

까다로운 비트는 프로젝션 카메라의 시야가 항상 렌더 카메라에서 본 장면 영역을 덮고 있는지 확인하는 것입니다. 적절한 변환을 계산하는 방법을 자세히 설명하는 리소스가 없으며 수동으로 파생하는 것이 지루할 수 있습니다.

다른 해결책은 신호 처리 툴박스를 얻는 것입니다. 이미지에 나타나는 인공물은 본질적으로 앨리어싱이며, 투영 된 그리드에 의해 파고 필드의 샘플링이 불충분하기 때문입니다. 따라서 그리드 셀의 투영 영역에 따라 높이 필드를 적절하게 필터링하는 방법이 있습니다. 나는 이것이 바다의 오프라인 렌더링에 사용되며 본질적으로 수평선의 파도가 평평 해지도록합니다. 그러나이 방법이 합리적인 것처럼 보이게하려면 고품질 이방성 필터링이 필요하기 때문에 이것이 실시간 렌더링에 얼마나 적합한 지 잘 모르겠습니다.


조언에 감사드립니다, 나는 게으른 해결책을 지금 선택했습니다. 버텍스 쉐이더에서 카메라로부터의 거리로부터의 파동 감쇠를 결정하는 기능을 사용합니다.
Gábor Szalóki


3

Maya와 같은 일부 소프트웨어는 카메라 위치를 중심으로 그리드와 같은 방식으로 극좌표 (또는 실제로 극좌표가되는 직교)를 사용하여이 문제를 해결합니다. 이 설정은 가장 많이 계산되는 부분을 더 자세히 추가 한 다음 추가 범위에서 셰이더 일반 처리에 의존합니다. 개선을위한 오프 사이트 공간이 있습니다. 이 방법을 약간 수정하고 카메라를 향한 메쉬 밀도를 증가시키는 다른 모양이 있습니다. 이것의 장점은 이음새에 대해 걱정하지 않고 수평선까지 효과를 늘릴 수 있다는 것입니다.

이 경우 변위가 뒤죽박죽이되지 않도록하는 요령은 멀어 질수록 변위를 점차적으로 줄이는 것입니다. 그런 다음 픽셀 쉐이더에서 일반 수정을 사용하면 더 나아질 수 있습니다. 정확한 shiluette 가장자리를 필터링하는 것보다 필터링하기가 더 쉽습니다. 또한 당신이 그것을 멀리 볼 수 있다면 어쨌든 당신의 결점은 충분히 평평 할 것입니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.