Tôi có một octree, với một con thỏ poly cao bên trong nó, và một nền tảng 12 đa giác.
Thỏa thuận này là. Bạn đang bắn một tia vào con thỏ. Anh ấy tất nhiên né tránh (hoặc bạn bỏ lỡ).
Các tia màu vàng là tia laser tử thần của bạn.
Các tam giác "ứng cử viên" được chọn do các phần của quãng tám bạn nhấn được hiển thị bằng màu tím.
Vì vậy, rõ ràng bạn có sự phân chia này xảy ra, bởi vì nút gốc đã bị tấn công, cuối cùng bạn đã kiểm tra bất kỳ polys nào trong nút gốc. Và các polys nằm trên đường viền của phân khu octree kết thúc ở nút gốc, với thuật toán phân chia tôi đang sử dụng.
Vì vậy, tôi muốn giảm số lượng polys trong nút gốc.
Nếu tôi chỉ di chuyển con thỏ đến góc,
Với chú thỏ ở góc raytracing, toàn bộ cảnh mất 1/3 thời gian (35 giây so với 95 nếu chú thỏ ở giữa). Tôi tin rằng điều này là do ít hình tam giác của chú thỏ nằm trong thư mục gốc và các lần truy cập gốc của octree kiểm tra ít đa giác hơn.
Tôi đang khảo sát các cách để cải thiện hiệu suất. Về cơ bản để đẩy tris càng xa cây càng tốt, để các đối tượng chủ yếu ở trong lá.
Tôi đã thử làm điều này một cách ngây thơ, và sử dụng thuật toán phân chia này mà tôi đã tạo nên:
split root into 8 CANDIDATE CHILDREN
foreach TRI in root:
foreach of the 8 CANDIDATE CHILDREN
if the CANDIDATE CHILD partially contains TRI (at least one vertex of TRI)
add TRI to CANDIDATE CHILD
CLEAR tris in root
Điều này đẩy các hình tam giác xuống thứ bậc vào các nút lá. Nhưng tôi nhận được lỗ hổng từ các góc độ nhất định, với các mẫu bỏ lỡ kỳ lạ:
(hy vọng)
lỗ từ một góc:
cùng cảnh, góc khác nhau:
Tôi nghĩ rằng đó là vì tôi đang xóa gốc. (Bởi vì khi tôi không xóa gốc, raytracing hoạt động chính xác, mọi góc độ)
Tôi đã "đẩy" các đa giác xuống cây một cách chính xác chưa? Có ai có thể đoán tại sao tôi có lỗ không?
Làm thế nào để bạn cải thiện hiệu suất của octree của bạn?
Tôi có phải chia các hình tam giác không? Tôi đang cố gắng tránh điều đó, vì vậy tôi không nhận được các hình tam giác mỏng hơn và mỏng hơn / nhân hình học cảnh nhiều hơn tôi cần.
Tôi cũng nhận thức được rằng cây KD và chúng nên vượt trội hơn quãng tám, nhưng chúng cũng yêu cầu chia poly, tôi thực sự đang tìm cách cải thiện quãng tám của mình ở đây.