Sketchup 輸出FBX的頂點問題

Leon Hsieh
Oct 29, 2020

keywords: sketchup pro 2019, 3dsMax 2013, fbx, vertices, vertex, 頂點

最近遇到一個專案,需要將sketchup模型以fbx的格式導入three.js中,
聽起來很簡單對吧?
我當初也是這樣想,沒想到大錯特錯,結果花了整個周末外加一個平日才理出頭緒,而且沒有什麼中文資源,所以就有了這篇筆記。

一般來說,在室內或建築設計領域,因為sketchup有vray插件,而3dsMax也能吃skp檔,所以不太需要注意頂點數量的問題。

但對於遊戲、AR、VR等需要即時渲染的領域,頂點及面數的控制非常重要,因為過多頂點會降低效能,連帶影響操作體驗的流暢性。

直接以Skecthup的預設設定輸出fbx模型,用其他能編輯頂點的3D軟體(如3dsMax)打開FBX檢查時會發現:頂點數暴增。

紅框處顯示,單一個立方體就整整多了16個頂點

我們知道,一個方塊應該只會有8個頂點,但在max裡卻變成24個頂點,也就是6個面都分離了。

幸好max可以直接讀取sketchup,除了預設材質方塊外,我也另外創建了3個面有外部貼圖的方塊以進行測試。

左:頂點數正常(8verts),右:頂點數不正常(19verts)

由此可知,skp是以材質來區分物件的,因此3面貼圖的方塊頂點計算如下:貼圖的3個面,各4個頂點(3x4)+剩下的3面,有7個頂點(7)=19

「既然3dsMax可以讀取skp,是不是只要在Sketchup裡建模,用顏色分類 好,進max貼圖,就能輸出FBX了呢? 」

沒錯,理論上只能這樣,而且既然如此,為何不在max或其他更好用的軟體裡製作模型就好了呢?

其實在2019年,就已有國外網友反應fbx的輸出問題,且得到官方注意,並承諾加入改善清單,但截至2020.2版本,該問題仍舊存在,因此我暫時不推薦團隊使用輸出fbx的功能。

另外補充,FBX的格式其實有兩種:Binary及ASCII

ASCII FBX是以人類可閱讀的文字檔構成,其中包含名稱、材質、物件階層、燈光、鏡頭位置及其他資訊,從skp輸出的FBX即為ASCII格式。

Binary FBX編碼格式則只能由程式閱讀,如果以文字形式開啟的話,只會看到一堆亂碼。

Autodesk有出一款FBX Converter,來轉換這兩種格式

ASCII FBX檔

其實到這邊會發現,Sketchup的便利性是有其條件的,雖然格式通用,但細究後會發現,其並不適合用來製作遊戲用模型,後面要解決的問題實在太多

以室內/建築產業來說,就是需要一款快速、準確、適合迭代修改的建模軟體,畢竟產業特性不同,而遊戲/動畫產業可以容許場景或物件些許誤差,但非常講究效能,其實是兩個極端。

--

--

No responses yet