2012-01-26 34 views
7

Từ các trò chơi lâu đời nhất đến rất hiện đại, có vẻ như bạn vẫn có thể nhìn xuyên qua các bức tường hoặc thường xuyên nhất là mặt đất ở một số vị trí máy ảnh. Tại sao va chạm khó tính toán hiệu quả trong các công cụ đồ họa? Làm tròn/mất chính xác có tích lũy dẫn đến chế độ xem sai không?Tại sao va chạm khó tính toán hiệu quả trong các công cụ đồ họa?

+6

"xem qua các bức tường hoặc thường xuyên nhất trên mặt đất ở một số vị trí máy ảnh". không phải là một vấn đề va chạm của nó một vấn đề clipping; họ chỉ không lọc ra những thứ bạn không thể nhìn thấy từ vị trí đó từ cảnh được hiển thị. –

+0

Bạn đang hỏi về một số phần của "bức tường" trong hình ảnh hoặc về việc định vị camera bên trong bức tường ..? – Sorceror

Trả lời

2

Điều này không thực sự là va chạm theo nghĩa rõ ràng. Vị trí máy ảnh có lẽ không thực sự "bên trong" bức tường hoặc mặt đất trong những tình huống đó, nhưng nó chỉ đơn giản là rất gần với nó.

Trong đồ họa 3D máy tính, máy ảnh có khái niệm về gần mặt phẳngmặt phẳng xa. Chỉ hình học nằm giữa hai mặt phẳng này sẽ hiển thị trong khi phần còn lại sẽ là cắt bớt. Nếu bạn quá gần với một cái gì đó và căn chỉnh máy ảnh một cách chính xác, thì rất có thể là một số phần của hình học sẽ quá gần máy ảnh như được xác định bởi mặt phẳng gần và kết quả là hình học sẽ không được hiển thị.

Bây giờ, khoảng cách tới mặt phẳng gần này có thể được thiết lập bởi các nhà phát triển, và nó có thể được đặt là rất ngắn - đủ ngắn để đảm bảo rằng các tình huống như thế này không thể xảy ra. Tuy nhiên, bộ đệm độ sâu hoặc z buffer được sử dụng để xác định đối tượng nào gần camera nhất trong khi hiển thị và do đó đối tượng hiển thị và không hiển thị, liên quan chặt chẽ với khoảng cách gần và xa.

Trong phần cứng đồ họa, bộ đệm độ sâu được biểu diễn bằng số bit cố định cho mỗi pixel, ví dụ 32 bit. 32 bit này phải đủ để biểu diễn chính xác toàn bộ nhịp giữa mặt phẳng gần và mặt phẳng xa. Nó cũng không phải là tuyến tính, nhưng sẽ sử dụng độ chính xác hơn gần camera hơn. Kết quả là, việc lựa chọn khoảng cách gần mặt phẳng rất nhỏ sẽ làm giảm đáng kể độ chính xác tổng thể của bộ đệm độ sâu. Điều này có thể gây phiền nhiễu nhấp nháy trong toàn bộ cảnh bất cứ nơi nào hai đối tượng rất gần với nhau.

Bạn có thể đọc thêm về sự cố này here cũng như section 12.040 here.

+1

Tôi đang cầu nguyện mỗi ngày cho tất cả card đồ họa có độ chính xác z-buffer 32 bit: -D .. Rất nhiều trong số chúng vẫn chỉ có 24 bit hoặc ít hơn (giống như tất cả các card đồ họa Intel tích hợp cũ). – Sorceror

1

Nó không phải là khó khăn (tất nhiên, không dễ tính toán va chạm/cắt của đối tượng không lồi), nhưng bạn vẫn chỉ có ~ 33ms để tính toàn bộ khung, do đó cần phải thực hiện một số thỏa hiệp (lưới va chạm không giống như lưới bạn thực sự thấy). Nếu không có thời gian cho giải pháp chính xác (để đáp ứng tất cả các điều kiện - khoảng cách máy ảnh, vật thể phải được nhìn thấy, tránh va chạm), bạn phải dự phòng một số giải pháp "dễ dàng" như nhìn xuyên qua tường.

Các vấn đề liên quan