2013-03-12 12 views
6

Używam kodu Open Source Davida Piegzy do wizualizacji grafu 3D kierowanego siłą za pomocą Three.js. Kod źródłowy można znaleźć tutaj: https://github.com/davidpiegza/Graph-VisualizationStosowanie grafu 3D ukierunkowanego na siłę Davida Piegzy dla DUŻYCH Danych; wizualizacja jest zbyt powolna

Kiedy zaczynam wizualizować ponad 2000 węzłów, rzeczy stają się BARDZO wolne. Wizualizacja zajmuje około 30 sekund, a obracanie i przesuwanie ma duże opóźnienie. Co może być przyczyną tego? Algorytm ukierunkowany na siłę? Czy JavaScript może obsłużyć wiele węzłów na wymuszonym wykresie 3D? Czy istnieje jakiś algorytm uśpienia tylnej ściany, z którego mogę korzystać w przypadku wykresów 3D ukierunkowanych na siłę?

Odpowiedz

4

Domyślam się, że algorytm układu ukierunkowanego na siłę nie jest tutaj głównym problemem. Głównym z nich są zasoby GPU. Opracowuję teraz wykres 2D webgl i używam cząsteczek do wyświetlania węzłów (jest to znacznie szybsze niż rysowanie kostek). I nawet taka realizacja ma ograniczenia GPU. Możesz spróbować maksymalnie powiększyć wykres i jeśli zwiększysz szybkość klatek, to moja sugestia jest poprawna (mniej obiektów na ekranie - szybsza praca GPU).

+0

Dobre połączenie, to ograniczenia GPU. Zacznę pracować nad pracą. Wygląda na to, że użycie cząstek, scalanie geometrii i buforowanie mają kluczowe znaczenie. –

+0

P.S. Daj mi znać jak idzie! Chciałbym zobaczyć twoje rozwiązanie pewnego dnia. –

+0

Głównym problemem związanym z wydajnością są krawędzie i etykiety. Obecnie używam jednej siatki dla wszystkich linii (na bliską odległość - aby osiągnąć grubość linii), Three.Lines (na odległość) i układów cząstek dla węzłów. Mogę budować interaktywne grpah z 10k węzłów/20k krawędzi z 30 fps na moim GeForce GTS250, ale wciąż jest wiele rzeczy do zrobienia. Postaram się wziąć udział w mojej bibliotece w tym GSoC. – dIsoVi

Powiązane problemy