Photogrammetry,攝影測量法,通常是使用被攝物的影像來建立3D模型以及空間位置,聽起來像是某種先進的技術,但其實攝影測量法已經行之有年,早在19世紀中葉就開始被各領域的科學家廣泛運用,從考古學、氣象學、建築學到地圖繪製等等,都可以看到攝影測量法的身影。
而隨著科技的進步,現在一般大眾也可以透過各種商業或開源軟體的技術,運用攝影測量法輕易的將數位照片轉換為3D模型;讓我們多了另一種在3D空間中記錄事物的方式。
除了Photogrammetry(攝影測量法)之外,目前也有人將這種產出模型的方式稱之為3D Photoscan(3D攝影掃描),用這兩個關鍵字就能夠在網路上取得相當豐富的參考資料。
這次就和大家介紹一下,我個人常用的開源軟體Photogrammetry流程。
拍攝照片
Photogrammetry對於被攝物的材質有部分的限制,因為需要經由軟體來比對照片之間的相對位置以及空間資訊,遇到如透明、高反射度材質,或是表面無明顯特徵的材質,就會有很高的機會會計算失敗,所以在挑選物件上,要記得避開含有以上材質的物件。
另外拍照的時候,光照要平均適當,避免有過曝或是過暗的影像;同時每張照片最好有30%的部分是互相重疊,這樣軟體才會有比較高的比對運算成功機率。
瞭解上述的注意事項之後,就可以開始為你的被攝物拍照了。
通常我會將被攝物當作中心,繞著被攝物進行360度的拍攝,並分別從下方往上、正視以及從上方往下的三種角度來拍照。將被攝物的各個角度都拍起來,記得要對焦清楚。↓
每一圈我大約會拍攝12-24張不等,這個部份就依照個人或是當時環境狀況來自行判斷。
建立點雲(Point Cloud) / VisualSFM
我們取得的被攝物的照片之後,就需要使用軟體來比對這些照片的相對位置,並產出包含3D空間及色彩資訊的點雲,進而讓我們建立被攝物的3D模型。
在這個步驟上,我會使用VisualSFM這套軟體。
下載後開啟VisualSFM,匯入拍攝的所有照片。↓
開始運算之前,我會先取消勾選Multi-threaded Match,這樣系統才不會自動將你的照片判斷為多組物件。因為有的時候照片比較雜亂,系統很容易誤判。↓
接下來就是按下Compute missing matches按鈕,讓軟體開始比對每一張你所拍的照片。↓
等到右側資訊欄位顯示比對完成後,就可以垵下Compute 3D Reconstruction按鈕,開始建立點雲了。↓
按下按鈕後,軟體就會開始「即時」建立點雲,感覺超帥!↓
建立完成之後,執行這個階段的最後一個功能,Run Dense Reconstruction。↓
點選之後,會跳出對話視窗詢問存檔位置,這個時候請「不要更改」資料夾位置,就直接存在原本照片資料夾中即可,不然後續建立模型材質的時候,會讀不到相關資料。直接輸入想要儲存的檔案名稱就好。↓
按下存檔之後就是漫長的等待,這個部分的耗時會依照不同的硬體規格而不同。而當你看到完成訊息後就可以關掉VisualSFM,進入下一個階段。↓
表面重建材質繪製 / MeshLab
接下來我們要將剛剛得到的點雲資料,經由另一套開源軟體MeshLab來產出實際的模型以及材質貼圖。
安裝後開啟MeshLab,並打開之前由VisualSFM儲存的專案檔(和照片在同一個資料夾)。↓
開啟專案檔後,會在右側看到相關資訊,但主畫面中還不會有東西出現。你需要再Import Mesh,並選擇同一個資料夾中的ply檔案。↓
開啟檔案之後,你就可以看到經由VisualSFM所產生的點雲資料。↓
接下來就要簡單的清理多餘的點雲資訊,這樣在後續產出模型時,才不會造成多餘的模型表面或是浪費運算的硬體資源。
先確認右側的資訊欄位中,已經點選了點雲的欄位,然後使用Select Vertices功能,將不要的部分框選起來(變成紅色),再來使用Delete功能,刪除框選的部分。↓
清理完畢之後,就可以使用Filters→Remeshing, Simplification and Reconstruction→Surface Reconstruction: Screened Poisson的功能來重建表面。如果這個時候你找不到這個功能,可能是因為你的系統沒有支援QT Pluging所導致,可以嘗試安裝Visual Studio 2019,或許就可以解決這個問題。↓
對話視窗中的數值可以不用調整,直接按下Apply即可,如果你想要提升模型的細緻程度,可以針對Reconstruction Depth以及Adaptive Octree Deph來調整,但過高的數值會容易造成電腦當機或是模型面數太高,通常我個人最高會設定到10以及6左右。↓
完成之後可以在右側資訊欄位看到Poisson mesh的資訊,確認選擇了該欄位後,就可以來產出模型的材質了。(可以開啟/關閉眼睛圖示來選擇想要看到的資訊)↓
點選Poisson mesh,然後使用Filters→Texture→Parameterization + texturing from registered rasters功能來建立材質貼圖。視窗中只需要輸入你想要的貼圖大小,並按下Apply即可。↓
完成材質貼圖之後,就可以將你的模型輸出了。使用另存新檔,並將檔案格式設定為OBJ,並且點選你的貼圖後按下OK,就完成了OBJ模型的輸出了。↓
模型編輯調整以及輸出 / Blender
Blender是一套免費且開源的3D軟體。它支援3D創作中的所有流程,包含建模、材質、骨架、動畫、模擬、算繪、合成、動態追蹤、影片編輯以及2D動畫的製作。
接下來就是將模型進到Blender,開始最後的調整,讓你的模型可以輸出成靜態照片、動態影片或是提供給3D列印做為使用等等。
模型匯入Blender支後,使用Decimate修改器,將面數降到可接受的範圍內。↓
接下來使用雕刻功能,快速的調整整體外觀。這個部分也可以和上一個步驟交換,先雕刻後再降面數。就照個人需求調整即可。↓
然後是材質的調整↓
最後是燈光以及攝影機的設定並輸出靜態圖檔↓
這樣就完成了我們這次Photogrammetry的流程啦!!
關於Blender的操作方式就不再贅述,如果對於這套軟體想要瞭解更多的人,可以參考一下小深藍的Blender線上課程喔!
完全初學→【Blender初學全攻略】
https://tinyurl.com/LDB02
進階材質→【3D材質動手玩】
https://www.yottau.com.tw/course/intro/1006
進階骨架→【3D骨架關節技】
https://www.yottau.com.tw/course/intro/1214
0 留言