Dự kiến ​​chi tiết đường chân trời lưới nước


13

Tôi đang cố gắng thực hiện một cảnh đại dương với C ++ và DirectX11. Hiện tại tôi có một lưới chiếu, sóng Gerstner và một bóng mờ cơ bản. Vấn đề của tôi là khi tôi nhắm máy ảnh của mình theo chiều ngang, vì vậy tôi có thể nhìn thấy đường chân trời nước, ở khoảng cách xa, lưới chiếu được chiếu không đủ, ngay cả ở số đỉnh cao. Những ảnh chụp màn hình này minh họa vấn đề:

mặt nước bóng mờ

mặt nước khung dây

Tôi biết nguyên nhân của vấn đề là ở khái niệm lưới chiếu (lưới được chi tiết gần camera, cách xa nó), nhưng phải có một cách thực hành tốt nhất để giải quyết vấn đề này.

Có ý kiến ​​gì không?

Câu trả lời:


7

Tôi tin rằng một giải pháp phổ biến là phân tách biến đổi camera được sử dụng để chiếu lưới từ biến đổi camera được sử dụng để kết xuất lưới. Ở các góc nhìn gần từ trên xuống, hai camera trùng nhau, nhưng khi camera quan sát gần với góc nhìn ngang, camera chiếu lệch và cố gắng giữ độ nghiêng tối thiểu, tức là nó lơ lửng ở đâu đó phía trên camera quan sát và nhìn xuống một chút.

Một mẹo nhỏ là đảm bảo rằng trường nhìn của camera chiếu luôn bao phủ vùng cảnh nhìn từ camera render. Tôi không có tài nguyên trong tay để biết chi tiết cách tính toán các biến đổi phù hợp và có thể rất tẻ nhạt khi lấy bằng tay.

Một giải pháp khác là lấy hộp công cụ xử lý tín hiệu: Các tạo phẩm nhìn thấy trong hình ảnh của bạn về cơ bản là răng cưa, gây ra bởi việc lấy mẫu không đủ của trường chiều cao sóng bằng lưới chiếu. Do đó, một giải pháp là lọc trường chiều cao một cách thích hợp, tùy thuộc vào diện tích chiếu của một ô lưới. Tôi tin rằng điều này được sử dụng trong kết xuất ngoại tuyến các đại dương và về cơ bản nó đảm bảo rằng các sóng ở đường chân trời đi ngang. Tuy nhiên, tôi không chắc khả năng này khả thi như thế nào trong kết xuất thời gian thực, vì bạn sẽ cần lọc bất đẳng hướng chất lượng cao để làm cho phương pháp này trông hợp lý.


Cảm ơn lời khuyên, tôi đã chọn giải pháp lười biếng bây giờ. Tôi sử dụng một chức năng trong trình tạo bóng đỉnh xác định độ suy giảm sóng từ khoảng cách từ camera tha.
Gábor Szalóki

6

Bạn có thể là cả thực tế và thời gian thực. bí mật là thay đổi cách thể hiện mỗi khi thông tin có được theo thang đo Shannon-Nyquist (tức là lưới): từ hình học đến bản đồ bình thường đến các mô hình tô bóng. Bài viết này được tạo cho bạn: http://maverick.inria.fr/Publications/2010/BNH10/index.php (xem thêm video Yoube)


3

Một số phần mềm như Maya, giải quyết vấn đề này bằng cách sử dụng cực (hoặc thực sự là cartesian quay cực ở khoảng cách xa) giống như cách bạn đặt lưới ở giữa vào vị trí camera. Thiết lập này cho biết thêm chi tiết, nơi nó được tính nhiều nhất Sau đó, họ dựa vào các shader xử lý thông thường ở các phạm vi xa hơn. Có chỗ cho hành vi ngẫu hứng. Bạn lạnh lùng sửa đổi cách tiếp cận này một chút, và có bất kỳ hình dạng nào khác làm tăng mật độ lưới về phía máy ảnh. Lợi ích của việc này là bạn có thể kéo dài hiệu ứng lên đến đường chân trời mà không phải lo lắng về đường may.

Bí quyết để không bị xáo trộn trong trường hợp này là bạn giảm dần sự dịch chuyển khi bạn di chuyển xa hơn. Sau đó, bạn chỉ cần sử dụng sửa đổi bình thường trong trình đổ bóng pixel khi bạn nhận được thêm. Điều này dễ lọc hơn là phải lọc cạnh shiluette chính xác. Ngoài ra nếu bạn có thể nhìn thấy điều đó ở xa thì vaw của bạn có khả năng đủ phẳng.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.