2013-08-17 37 views
1

我問的任何問題以及我所有的問題都與想法有關我曾經參與個人項目。意見建議:創建交互式3D點密度圖

我想試用在瀏覽器中使用WebGL創建3D和交互式dot density map。從我的背景來看,這對我來說都是新的,但我想這是我可以管理的事情。

我的問題圍繞項目的組件展開,特別是您對我所認爲需要的看法。需要生成的最大點數爲400萬,因爲這是所有點最遠的觀點。

出發:

  1. 我假設渲染這將是 使用頂點緩衝對象的最有效方法是什麼?如果是這樣,這是否適用於 與交互操作*?

  2. 對於如此多的觀點,我認爲需要一個等級空間劃分 結構,傾向於八叉樹(因爲也會使用高度數據 )。這是一個不錯的選擇嗎?當需要顯示所有點時,將如何管理內存 ?

  3. 如果ID,X,Y,Z數據400萬個將被存儲,我 假定這將是大約400-600MB爲CSV文件,是 有什麼辦法讓這個一個合理的尺寸發送到 互聯網?壓縮算法真的很好嗎?

我真的不要求每一個臺式機和移動設備能夠運行,但我也不想它的功能限制在他的實驗室是一個天才SLI運行的泰坦。我需要它是一個合理的權力豬。

* 交互式:動畫從一點到另一點的數據,其中用戶可以刷(過濾器)的點,並找出更多有關那些所述點,改變點顏色等

回答

1

分層空間分割結構將需要,傾向 對八叉樹(因爲高度數據也將被使用)。這是一個好的 的選擇?

空間分區絕對是查詢點的好主意。

如果ID,X,Y,4萬點z分別存儲的,我 假定這將是大約400-600MB作爲CSV文件

如果你有4百萬分和4個組件,每個4字節,那麼數據的大小約爲64 MB。這可以通過現代的CPU/GPU來管理。

有什麼辦法讓這個尺寸合理的發送到 上網嗎?壓縮算法真的很好嗎?

我認爲帶寬是不是規模的主要問題。

您只能發送和顯示可見點。如果多個點一次可見,則可以通過將最近的點組合在一起來對它們進行過濾。 點應該表現出高頻率和過濾,並且可能改變亮度,應該給出感覺上平滑的結果。

這樣的概念類似於texture clipmapsgeometry clipmaps

+1

一個很好的答案,但有點小錯誤。由於帶寬是問題,服務器是否是委託哪些點崩潰的情況,以及保持空間分區結構活動的那一個和*只有一個? – BlackBox

+0

是的,如果帶寬是一個問題,那麼計算可見數據將在服務器端。客戶端只會在O(n)中顯示點,這是最佳的 –

0

數據處理:聽起來您可以使用OctoMap框架。已知非常有效地處理非常大的3D點雲。它在裏面使用八叉樹,不存儲每個默認的點數,但每個盒子(節點)的佔用率。 但是,擴展並將自定義信息存儲在節點(如原始點或甚至模擬本地節點中的點分佈(example))中非常容易。

流:如果您實現用於讀取自己的「< <」操作和寫一棵樹成流,比你可以很容易地通過一個套接字它傳輸到一個網頁瀏覽器。

可視化:您實際上可以使用任何WebGL-JavaScript框架。目前我可以建議CubeVR