2011-08-11 45 views
6

Tôi mới xử lý dữ liệu 3D với C++ (hoặc C++ 0x) và tôi đang cố viết ứng dụng đơn giản, cho phép xử lý dữ liệu đó (mô hình, chia nhỏ, v.v.). Tôi đang tìm kiếm thứ gì đó như 'công cụ hình học 3d' - công cụ xử lý hình học 3D hiệu quả trong bộ nhớ và cung cấp API để sửa đổi các thành phần của nó (đỉnh, điểm, đa giác (không chỉ hình tam giác), thuộc tính của đỉnh, v.v ...). Tôi đã tìm kiếm một cái gì đó như thế, nhưng không may mắn. Bạn có thể đề nghị bất kỳ công cụ hình học 3D nào tốt nhất (nguồn mở), mà sẽ có api như vậy, nếu có bất kỳ động cơ nào có sẵn miễn phí không?động cơ hình học 3d

Cảm ơn bạn.

+1

Vì bạn là người mới ở đây, hãy chắc chắn thông báo cho chính mình về các tính năng chấp nhận và bỏ phiếu. –

+0

Tôi không thể chọn nhiều câu trả lời đúng? Vì vậy, ngay bây giờ tôi phải kiểm tra sâu 2 thư viện này - OpenMesh và Cgeo để xem cái nào tốt hơn cho phép nói được thiết kế. Tôi cho rằng cả hai đều có nhiều tính năng xử lý tương tự nhau, nhưng tôi tự hỏi cái nào là tốt hơn "được thiết kế" –

Trả lời

3

Bạn có thể thử http://pointclouds.org/.

Theo trang web: Thư viện đám mây điểm (hoặc PCL) là một dự án mở, quy mô lớn để xử lý đám mây điểm.

Khung PCL chứa nhiều thuật toán tiên tiến bao gồm lọc, ước tính tính năng, xây dựng lại bề mặt, đăng ký, lắp và phân đoạn mô hình.

PCL được phát hành theo các điều khoản của giấy phép BSD và là phần mềm nguồn mở. Nó là miễn phí cho sử dụng thương mại và nghiên cứu. Chúng tôi được hỗ trợ về mặt tài chính bởi Willow Garage, NVidia, Google và Toyota.

+0

Nếu tôi hiểu rõ, PCL dành cho hình học đám mây điểm, trái ngược với các mắt lưới cổ điển hơn. Đó không phải là một vấn đề, nó chỉ là một cái gì đó mà OP nên biết. –

+0

tuyệt vời! Cảm ơn bạn rất nhiều vì điều đó - câu hỏi của tôi không liên quan đến chủ đề này, nhưng nó sẽ hữu ích cho tôi! –

4

Nếu mối quan tâm chính của bạn là xử lý lưới đa giác (như câu hỏi của bạn cho thấy, mặc dù "công cụ hình học 3d" có thể có nghĩa là cái gì đó rộng hơn), bạn có thể xem OpenMesh. Như bạn đã đề cập đến C++ 0x, tôi cho rằng bạn không có kẻ thù với các khuôn mẫu, vì vậy bạn có thể thích OpenMesh, vì nó sử dụng nhiều cấu trúc lập trình chung, để tạo nên một cơ sở hạ tầng lưới dễ sử dụng nhưng vẫn rất hiệu quả. Nó không đi kèm với quá nhiều thuật toán tiền xử lý để xử lý lưới, nhưng một số ít có thể là điểm khởi đầu để thực hiện các thuật toán của riêng bạn.

+0

Cảm ơn bạn! Tôi sẽ xem xét OpenMesh. Bạn có thể cho tôi biết nếu bạn có bất kỳ expirenece với [CGAL] (http://www.cgal.org/project_ideas.html)? Bạn có thể so sánh nó với OpenMesh trong bất kỳ điều khoản nào không? –

+0

@ danilo2 Tôi không có bất kỳ trải nghiệm nào với CGAL. Đó là một thư viện hình học tính toán tổng quát khổng lồ cung cấp nhiều hơn chỉ là các lưới đa giác. Tôi không biết làm thế nào nó có thể sử dụng được, nhưng nó có một cộng đồng lớn và được sử dụng rộng rãi, tôi nghĩ vậy. Có lẽ pmr biết thêm về nó. Nhưng nếu bạn chỉ bị can thiệp vào các lưới đa giác, thì OpenMesh là một thư viện nhỏ và nhanh. –

+0

@danilo Christian đúng. CGAL _is_ lớn nhưng các gói đơn được tách biệt khá tốt với nhau (bên cạnh các hạt nhân, có mặt ở khắp nơi). Bạn sẽ nhận được một ý tưởng mà thuật toán bạn cần phải sử dụng và tìm kiếm một phù hợp hơn. – pmr

2

Tôi đã có một số thành công với VTK. Nó có thể không phải là API tốt nhất để đối phó với mắt lưới, nhưng nó hoạt động, và có chức năng phong nha để hiển thị chúng. Và tôi biết ít nhất một vài người hình học tính toán làm việc độc quyền với nó, vì vậy nó không thể hoàn toàn là xấu :)

+1

Cảm ơn bạn! Tôi chắc chắn sẽ nhìn vào nó! Có lẽ nó sẽ không phù hợp với nhu cầu của tôi (vì tôi muốn phát triển một ứng dụng lớn (ngay từ đầu nhỏ, nhưng sau đó lớn lên) và như bạn đã nói, nó không thể là API tốt nhất. Tôi sẽ xem xét nó :) –

4

CGAL cung cấp nhiều loại thuật toán xử lý lưới và đi kèm với các loại số tự động chính xác .

+0

Cảm ơn bạn! :) Tôi đang so sánh nó ngay bây giờ với các công cụ khác và nó trông thực sự thú vị! :) –

+0

Mặc dù nó đã được khá dài kể từ này, tôi đã được gần đây làm cho cùng một câu hỏi. Tôi đã thấy rằng về cơ bản: CGAL là _HUGE_, phức tạp hơn, nó bao gồm nhiều thuật toán dựng sẵn, nhưng hầu hết trong số họ có giấy phép GPL, vì vậy đối với các dự án thương mại có ngân sách thấp có thể không thuận tiện nhất. OpenMesh mặt khác là khá đơn giản, với một giấy phép linh hoạt tương thích với các dự án thương mại (LPGL) mặc dù nó có một thư viện thuật toán nhỏ hơn. – cbuchart

2

Bạn có thể thử Graphite, một khung xử lý hình học mã nguồn mở, dễ dàng hơn nhiều để xử lý hơn CGAL trong khi cung cấp Delaunay, vv
http://alice.loria.fr/index.php?option=com_content&view=article&id=22

này chắc chắn là tiến bộ hơn "chỉ xử lý hình tam giác và điểm", nhưng cung cấp các chức năng thú vị thường cần thiết để xử lý lưới.

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