2008-09-17 17 views
18

szukam dobrej 3D Mesh bibliotekiDobry 3D biblioteki siatki

  • Powinny być w stanie odczytać popularnych formatów (OFF, OBJ ...)
  • powinny wspierać zarówno pół krawędzi struktury i zupa trójkątna
  • Powinna być odporna na uskoki i nielegalne oczka.
  • Podstawowe operacje geometryczne - przecięcia, normalne obliczenia itp. "
  • Co najważniejsze - nie powinny być zawiłe z nieskończoną hierarchią szablonów i dziedziczenia.

Próbowałem zarówno CGAL, jak i OpenMesh, ale obaj zawiedli niestety w ostatnim punkcie.

W szczególności CGAL, którego nie można śledzić nawet przy użyciu najbardziej zaawansowanych narzędzi do analizy kodu.

Do tej pory poważnie zastanawiam się nad własnymi.

Moje preferencje to C++, ale jestem otwarty na inne opcje.

+0

ja nie wiem, czy spełnia on wymagania, ale spójrz na VCG – elect

Odpowiedz

10

Czy mogę zapytać, dlaczego ostatni punkt jest wymagany?

Biblioteki przeznaczone do publicznej konsumpcji mają być tak ogólne, jak to tylko możliwe, aby mogły być wykorzystywane przez jak najszerszą grupę odbiorców. W C++ najlepiej jest to zrobić przy użyciu szablonów. Byłoby to bardzo niedorzeczne, gdyby znaleźć dobrą bibliotekę, tylko po to, by odkryć, że jest ona bezużyteczna dla twoich celów, ponieważ użyła pływaków zamiast podwójnych.

Wydaje się, że na przykład CGAL przyjął dobrze znany i sprawdzony paradygmat STL pisania ogólnych i rozszerzalnych bibliotek C++. To naprawdę utrudnia śledzenie za pomocą narzędzi do analizy kodu; Wątpię, czy są one dobre w śledzeniu nagłówków STL.

Ale czy próbujesz użyć biblioteki lub zmodyfikować ją? Tak czy inaczej, wydają się mieć bardzo wysoką dokumentację (np. Kernel Manual), która powinna sprawić, że stosunkowo proste będzie ustalenie, co trzeba zrobić, bez konieczności uciekania się do czytania ich kodu.

Nota prawna: Wiem, że nie o to prosisz. Ale nie sądzę, że to, czego szukasz, istnieje. Niezwykle trudno jest znaleźć kod open source z dokumentacją i tym, co widziałem podczas skanowania przez CGAL. Sugerowałbym, żebyś spojrzał na to jeszcze raz.

2

Najpierw kilka ogólnych uwag o ciebie wymagania:

  • odczyt plików OBJ lub off jest bardzo łatwe. Możesz go zaimplementować samodzielnie, na szczycie biblioteki, zapewniając bardziej geometryczne funkcje w ciągu kilku minut. Z drugiej strony, geometryczna część takich bibliotek jest o wiele trudniejsza, że ​​powinieneś skupić się na swoich wymaganiach, które naprawdę zajmują się algorytmami geometrycznymi i spróbować znaleźć coś, co odpowiada twoim potrzebom. Następnie, oczywiście, jeśli istnieje remis, zacznij rozważać ten problem z interfejsem.
  • pod względem operacji geometrycznych, poprosić o skrzyżowanie. Czy masz na myśli przecięcie prymitywów? (dla których można znaleźć i wdrożyć dobre i proste algorytmy) lub obliczenia przecięcia dwóch siatek? lub wykrywanie kolizji?(które są delikatnymi pytaniami, bez prostej odpowiedzi)
  • Jeśli bardziej precyzyjnie, z wyższego punktu widzenia, o narzędziach, które chcesz zbudować, ludzie będą mogli skierować cię do odpowiedniego narzędzia . Twoje wymagania są zbyt niskie.

O ile rozumiem twoje pytanie, wydaje mi się, że nie widać wyraźnie bibliotek, takich jak CGAL i OpenMesh. Takie biblioteki mogą nie dostarczać wszystkich potrzebnych narzędzi na wyższym poziomie, ale ich celem jest zapewnienie (szczególnie w przypadku CGAL) wszystkich ram geometrycznych, na których można zbudować geometryczną aplikację. Takie geometryczne ramy są bardzo delikatne w projektowaniu, szczególnie ze względu na problem solidności, który jest bardzo specyficzny dla geometrii obliczeniowej. Bez takiej struktury zbudowanie solidnej aplikacji jest przerażającym wysiłkiem.

Jeśli nie znajdziesz biblioteki, która odpowiada Twoim potrzebom, powinieneś poważnie rozważyć użycie biblioteki, takiej jak CGAL, jako podstawowej struktury do rozwoju. Zapobiegnie to pojawieniu się problemów związanych z odpornością, które zazwyczaj zaczniesz zauważać dopiero późno, w trakcie procesu tworzenia, gdy zmiana podstawowego schematu będzie bolesna. Na marginesie, CGAL ma obszerną dokumentację i bardzo aktywną listę mailingową użytkowników.

Jeśli nie wiesz o problemach solidności w oprogramowaniu geometrii, rzucić okiem na tej stronie: robustness issues

0

ja nie wiem, czy to może być przydatne dla Ciebie. Istnieje również inna biblioteka, która jest nazywana Biblioteką TDS Mangrove, dostępna bezpłatnie pod adresem http://mangrovetds.sourceforge.net Obsługuje ona dowolny typ kształtów (2d, 3d, dowolny wymiar), z dowolnymi domenami (kolektory, nierozdzielacze, pseudo-kolektory, kompleksy iqm, proste kompleksy i tak dalej). Prawdopodobnie obsługuje nieregularne kształty, tj. Utworzone przez kawałki o różnych wymiarach.

Jego główną właściwością jest to, że można go rozszerzyć w tym sensie, że obsługiwana jest dowolna struktura danych topologicznych. Jest to wtyczka, którą można zmieniać i ładować w czasie wykonywania.

Jego wdrożenie opiera się na indeksowaniu jednostek w oparciu o macierze, zakodowane w strukturze danych, obsługujące iteratory. Obsługuje również właściwości dynamiczne.

Wreszcie, obsługuje niejawny reprezentację podmiotów niezwiązanych bezpośrednio zakodowane w strukturze danych podmiotów (duchów), które poprawiają efektywność zapytań topologicznych