#1 楼
对于3D建模,选择四边形的通常原因是细分曲面算法可以更好地与它们配合使用-如果细分网格,则三角形可能会导致生成曲面的曲率出现问题。例如,看一下这两个方框:左边的都是四边形;右侧的整体形状相同,但是一个角由三角形而不是正方形组成。
现在看看将箱子细分时会发生什么: >
不同,是吗?请注意,边沿循环的方式已从左侧的等距大致变为等距的右侧,变得更加复杂,挤压和拉伸。现在让我们关闭线框,看看它如何发光。这是由混乱的细分造成的。这是一个非常好的例子,但是您可以使用细分级别更高的更复杂的网格(如您通常在电影中使用的网格)来获得看起来更混乱的结果。
如果您打算细分游戏资产,那么所有这些仍然适用于制作游戏资产,但主要区别在于细分是提前进行的,即您仍在四方游戏中,最后被细分的结果变成三角形,因为这就是图形硬件所说的(因为,如上面的注释所述,它使数学变得更容易)。
#2 楼
正如@Noah Witherspoon所说的那样,三角形细分的效果不如四边形细分好。虽然在开始时三角形是不能再细分的。但是,他并没有真正解释为什么会这样。这是有用的信息,并解释了为什么首选四边形以及如何使用它们。首先,请注意,在许多方案中,三角形确实细分为3个四边形。由于您现在拥有一个全四面体网格,因此显然并不需要保留所有四面体的细分。除了四边形之外,还有其他更深层的原因。原因在于所谓的边缘循环。进行建模的人必须预见细分将如何发生,因为细分将成为最终形状。不幸的是,人类只能真正擅长沿原始图元边缘的边缘来解密对象的形状。通过将形状表示为连续的多边长环,可以帮助我们预测细分后的形状,尤其是在骨骼等变形之后的形状。具有该形状的内部和外部形状。因此,细分后的网格具有无法控制的行为趋势,从而导致不希望的颠簸。注意:可以用不发生这种情况的方式细分三角形,因为三角形的使用更加困难,并且使用四边形是众所周知的。现在,这实际上不是最初的原因,只是它以回旋的方式发生了。他们确实使用的几何补丁用作参数图元的原始原因是正方形。如果将线延伸到曲面中,则将其自然地延伸为正方形。具有三角形会使一个边缘退化并具有奇异性。但这与细分原因密切相关,因为可以证明细分表面只是样条斑块的一般情况。图像2:原始参数曲面是曲线的扩展,而不是任意网格,这些形状自然倾向于是正方形。
#3 楼
我看到大多数人忘记的一件事是电影制作,而这主要是关于质量而不是速度。这是因为电影制作更关注离线渲染,因为离线渲染在视频游戏中是全实时的,因此性能/速度比质量更为重要。 “近似”或“伪造”真实外观的最佳方法。当涉及到不同的计算和速度三角形时,三角形比多边形要容易得多。就像提到的@ratchet freak一样,这三个点都是共面的,它简化了交点和其他计算。这是在视频游戏中使用三角形的主要原因之一。在电影制作中,渲染一帧可能需要数小时甚至数天,因此速度并不是什么大问题。诺亚说的是正确的,我也想分享这一观点。
#4 楼
我知道这很旧,但是游戏引擎/图形卡以“三角形”运行,因为这是它们计算网格的方式。他们不以四边形计算网格。这是为了使上述所有功能都可以在3D建模中发生而创建的。所有四边形都是“引擎”中的两个三角形。它们以这种方式传播,使您可以有效地使用它们。本质上,所有引擎都在最终过程中进行三角剖分。这里的第一个答案正确地解释了它:https://gamedev.stackexchange.com/questions/66312/quads-vs-triangles/66314#66314评论
$ \ begingroup $
对我来说,答案的第一部分有点像“他们之所以这样做,是因为他们这样做了”。从您提供的链接中,我可以看到您打算说的话(在计算上更有效),但是也许您应该再澄清一点。
$ \ endgroup $
–wychmaster♦
20-05-28在6:56
#5 楼
甚至电影/动画速度也是3D内容创建团队和工作室试图提高的速度。当然,如果输出更好,他们不介意每分钟增加几分钟,而在FPS速率降至可接受水平以下之前,游戏可以为图形处理增加很多,我认为这与您要提出的观点相吻合。 >尽管如此,但这并不是影片/动画以四边形工作的原因。创建圆形和有机形状时,使用四边形更容易。最后,实际上是在渲染时进行了三角剖分。渲染器仅针对每个四角形从相对的角创建一条新线,以将四角形切割为2个三角形。您的模型不会发生这种情况,但是会将数据流传输到渲染器。原因是,如果您的四边形的4个点不是共面的,并且在许多模型中,在更大比例的四边形上,它们将不会共面,那么您将具有非流形几何形状。面积的计算基本上是不确定的。如果将四边形切成两个三边形,则可以解决此问题,因为任何3个点始终是共面的。边的点和线性方程。如果将一个点从平面上移开,形成一个非共面的曲面,则现在有两个平面,而不是一个平面,因此仍然要计算原始曲面的唯一方法是对原始矩形平面的2个三角形平面进行计算。现在也许这只是在Maya中,但我认为它的数学原理因而具有普遍性。 Renderman很好地创建的微多边形可能会使用可用于非共面表面的方法。我对Renderman不太了解。有人告诉我,即使不对网格进行三角剖分,最终所有内容都会变成三角形,因为渲染引擎(有些甚至不是全部)需要共面的曲面。https://knowledge.autodesk.com/support/maya-lt/learn-explore/caas/CloudHelp/cloudhelp/2015/ENU/MayaLT/files/Polygons-overview-Planar-and-nonplanar-polygons-htm.html
评论
$ \ begingroup $
不必将其三角剖分。最臭名昭著的渲染器在1990年代末和2000年代初没有将四边形变成三角形。获得不错的2倍速度提升。但是他们现在就这样做了,因为它们是射线追踪,那时还没有。
$ \ endgroup $
– joojaa
20-5-16在11:03
$ \ begingroup $
您能提供不使用三角形的文档吗?据我所知,您必须对任何非共面四边形进行三角剖分。即使共面四边形的一个点垂直于该平面移动,该曲面也已弯曲,从而创建了两个平面。然后,您必须计算每个平面,该平面由4个四边形中的3个构成(因此,如果点B在四角形ABCD上移动,则将创建三角形ABC和CDA,其中线AC为斜边)。因此,最终得到1个非共面四边形计算,然后变成2个三角形计算。但是也许皮克斯的方法与线性方程式不同?
$ \ endgroup $
– AggieVizzer2015
20年5月16日在19:57
$ \ begingroup $
另外,不必进行三角剖分,也并不是要手动对模型网格进行三角剖分,而是Renderman在后台进行。甚至现代的游戏引擎都在后台执行此操作,因此您可以将带有四边形的网格导入虚幻引擎的原因。
$ \ endgroup $
– AggieVizzer2015
20年5月16日在20:03
$ \ begingroup $
我认为他们没有按照您的想法计算交点。他们将骰子切成小块,因此仅对面向屏幕的微切块表面的顶点进行采样。底层表面是一个小节或样条曲线,可以保证以其他方式具有交点。对于该图元而言,无论表面是否平坦,无论如何都是不弯曲的,但对于屏幕而言则无关紧要。其四边形的唯一原因是获得曲面和屏幕空间插值的导数。要点是,当我说tgis是它的工作方式时,我会非常小心。
$ \ endgroup $
– joojaa
20-5-16在20:15
$ \ begingroup $
也许有趣的是,最初是计算机图形学专家试图进行解析求解。它们并非以尽可能简单的离散形状为前提。但是正在寻找更高阶的东西。直到后来我们才开始执行此操作,因为我们需要专用的硅。软件渲染器不需要遵循此类规则。现代硬件也不做,但是我们通常这样做是因为我们今天对工作流程了解得很好。如果您可以找到旧的渲染器手册,请在此处明确说明
$ \ endgroup $
– joojaa
20-5-16在20:23
评论
三角形在数学上更简单。所有3个点都是共面的,因此内的所有点都在同一平面上,这使得插值更加简单。对于四边形,除非与LoD有关,否则我不知道为什么要选择它。@ratchetfreak如果开始形成参数曲线,然后将其扩展为平面定义,则最终会得到具有四边形拓扑的对象,现在随着时间的推移,仍然存在相同的问题。