3D引擎为何使用三角形绘制曲面

这个问题是我第一次接触3D开发就有的疑问,最近在看《游戏引擎架构》(Game Engine Architecture),在书中找到了答案。架构

 

三角网格(Triangle Mesh),游戏开发者会使用三角形网格来建模。三角形是表面的分段线性逼近,若是用多条相连的线段分段逼近一个函数或曲线。 函数

实时渲染之因此选用三角形,是由于三角形有如下的优势: 性能

  • 三角形是最简单的多边形,少于3个顶点就不能成为一个表面;
  • 三角形必然是平坦的,含4个或以上的顶点的多边形,不必定平坦,三个点肯定一个平面,多余的点可能在这个面之上或者之下;
  • 三角形经多种转换以后,仍然是三角形,这对于仿射转换和透视转换也成立。最坏的状况下,从三角形的边去看,三角形会退化为线段。在其它角度观察,仍能维持是三角形;
  • 几乎全部商用图形加速硬件都是为三角形光栅化而设计的。

 

三个点才能构成一个平面,并且仅有三个面才能保证面是平的,多一个点不能保证面是平的,少一个点不能构成一个平面,因此很少很多正好是三个。设计

 

一般会使用“三角形/秒”做为CPU性能的一项重要指标。若是你有兴趣,不妨读一读知乎专栏上的这篇文章《GPU原理解密(一)画个三角形竟然这么难》blog

https://zhuanlan.zhihu.com/p/20918974游戏

 

在3D模型中,一般面数越多(也就是三角形的数量),模型越精细,反之则越粗糙(根据面数多少也就有了高模与低模之分)  ——(以下图所示)图片

image

(图片来源:http://www.atangeo.com/examples/horse游戏开发

 

因此从视觉和美术的角度来看,面数固然是多多益善,可是从程序和性能的角度来看,面数是越少越好,少即意味着运算量变小,渲染速度会更快、耗电量都下降很多,因此须要平衡。开发

相关文章
相关标签/搜索