为什么在三维绘图中,通常使用三角形来绘制表面?而不是正方形或其他形状?
为什么在三维绘图中,通常使用三角形来绘制表面?而不是正方形或其他形状?
三角形永远不可能是非平面的;任何具有超过3个点的物体都可能是非平面的,因此无法渲染,除非将其转换为三角形。
例如:如果构成正方形的所有点都共面,则正方形是两个在同一平面上的三角形。要确保所有点都共面需要进行大量计算,因此所有大于3个点的多边形都被预先计算为三角形,并测试以确保所有点仅在第一次渲染时共面,而不是在每个渲染帧上进行计算。
这里有一个关于多边形网格的好参考 about polygon meshes。
平面网格
(来源: softimage.com)
非平面网格
(来源: softimage.com)
我再举一个例子来更清楚地说明:
(来源:autodesk.com)
非平面网格是退化的,无法以任何明智的方式进行排序或正确渲染。三角形没有这个问题。
效率
三角形也非常节省内存,并且在使用Triangle Strips时可以快速排序和渲染,每个额外三角形只需要存储1个点。
http://upload.wikimedia.org/wikipedia/en/0/03/Triangle_Strip.png
还有三角形扇形,它是三角形带的一种特殊情况。
(来源:codesampler.com)
因为最少需要3个点才能定义一个平面表面,所有的形状都可以用多个三角形进行模拟,而且现有高效算法可以快速在屏幕上绘制这些三角形。
基本上,任何复杂(表面)结构都可以表示为一组三角形。三角形是最基本和原始的几何体。因此,它被用作几乎所有东西的基础。 然而,大多数3D引擎都提供更复杂的基元,如球体、圆锥体、圆柱体、甜甜圈等等。 请查阅您的库文档。