Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么3D引擎主要使用三角形绘制曲面?_3d - Fatal编程技术网

为什么3D引擎主要使用三角形绘制曲面?

为什么3D引擎主要使用三角形绘制曲面?,3d,3d,为什么三角形总是用于在3D中绘制曲面?为什么不是正方形或其他形状?基本上,任何复杂的(表面)结构都可以表示为一组三角形。三角形是最原子、最原始的几何体。因此,它几乎被用作任何东西的基础。 然而,大多数3D引擎为您提供更复杂的基本体,如球体、圆锥体、圆柱体、甜甜圈等等。 查看您的库文档。因为定义平面至少需要3个点,所以可以使用许多三角形模拟任何形状,并且存在有效的算法在屏幕上快速绘制三角形。三角形永远不能是非平面的;任何具有3个以上点的对象都可能是非平面的,因此除非转换为三角形,否则不可渲染 例如

为什么三角形总是用于在3D中绘制曲面?为什么不是正方形或其他形状?

基本上,任何复杂的(表面)结构都可以表示为一组三角形。三角形是最原子、最原始的几何体。因此,它几乎被用作任何东西的基础。 然而,大多数3D引擎为您提供更复杂的基本体,如球体、圆锥体、圆柱体、甜甜圈等等。
查看您的库文档。

因为定义平面至少需要3个点,所以可以使用许多三角形模拟任何形状,并且存在有效的算法在屏幕上快速绘制三角形。

三角形永远不能是非平面的;任何具有3个以上点的对象都可能是非平面的,因此除非转换为三角形,否则不可渲染

例如:如果组成正方形的所有点都是共面的,则正方形是位于同一平面上的两个三角形。要确保所有点都是共面的,需要进行大量计算,因此,通过将大于3个点的所有多边形分割成三角形来预先计算它们,并进行测试以确保所有点都是共面的,而不是在渲染的每一帧上

这里是很好的参考

平面网格


(来源:)

非平面网格


(来源:)

还有一个例子可能会更清楚


(来源:)

非平面网格退化,无法以任何正常方式正确排序或渲染。三角形没有这个问题

效率

三角形也非常节省内存,可以进行排序,并且在使用时渲染速度非常快,在第一个三角形之后,只需要为每个附加三角形存储1个点

这是三角形条的一个特例



(来源:)

为了快速添加一点,多边形(更精确地说是三角形)并不是渲染3D曲面的唯一方法:查看曲面()、体素等。还有一点需要指出的是,当光线照射到三角形时以及交点所在的位置相对容易确定。此外,节点之间的颜色属性插值相对容易。