這個問題是我第一次接觸3D開發就有的疑問,最近在看《遊戲引擎架構》(Game Engine Architecture),在書中找到了答案。架構
三角網格(Triangle Mesh),遊戲開發者會使用三角形網格來建模。三角形是表面的分段線性逼近,若是用多條相連的線段分段逼近一個函數或曲線。 函數
實時渲染之因此選用三角形,是由於三角形有如下的優勢: 性能
- 三角形是最簡單的多邊形,少於3個頂點就不能成爲一個表面;
- 三角形必然是平坦的,含4個或以上的頂點的多邊形,不必定平坦,三個點肯定一個平面,多餘的點可能在這個面之上或者之下;
- 三角形經多種轉換以後,仍然是三角形,這對於仿射轉換和透視轉換也成立。最壞的狀況下,從三角形的邊去看,三角形會退化爲線段。在其它角度觀察,仍能維持是三角形;
- 幾乎全部商用圖形加速硬件都是爲三角形光柵化而設計的。
三個點才能構成一個平面,並且僅有三個面才能保證面是平的,多一個點不能保證面是平的,少一個點不能構成一個平面,因此很少很多正好是三個。設計
一般會使用「三角形/秒」做爲CPU性能的一項重要指標。若是你有興趣,不妨讀一讀知乎專欄上的這篇文章《GPU原理解密(一)畫個三角形竟然這麼難》blog
https://zhuanlan.zhihu.com/p/20918974遊戲
在3D模型中,一般面數越多(也就是三角形的數量),模型越精細,反之則越粗糙(根據面數多少也就有了高模與低模之分) ——(以下圖所示)圖片
(圖片來源:http://www.atangeo.com/examples/horse)遊戲開發
因此從視覺和美術的角度來看,面數固然是多多益善,可是從程序和性能的角度來看,面數是越少越好,少即意味着運算量變小,渲染速度會更快、耗電量都下降很多,因此須要平衡。開發