2010-09-25 15 views
5

Từ những gì tôi thu thập, ông sử dụng octrees voxel thưa thớt và raycasting. Nó không có vẻ như ông đã sử dụng opengl hoặc direct3d và khi tôi nhìn vào trò chơi Voxelstein nó xuất hiện rằng hình khối thu nhỏ đang thực sự được rút ra thay vì chỉ là một bó 2d vuông. Điều này khiến tôi mất cảnh giác Tôi không chắc anh ấy làm thế nào mà không có opengl hay direct3d.Ai đó có thể mô tả thuật toán được sử dụng bởi động cơ Voxlap của Ken Silverman không?

Tôi đã cố gắng đọc qua mã nguồn nhưng thật khó để tôi hiểu những gì đang diễn ra. Tôi muốn thực hiện một cái gì đó tương tự và muốn các thuật toán để làm như vậy.

Tôi quan tâm đến cách anh ấy thực hiện hiển thị, chọn lọc, tắc và chiếu sáng. Bất kỳ trợ giúp được đánh giá cao.

+1

Bạn nên thêm liên kết vào mã nguồn thay vì khiến chúng tôi không biết tìm kiếm nó qua công cụ tìm kiếm –

Trả lời

6

Thuật toán gần hơn với việc truyền tia hơn là dò tia. Bạn có thể nhận được một lời giải thích từ Ken Silverman mình ở đây:

http://www.jonof.id.au/forum/index.php?topic=30.0

Nói tóm lại: trên một mạng lưới, lưu trữ một danh sách RLE của voxels bề mặt cho mỗi x, y chồng voxels (nếu z có nghĩa là 'lên') .Giả sử 4 bậc tự do, chiếu xuyên qua nó cho mỗi đường thẳng đứng trên màn hình và duy trì danh sách các nhịp nhìn thấy được cắt bớt khi mỗi khối được vẽ. Đối với 6 bậc tự do, hãy làm một cái gì đó tương tự nhưng với scanlines được nghiêng trong không gian màn hình.

+0

Liên kết đã chết :( – oldmud0

5

Tôi đã không xem xét các thuật toán riêng của mình, chỉ cần từ ảnh chụp màn hình:

dường như khối thu nhỏ được thực sự được rút ra thay vì chỉ là một loạt các hình vuông 2d

Yep, đó là cách làm việc theo dõi tia. Nó không vẽ 2d vuông, nó theo dõi tia. Nếu bạn theo dõi tia của bạn chống lại nhiều hình khối thu nhỏ, bạn sẽ thấy nhiều hình thu nhỏ. Cảnh tượng được thể hiện bằng nhiều hình thu nhỏ (voxels), do đó bạn nhìn thấy chúng khi bạn nhìn kỹ hơn. Nó sẽ được tốt đẹp để thực sự mịn dữ liệu bằng cách nào đó (theo dõi chống lại chức năng năng lượng mịn) để làm cho họ trông mượt mà hơn.

Tôi quan tâm đến làm thế nào ông thực hiện render

bởi ray-tracing

tiêu huỷ

không cần phải tiêu huỷ khi ray-tracing

occlusion

tắc voxel-voxel được xử lý tự nhiên bằng dò tia. Nếu anh ta vẽ các sprites, anh ta có thể sử dụng một bộ đệm Z được tạo ra bởi bộ dò tia.

và ánh sáng

Có thể xấp xỉ bình thường địa phương bằng cách nhìn vào các tế bào lân cận và tìm được chiếm đóng và không. Sau đó thực hiện tính toán ánh sáng.

Mọi trợ giúp đều được đánh giá cao.

Cảm ơn bạn.

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