2010-10-04 7 views
5

Czy ktoś ma doświadczenie w porównywaniu VTK i OpenSceneGraph? Jestem bardziej zaznajomiony z VTK, ale jestem ciekawy, czy ktoś próbował tak szeroko.VTK (zestaw narzędzi do wizualizacji) kontra OSG (OpenSceneGraph), inne?

Mam zarówno zbudowany, 5,6 vtk i 2,9.9 osg, można uruchomić przykłady ... na pierwszy rzut oka OSG wydaje się bardziej "szorstki", ale może to jest w porządku. W szczególności martwię się, że mogę bawić się z niskim poziomem openGL w VTK; na przykład Założę się, że glReadPixels zachowałoby się ładniej z OSG. Komentarze?

(czy jest tam miły „inne”, że tęsknię? Wiem, że istnieją inni, ale proszę spojrzeć na masywną zakresu OSG i VTK ...)

Odpowiedz

10

VTK i OSG naprawdę rozwiązać różne problemy, które powinieneś wykorzystać, zależy od tego, co próbujesz osiągnąć! VTK jest przede wszystkim przeznaczony do wizualizacji naukowej i jako taki jest bardziej ukierunkowany na algorytmy wizualizacji danych. Może mieć pewną zdolność do pracy w trybie wykresu sceny, ale głównie dlatego, że różne zestawy danych mogą być rejestrowane (nakładane) jeden na drugim. Nie jest tak naprawdę przeznaczone do reprezentowania dowolnych scen (choć może to być w tym przypadku upięte). I masz rację, nie ma zamiaru mieszać połączeń OpenGL z VTK. Znowu można to zrobić, ale niekoniecznie jest to łatwe.

OSG z drugiej strony jest duchowym następcą wykonawcy SGI i jest przeznaczony raczej dla dowolnych graficznych scen. Jest bardzo zależny od metafory sceny-wykresu, o której zachęcam do przeczytania (wikipedia ma przyzwoity artykuł). Nie mam z tym większego doświadczenia (bycie bardziej po stronie science fiction).

Krótko mówiąc, jeśli chcesz przeglądać isosurfaces danych wolumetrycznych, wizualizacje pola przepływu lub inne wizualizacje pochodzące z danych naukowych, przejdź do VTK. Jeśli próbujesz wdrożyć jakiś wirtualny świat, idź z OSG (lub czymś podobnym). Jeśli próbujesz osiągnąć coś innego, daj nam znać, a może ktoś może polecić bardziej odpowiednie narzędzie do Twoich potrzeb.

+0

Cóż, jestem naprawdę w szarej strefie, dlatego muszę ostrożnie decydować. Potrzebuję "vritual world", ale może to być bardzo proste, myślę, że kilka budynków vtkPolyData i duży prostokąt dla ziemi z wklejonymi teksturami zrobi to. Co naprawdę muszę być w stanie zrobić, to odczytać dane obrazu, które są renderowane, wykonać pewne obliczenia w innym miejscu w kanale obrazu, a następnie ewentualnie zaktualizować geometrię w wyniku. Tak naprawdę potrzebuję sposobu, aby skutecznie "przesiewać"; na przykład glReadPixels() byłoby świetnie, gdyby VTK mógł to zrobić, po prostu nie wiem, gdzie umieścić to połączenie. –

+0

Widzę, że istnieje "vtkOpenGLStateCache", ale zamierzam po prostu przesłać wszystko do OpenCV, tak więc wolałbym uniknąć większego owinięcia OWT niż to konieczne. –

+1

Rozumiem. Po pierwsze, jeśli masz vtkRenderWindow, możesz wywołać vtkRenderWindow :: Get [RGBA] PixelData na nim, i zwróci blok pikseli - albo jako surowy wskaźnik, albo do typu vtkArray. Szczerze mówiąc, zarówno OSG, jak i VTK brzmią jak przesada - czy rozważałeś użycie zwykłego OpenGL? Lub, w zależności od twojego języka programowania, prawdopodobnie istnieją lekkie biblioteki do renderowania scen, których możesz użyć. – Gretchen