2008-09-17 52 views
18

Tôi đang tìm kiếm một tốt 3D Lưới thư việnA Good 3D lưới thư viện

  • nên có khả năng đọc các định dạng phổ biến (OFF, OBJ ...)
  • nên hỗ trợ cả hai nửa cạnh cấu trúc và súp tam giác
  • Nên chịu được các lỗi và mắt lưới bất hợp pháp.
  • Thao tác hình học cơ bản - giao lộ, tính toán bình thường, v.v.
  • Quan trọng nhất - Không được phức tạp với mẫu không giới hạn và phân cấp thừa kế.

Tôi đã thử cả CGAL và OpenMesh nhưng cả hai đều thất bại trong điểm cuối cùng.

CGAL cụ thể không thể theo dõi ngay cả với các công cụ phân tích mã nâng cao nhất.

Cho đến nay, tôi đang cân nhắc việc tự mình thực hiện.

Tùy chọn của tôi là C++ nhưng tôi mở cho các tùy chọn khác.

+0

Tôi không biết nếu nó thỏa mãn yêu cầu của bạn, nhưng có một cái nhìn để VCG – elect

Trả lời

10

Tôi có thể hỏi tại sao điểm cuối cùng là yêu cầu không?

Thư viện được viết cho tiêu dùng công khai được thiết kế để có thể sử dụng rộng rãi nhất có thể để người dùng có thể sử dụng rộng rãi nhất. Trong C++, điều này thường được thực hiện tốt nhất khi sử dụng các mẫu. Nó sẽ hút rất nhiều nếu tìm thấy một thư viện tốt, chỉ để khám phá nó là vô ích cho các mục đích của bạn bởi vì nó được sử dụng phao thay vì tăng gấp đôi. Ví dụ:

CGAL dường như đã áp dụng mô hình STL nổi tiếng và được thử nghiệm tốt về viết các thư viện C++ chung và có thể mở rộng. Điều này thực sự làm cho nó khó khăn để làm theo với các công cụ phân tích mã; Tôi nghi ngờ họ đang tốt sau khi STL tiêu đề hoặc.

Nhưng bạn đang cố gắng sử dụng thư viện hoặc sửa đổi nó? Dù bằng cách nào, họ dường như có một số tài liệu cực kỳ chất lượng cao (ví dụ: Kernel Manual) sẽ giúp bạn dễ dàng tìm ra những gì bạn cần làm mà không cần phải đọc mã của họ.

Tuyên bố từ chối trách nhiệm: Tôi biết đây không phải là những gì bạn đang yêu cầu. Nhưng tôi không nghĩ rằng những gì bạn đang tìm kiếm tồn tại. Đó là đột xuất hiếm khi tìm mã nguồn mở với tài liệu tốt như những gì tôi đã thấy quét qua CGAL. Tôi mạnh mẽ đề nghị bạn hãy nhìn vào nó.

2

Thứ nhất, một số ý kiến ​​chung về bạn yêu cầu:

  • đọc OBJ hoặc OFF file là rất dễ dàng. Bạn có thể tự thực hiện nó, trên một thư viện cung cấp các tính năng hình học hơn, trong vài phút nữa. Mặt khác, phần hình học của các thư viện này phức tạp hơn nhiều nên bạn chắc chắn nên tập trung vào các yêu cầu của bạn, thực sự giải quyết các thuật toán hình học và cố gắng tìm một thứ phù hợp với nhu cầu của bạn. Sau đó, tất nhiên, nếu có một tie, bắt đầu xem xét vấn đề giao diện này.
  • về mặt hoạt động hình học, bạn yêu cầu giao lộ. Bạn có nghĩa là giao lộ nguyên thủy? (mà thuật toán tốt và đơn giản có thể được tìm thấy và thực hiện) hoặc tính toán của giao điểm của hai mắt lưới? hoặc phát hiện va chạm?(là những câu hỏi tinh tế, không có câu trả lời đơn giản)
  • nếu bạn cụ thể hơn, từ quan điểm cấp cao hơn, về loại công cụ bạn muốn xây dựng, thì mọi người sẽ có thể hướng dẫn bạn đến đúng công cụ . Yêu cầu của bạn quá thấp.

Theo tôi hiểu câu hỏi của bạn, có vẻ như với tôi rằng bạn không thấy rõ điểm của thư viện như CGAL và OpenMesh. Các thư viện này có thể không cung cấp tất cả các công cụ cấp cao hơn mà bạn cần, nhưng mục đích của chúng là cung cấp cho bạn (đặc biệt trong trường hợp CGAL) tất cả khung hình học mà bạn có thể xây dựng một ứng dụng hình học. Các khung hình học như vậy rất tinh tế để thiết kế, đặc biệt là do vấn đề mạnh mẽ, rất cụ thể đối với hình học tính toán. Và không có một khuôn khổ như vậy, việc xây dựng một ứng dụng mạnh mẽ là một nỗ lực khủng khiếp.

Nếu bạn không tìm thấy thư viện phù hợp với nhu cầu của mình, bạn nên xem xét nghiêm túc việc sử dụng thư viện như CGAL làm khuôn khổ cơ bản cho sự phát triển của bạn. Nó sẽ ngăn chặn sự xuất hiện của các vấn đề liên quan đến sự mạnh mẽ, rằng bạn thường sẽ chỉ bắt đầu nhận thấy muộn trong quá trình phát triển của bạn, khi thay đổi khuôn khổ cơ bản sẽ gây đau đớn. Ngoài ra, CGAL có một tài liệu mở rộng và danh sách gửi thư của người dùng rất tích cực.

Nếu bạn không biết về các vấn đề mạnh mẽ trong phần mềm hình học, có một cái nhìn tại trang này: robustness issues

0

Tôi không biết nếu nó có thể hữu ích cho bạn. Ngoài ra còn có một thư viện khác, được gọi là Thư viện Mangrove TDS, tự do có sẵn tại http://mangrovetds.sourceforge.net Nó hỗ trợ bất kỳ loại hình dạng nào (2d, 3d, bất kỳ thứ nguyên nào), với bất kỳ tên miền nào (đa tạp, đa tạp, đa tạp giả, cụm iqm, phức hợp đơn giản, v.v.) Nó có thể hỗ trợ hình dạng không thường xuyên, tức là, được hình thành bởi các phần của các chiều khác nhau.

Thuộc tính chính của nó là nó có thể mở rộng, theo nghĩa là bất kỳ cấu trúc dữ liệu topo nào đều được hỗ trợ. Nó là một plugin, có thể được thay đổi và nạp vào thời gian chạy.

Việc triển khai thực hiện dựa trên việc lập chỉ mục dựa trên mảng của các thực thể, được mã hóa trong cấu trúc dữ liệu, hỗ trợ trình vòng lặp. Nó cũng hỗ trợ các thuộc tính động.

Cuối cùng, nó hỗ trợ một đại diện của các tổ chức ngầm không được mã hóa trực tiếp trong một cấu trúc dữ liệu (thực thể ma), trong đó nâng cao hiệu quả của các truy vấn topo

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