2011-08-11 12 views
6

Jestem nowy w przetwarzaniu danych 3D za pomocą C++ (lub C++ 0x) i staram się napisać prostą aplikację, która pozwoli na przetwarzanie takich danych (model, podział itp.). Poszukuję czegoś takiego jak "silnik geometrii 3d" - silnik, który obsługuje efektywnie geometrię 3d w pamięci i umożliwia API modyfikowanie jego składników (wierzchołków, punktów, wielokątów (nie tylko trójkątów), atrybutów wierzchołków itp.). Szukałem czegoś takiego, ale bez powodzenia. Czy mógłbyś polecić dowolny (najlepszy open-source) silnik geometrii 3D, który będzie miał takie api, jeśli jest jakikolwiek silnik swobodnie dostępny?Silnik geometrii 3d

Dziękuję.

+1

Ponieważ jesteś tu nowy, pamiętaj, aby zapoznać się z funkcjami akceptowania i głosowania w górę. –

+0

Nie mogę wybrać więcej niż jednej odpowiedzi jako prawidłowej? Tak więc teraz muszę dokładnie przeanalizować te 2 biblioteki - OpenMesh i Cgeo, aby zobaczyć, które lepiej powiedzmy zaprojektowane. Podkreślam, że oba mają podobne funkcje przetwarzania, ale zastanawiam się, który z nich jest lepszy "zaprojektowany". –

Odpowiedz

3

Możesz spróbować http://pointclouds.org/.

Według strony internetowej: The Point Cloud Library (lub PCL) to otwarty projekt przetwarzania chmury punktów na dużą skalę.

Platforma PCL zawiera wiele najnowocześniejszych algorytmów, w tym filtrowanie, estymację funkcji, rekonstrukcję powierzchni, rejestrację, dopasowanie modelu i segmentację.

PCL jest wydany na warunkach licencji BSD i jest oprogramowaniem typu open source. Jest darmowy do użytku komercyjnego i badawczego. Jesteśmy finansowo wspierani przez Willow Garage, NVidię, Google i Toyotę.

+0

Jeśli dobrze rozumiem, PCL jest dla geometrii chmur punktów, w przeciwieństwie do bardziej klasycznych oczek. To nie jest problem per se, to po prostu coś, o czym powinien wiedzieć OP. –

+0

świetnie! Bardzo Ci za to dziękuję - moje pytanie nie było związane z tym tematem, ale będzie dla mnie przydatne! –

4

Jeśli Twoim głównym problemem jest przetwarzanie oczek wielokąta (jak sugeruje twoje pytanie, chociaż "silnik geometrii 3d" może oznaczać coś szerszego), możesz zajrzeć do OpenMesh. Jak wspomniałeś w C++ 0x, zakładam, że nie jesteś wrogiem w szablonach, więc możesz polubić OpenMesh, ponieważ wykorzystuje on generyczne konstrukcje programistyczne, aby stworzyć łatwą w użyciu, ale wciąż bardzo wydajną strukturę siatki. Nie zawiera zbyt wielu wstępnie opracowanych algorytmów przetwarzania siatki, ale niektóre z nich mogą stanowić punkt wyjścia do implementacji własnych algorytmów.

+0

Dziękujemy! Zajrzę do OpenMesh. Czy możesz mi powiedzieć, czy masz jakieś expirenece z [CGAL] (http://www.cgal.org/project_ideas.html)? Czy możesz porównać to do OpenMesh w dowolnych kategoriach? –

+0

@ danilo2 Nie mam żadnego doświadczenia z CGAL. Jest to ogromna ogólna biblioteka geometrii obliczeniowej, która zapewnia znacznie więcej niż tylko wielokątne siatki. Nie wiem, jak to możliwe, ale ma dużą społeczność i jest powszechnie używana. Może pmr wie o tym więcej. Ale jeśli jesteś zainteresowany tylko wielowymiarowymi oczkami, OpenMesh jest ładną i szybką małą biblioteką. –

+0

@danilo Christian ma rację. CGAL _jest_ ogromny, ale pojedyncze pakiety są dość dobrze oddzielone od siebie (poza jądrem, które jest wszechobecne). Powinieneś wiedzieć, jakich algorytmów potrzebujesz i szukać lepszego dopasowania. – pmr

2

Odniosłem pewne sukcesy z VTK. Może nie być najlepszym API do obsługi siatek, ale działa i ma przyzwoitą funkcjonalność do ich wyświetlania. I znam przynajmniej kilku facetów geometrii obliczeniowej, którzy pracują wyłącznie z nią, więc nie może być całkowicie źle :)

+1

Dziękujemy! Na pewno na to popatrzę! Może to nie pasuje do moich potrzeb (ponieważ chcę rozwinąć dużą aplikację (na początku małą, ale potem dorastającą) i jak powiedziałeś, to nie może być najlepsze API.) Rzucę okiem na to :) –

4

CGAL dostarcza szeroką gamę algorytmów przetwarzania siatki i posiada niestandardowe typy liczb dla dokładnej arytmetyki zmiennoprzecinkowej .

+0

Dziękuję Ci! :) Porównuję ją teraz z innymi narzędziami i wygląda naprawdę interesująco! :) –

+0

Chociaż od tego czasu było dość długo, ostatnio zadawałem to samo pytanie. Widziałem to w zasadzie: CGAL jest _HUGE_, więc bardziej złożony, zawiera wiele gotowych algorytmów, ale większość z nich ma licencję GPL, więc w przypadku projektów komercyjnych o niskim budżecie może nie być najwygodniejsza. Z drugiej strony OpenMesh jest prostszy, z elastyczną licencją kompatybilną z projektami komercyjnymi (LPGL), choć ma mniejszą bibliotekę algorytmów. – cbuchart