2013-10-23 13 views
5

Tôi đang sử dụng QGLWidget để vẽ đối tượng 3-D, đầu vào cho chương trình của tôi là khuôn mặt của các hình dạng.QGLWidget - Mặt cắt ngang của các đối tượng rỗng 3-D

Có nghĩa là khi tôi muốn vẽ hình lập phương, tôi có danh sách 6 phần tử mỗi phần đại diện cho khuôn mặt và mỗi khuôn mặt chứa 4 điểm, (x, y, z) cho mỗi điểm.

Bản vẽ được thực hiện, nhưng tôi đang cố gắng triển khai tính năng mặt cắt ngang, cho đến nay hình dạng kết quả sau mặt cắt ngang là một đối tượng rỗng, Làm cách nào tôi có được kết quả mặt cắt ngang ?

+1

để bạn muốn cắt một phần của đối tượng và điền vào khoảng trống bên trong với một khuôn mặt –

+0

@ ratchet freak: có. –

Trả lời

9

OpenGL không biết "đối tượng". Nó không biết "rắn" hay "rỗng". Tất cả OpenGL đều biết là điểm, đường nét và hình tam giác. Nếu bạn muốn làm cho đối tượng của bạn xuất hiện chắc chắn, bạn sẽ phải tính toán hình dạng của đối tượng đã cắt, dẫn đến một lưới mới, mà bạn sử dụng làm dữ liệu đầu vào để vẽ.

Quy trình cắt bỏ là một phần của một tập hợp các hoạt động được gọi là "hoạt động hình học boolean" cũng được đặt ra "hình học rắn xây dựng". Nếu bạn Google cho điều đó, bạn sẽ tìm thấy nhiều thông tin.

2

Tôi tin rằng những gì bạn đang cố gắng đạt được là một số boolean operation trên 2 đối tượng hình học. Với mục đích này, có một thư viện hình học hoàn hảo trong Boost và bạn cần một trong các thuật toán sau: diff hoặc intersection. Với các ví dụ, thật dễ dàng để sửa đổi chúng cho cấu trúc đối tượng cụ thể của bạn.

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