1) Nó phụ thuộc vào việc thực hiện yoru. Bạn sẽ cần phải có một cấu trúc dữ liệu, nơi bạn có thể tra cứu các giá trị ở mỗi góc (đỉnh) của voxel hoặc khối lập phương. Đây có thể là hình ảnh 3D (ví dụ: kết cấu 3D trong OpenGL) hoặc có thể là cấu trúc dữ liệu mảng tùy chỉnh hoặc bất kỳ định dạng nào khác mà bạn muốn.
2) Bạn cần kiểm tra các đỉnh của hình lập phương. Có những tối ưu hóa khác nhau về điều này, nhưng nói chung, bắt đầu với góc đầu tiên, và chỉ cần kiểm tra các giá trị của tất cả 8 góc của khối lập phương.
3) Thuật toán (nhanh) nhất tạo bitmask để sử dụng làm bảng tra cứu thành một mảng tĩnh các tùy chọn. Chỉ có rất nhiều lựa chọn có thể cho việc này.
4) Khi bạn đã tạo hình tam giác từ triTable, bạn có thể sử dụng OpenGL để hiển thị chúng.
Giả sử tôi có dữ liệu đám mây điểm của quả táo. làm thế nào để tôi tiến hành?
Điều này sẽ không hoạt động với hình khối hành quân. Các khối lập kế hoạch yêu cầu dữ liệu voxel, vì vậy bạn cần sử dụng một số thuật toán để đưa đám mây điểm dữ liệu vào một ổ đĩa khối. Gaussian Splatting là một tùy chọn ở đây.
Thông thường, nếu bạn đang làm việc từ một đám mây điểm, và muốn xem bề mặt, bạn nên xem xét các thuật toán tái tạo bề mặt thay vì các hình khối hành quân.
Nếu bạn muốn tìm hiểu thêm, tôi khuyên bạn nên đọc một số sách về kỹ thuật trực quan hóa. Một điều tốt là từ những người Kitware - The Visualization Toolkit.
Bạn có thể muốn xem VTK. Nó có triển khai C++ là Marching Cubes và có nguồn mở hoàn toàn.
Nguồn
2009-04-23 17:04:51
có thể 6 glQuads bằng voxel? nếu vậy, làm thế nào là xây dựng voxel reletive đến? điểm của tôi có phải là trung tâm của khối lập phương không? – noob88
@ noob88: Không, không hẳn. "Khối lập phương" của bạn sẽ cần phải là một số đối tượng bao gồm 8 pionts. 6 glQuads có thể là khuôn mặt của khối lập phương/voxel, và các đỉnh bạn đang sử dụng có thể là 8 điểm của bạn. Tuy nhiên, tôi sẽ tạo một cấu trúc dữ liệu khác để giữ điều này. Một cái gì đó đơn giản như một mảng đa chiều hoạt động. –
tôi thấy .. tôi nghĩ rằng tôi cần thời gian để kiểm tra nó ra 1, tôi có thể có liên lạc của bạn? Nếu tôi thêm một bình luận, nó sẽ hiển thị trong hồ sơ của tôi, và tôi có thể nhận được sự giúp đỡ của bạn .. – noob88