我曾使用Maya进行动画和更多以电影为导向的项目,但是我也专注于对视频游戏开发的研究。无论如何,我正在和一位教授谈话,我们不知道为什么所有游戏引擎(我知道)都转换为三角形。
有人偶然知道为什么与将模型保留为四边形多边形相比,游戏引擎会转换为三角形吗?还有这样做的利弊(如果有)吗?
我曾使用Maya进行动画和更多以电影为导向的项目,但是我也专注于对视频游戏开发的研究。无论如何,我正在和一位教授谈话,我们不知道为什么所有游戏引擎(我知道)都转换为三角形。
有人偶然知道为什么与将模型保留为四边形多边形相比,游戏引擎会转换为三角形吗?还有这样做的利弊(如果有)吗?
Answers:
最重要的是三角形栅格化,这是计算机如何将对象渲染到屏幕上。尽管其他人比我更讲这句话:
我们在计算机屏幕上看到的所有3D对象实际上都是由微小的几何对象组成的,通常称为图元。四边形,三角形,n形等是图元的示例。我们将主要集中在三角形上,这主要是由于一个主要原因:每个对象都可以拆分为三角形,但是三角形不能拆分为除三角形以外的任何其他对象。因此,绘制三角形比绘制高阶多边形要简单得多。更少的事情要处理。这就是为什么这些三角形在计算机图形学中如此常用的原因。
强调我的。资料来源:http : //www.devmaster.net/articles/software-rendering/part3.php
三角形具有许多属性,使它们更容易绘制,因此绘制起来也更快。
四个点或更多点可能不在同一平面上,但是三个点始终在同一平面上(忽略退化的情况)。这具有有趣的特性,标量值在三角形的整个表面上线性变化。即使将三角形投影到屏幕上,标量值仍相对于x'/ z和y'/ z线性变化。
反过来,这意味着阴影,纹理贴图和深度滤镜所需的大部分(如果不是全部)都可以使用线性插值来计算,而该插值可以在专用硬件中快速完成。
tl; dr:三角形是最简单的图元,因此可以极大地优化处理三角形的算法。
三个点(一个三角形)始终定义一个平面。换句话说,给定任何三个点,您始终可以创建一个可以切穿所有三个点的平面。但是,这并非总是四点。您可以在一个平面上有四个点,但是也可以有四个不在平面上的点。
三角形是可描述的简单的原语中的隔离,因为它有三个点,少于其不以3D描述的表面。
因为可以孤立地考虑三角形,所以可以制作一段代码或只渲染单个三角形的硅,而这些代码或硅通过重复的力量可以渲染任何表面。
因此,第一个成功渲染“所有表面”的计算机系统自然就通过独立渲染许多三角形来实现了。
如果人们将三角形和四边形视为“基本体”(即没有上下文的完全隔离的几何位),则三角形会更原始,因此倾向于“获胜”。
但是,一旦娱乐级计算机在1980年代超过了一定水平,孤立地考虑“原语”的简单性就变得不那么重要了。如果要批量生产图形,则规模经济有利于处理相关顶点的组,就像它们有利于一次组装一百辆几乎相同的汽车一样。
这就是为什么在1980年代,电影采用“四元组”(quad)的原因,因为它是指3D空间中的2D顶点网格,而不是孤立的四边形,因此是误称。
在互动娱乐领域,还没有发生过从三角形到“四边形”的相同转变,但是很可能很快就会发生,并且出于同样的原因,它发生在电影业中。
只要三角形由三个非共线的顶点定义(读取:所有角度都不完全是Pi),那么这些顶点就定义了唯一的平面。
一个四边形当然由四个顶点定义。这些顶点极有可能是非共面的。在这种情况下,您的四边形实际上就是两个三角形,再由对角线上的对角线除。那是两个平面,两组表面法线,等等。
每个可用的建模工具,用于纹理化,照明的每种算法均假定模型由平面段组成,并且我们拥有的每个公式(用于正常计算的叉积是我们拥有的第一个)都使用绝对最小输入数据集-三个顶点定义一个平面,而该平面正是我们需要做的所有花哨的工作。
您当然可以编写一个可以使用四边形的引擎,但是您会发现自己几乎在每种情况下都忽略了第四个顶点,除非您(经常)需要确保它与定义四边形的其他三个顶点共面。并且,对于不共面的情况,最合乎逻辑的解决方案是将四边形分成两个三角形。那么,为什么不从头开始呢?
使用quad到底有什么意义呢?
如果要四边形,请将两个三角形放在一起。
如果我们假设获得4个点共面不是问题(就像其他人指出的那样,但是请耐心接受),那么您会发现渲染任意梯形(这通常是四边形的样子) (当转换为屏幕空间时)与渲染三角形没有特别的区别-实际上,执行裁剪后,效果几乎相同,因为这会引入额外的顶点。(至少在软件模型中-硬件很可能具有更简单的执行剪辑的暴力方式。)
因此,剩下的问题就是代表效率。-您可以轻松地表示具有2个三角形的四边形,并且如果使用三角形带(第1个三角形3个顶点,然后第2个三角形3个顶点),则没有任何额外的顶点。另一方面,如果尝试用四边形表示一个三角形,则需要使用4个顶点,并具有与另一个顶点相同的退化顶点。就效率而言,这不是理想的。