❶ 三維數據分析有哪些好的方法與軟體
三維數據處理軟體都包含哪些模塊
三維數據處理軟體,一般包含三個模塊:數據管理和處理,三維渲染,UI。 這與圖形學的三個經典問題是相對應的:建模,渲染和交互。與一般常見的數據處理軟體,比如圖像視頻處理,不同的是,這里的數據展示模塊需要三維渲染。與之對應的UI操作,也變成了一些三維空間的變換,比如模型的旋轉縮放等。
如何搭建一個簡單的三維數據處理軟體
那麼如何快速的搭建一個三維數據處理軟體呢?採用搭積木的方式,每個模塊都有很多現成的開發包可以選擇。比如UI模塊處,一般常見的有MFC,QT,MyGUI(Magic3D使用的UI)等。數據處理演算法方面,常見的有Geometry++,CGAL,OpenMesh,PCL等。渲染模塊,可以使用OpenGL或者Direct3D,也可以使用渲染引擎,如OGRE,OSG等。
如何選擇幾何演算法開發包
幾何演算法模塊,一般有三種選擇:自主開發,使用開源庫,使用商業庫。如何選擇呢?開發包API的生命周期,大概分為開發,維護和升級。對於一個演算法,幾乎不可能開發出放之四海皆準的API。它的絕大部分時間都在維護和升級。開發包的選擇,其實就是一個成本問題。開發階段主要是時間成本,如何快速的實現目標功能是最關鍵的問題。維護和升級階段需要盡量低的成本開銷。所謂開源庫免費,其實只是在開發階段免費,而開發階段最看重的卻是時間成本。有了源代碼就需要人去維護,沒有人維護的源代碼是沒有用處的。商業庫的主要優勢就是有專業的團隊來維護和升級這些API,並且成本會比個人做得更低。如果想清楚API的生命周期以及每個階段的成本開銷後,根據自身具體情況,就能很容易的做出選擇了。
數字幾何處理是什麼
數字幾何處理,一般是指點雲網格數據的處理。和傳統的NURBS正向建模的模型相比,數字幾何處理的對象一般是三維掃描儀採集的數據,是曲面的離散表達,也就是數字化的。它的研究內容包括數據的獲取,存儲,表示,編輯,可視化等等。
OpenGL是什麼
OpenGL是一套跨平台的圖形繪制API,它通過一系列API把三維模型渲染到2D屏幕上。OpenGL採用了流水線機制,其繪制過程也稱為渲染流水線。此外還有OpenGLES,主要用於嵌入式系統,或者移動平台;WebGL主要用於Web瀏覽器里的圖形繪制。
OpenGL流水線
OpenGL通過一系列API可以設置渲染流水線的狀態,所以OpenGL也是一個狀態機。三維模型通過一些處理,最終渲染到2D屏幕上:
模型離散為三角面片:所有模型都需要離散為三角面片,OpenGL只接受三角面片輸入。注意,雖然OpenGL也可以接受四邊形,NURBS等輸入,其本質最後都是三角面片的繪制。
Vertex Shader把三維三角片轉化到屏幕坐標系下的2D三角片:這個過程包含了變換,裁剪等操作
2D三角片的光柵化:2D三角片被離散化,用屏幕坐標系的像素來表示,這也叫光柵化。
Pixel Shader為光柵化後的模型像素著色。
上面是渲染流水線的大致描述,其中還有很多細節,不同的API也有些細節上的差別。最早的OpenGL是固定的流水線,也就是只能通過API來設置一些流水線中的狀態。現代的OpenGL開放出了一些Shader,用戶可以自己為Shader寫代碼,利用Shader可以寫出各式各樣的渲染效果。
渲染模塊使用OpenGL還是渲染引擎
如果渲染模塊不是主要業務,建議使用渲染引擎。因為引擎內有很多現成的工具可以使用,減少開發的時間成本。