电脑画画也取巧?曲面细分来助阵!
- 来源:微型计算机 smarty:if $article.tag?>
- 关键字:DirectX smarty:/if?>
- 发布时间:2010-07-12 14:16
作为Windows中最为重要的组件之一,DirectX一直承担着沟通硬件和软件的桥梁作用。作为DirectX中最引人注目的Direct 3D组件。每次DirectX升级,都会为Direct 3D带来大量引人注目的新功能。这次DirectX 11也不例外。不过这些功能有什么意义,对用户来说又有什么直观的改善呢?
Direct 3D是DirectX中最为重要的组件。顾名思义,Direct 3D代表了DirectX在3D技术上的成就。对我们来说,3D技术的每一次跃进,都和Direct 3D息息相关。因此,每次DirectX的升级都会成为吸引大家重点关注Direct 3D的内容,甚至将其作为DirectX进化的象征。在DirectX 11上,Direct3D又给我们带来了很多新的内容。从本期开始,我们将分两期为大家介绍DirectX 11所具有的特别功能、该功能对游戏画质的改善和图形硬件对该功能的支持情况。首先,请跟着我们的脚步,一起来领略DirectX 11特别重要的功能:曲面细分!
从鹅卵石说起—电脑画质的困扰
有关DirectX 11的内容我们已经说了很多,其中最重要也是最显眼的功能就是曲面细分。但对不少新手来说,它仍然是一个艰深的技术。今天我们将通过大量形象的比喻让大家进一步理解什么是曲面细分。要了解曲面细分,我们就要先了解计算机是如何处理、建立曲面模型的,下面我们先来看一个例子。
自然界的很多东西都拥有复杂的表面,比如河边的石头、人的脸或者你手中的鼠标。
当然,类似于鼠标这种工业化产品,科学家们能够用标准的数学方程式来描述它,因此它可以很精确地在电脑中显示出来。不过,随处可见的石头、岩壁甚至人的脸,都是“奇形怪状”甚至“楞刺嶙峋”的,那么怎样在电脑中体现它们特殊的表面呢?
首先我们思考一下,如果电脑打算复制一个一模一样的鹅卵石应该怎么做?第一,电脑会先把鹅卵石放到一个3D坐标中,然后测量鹅卵石的基本信息,比如在鹅卵石表面每隔一定距离确定一些顶点。在测量出了足够多的顶点后,电脑会把这些顶点用直线连接起来。
电脑为什么用直线连接顶点呢?这样不会产生很多棱角吗?没错,这就是问题所在。我们要让电脑画任何线条或给出任何操作,都必须用数学方程精确地描述它。对于鹅卵石这种表面很难用规整的数学方程描述的物体,电脑无法推算它表面上的定位数据。因此最简单的方法就是在鹅卵石上取一些顶点然后用线段连接,最后形成立体网格来代表鹅卵石。
取顶点的方法会影响最后的模型效果。比如鹅卵石长宽高都是10cm,每隔1mm量取一个顶点,最后得到的电脑模型图肯定非常接近原始状态。但如果每隔1cm取一个顶点,最后得到的鹅卵石模型肯定非常粗糙。如果顶点取越多,越精细,就会获得越接近鹅卵石的电脑模型。但每隔1mm量取顶点需要大约一百万个顶点,每隔1cm量取顶点需要大约一千个顶点,两者相差一千倍。换句话说,我们得耗费大量的资源才能得到更精确的模型。
没办法再算了—电脑没那么多精力在上一节我们模仿了电脑是如何给鹅卵石建立3D模型的,在实际计算中,在不关乎材质的情况下,电脑会取出对象表面的很多特征顶点,然后用平面、直线将它们覆盖、连接起来。最后形成整个图形的框架。等待下一步的处理。可问题又出来了。打比方说在一个电脑游戏场景中,需要描述山石、树木、草地、主角、鲜花还有一些武器和怪物。电脑又会怎么做呢?有读者认为,让电脑为每个目标都建立好模型不就得了。话虽如此,但实施难度不小。还记得上一节的鹅卵石吗?
我们使用了足足一百万个顶点才能精确地描述它。试想一下,如果更复杂的山体、枝桠纵横的树木,要精确表现又需要多少个顶点呢?对于这个答案,我们可以参考一下电影计算机特效的制作过程。《阿凡达》在制造虚拟场景时,动辄花费几十亿的顶点数量,而另外一部计算机大量参与特效制作的老电影《指环王》也有上亿的顶点数量。
在3D游戏计算中,建模工作基本上是由CPU来完成的,在建模完成后GPU才会将模型顶点2D化。面对动辄上亿的计算数量,普通的桌面电脑显得无能为力。唯一的办法只有取舍—将那些看起来无关紧要的物体顶点数量降低,将主角和游戏中玩家会注意到的重点地方的顶点增加。比如像我们前文描述那样,对鹅卵石采用精度更低的1cm间隔取样,甚至干脆用一张平面贴图,降低计算难度。这样做的结果就是我们在游戏中看到的那些近似平面的屋顶、几乎没有什么褶皱的山脊和平平无奇的道路表面。
更精确、更智能—曲面细分的魅力面对问题,总需要解决办法。GPU在经过多年的发展后,成熟的曲面细分成为很多专家眼中的“香饽饽”。上文我们说过,电脑无法使用精细模型的困扰主要由以下两个问题造成:1.顶点数量不足,模型不够精确;2.电脑计算能力有限,对大量的顶点计算难以承受。曲面细分很轻松地解决了这两个问题,不需要增加建模的顶点数量,也不需要CPU付出更多计算能力。这么神奇的技术是怎么工作的呢?
我们依旧以鹅卵石来说明,比如为了降低游戏场景的建模计算量,对鹅卵石采用每隔1cm取样的方法,最后得到的鹅卵石模型棱角分明,不够精致。在这种情况下,GPU根据程序员的指令,在每一个棱角分明的平面内,通过一种特殊算法,为棱角突出的表面增加元素,比如原来有10个顶点,GPU通过自己的曲面细分单元,在这些顶点中镶嵌入更多的小顶点,这样就能够让本来突兀的平面更加平滑,鹅卵石也更圆润。
在DirectX 11的测试软件Heaven Benchmark中,我们可以看到在曲面细分启用后,电脑利用曲面细分功能添加了更多的顶点,这些新添加的顶点拥有和原来建模生成顶点几乎一样的效果,可以遮挡、反射光线、占用空间等,改善了视觉效果和图像质量。
在应用了曲面细分功能后,我们终于看到了近乎真实的游戏画面。不过软件再出色,也需要硬件支持。在对DirectX11的曲面细分支持上,不同显卡有不同的情况。究竟哪些产品对它的支持更出色呢?敬请关注我们下期的报道……
……
Direct 3D是DirectX中最为重要的组件。顾名思义,Direct 3D代表了DirectX在3D技术上的成就。对我们来说,3D技术的每一次跃进,都和Direct 3D息息相关。因此,每次DirectX的升级都会成为吸引大家重点关注Direct 3D的内容,甚至将其作为DirectX进化的象征。在DirectX 11上,Direct3D又给我们带来了很多新的内容。从本期开始,我们将分两期为大家介绍DirectX 11所具有的特别功能、该功能对游戏画质的改善和图形硬件对该功能的支持情况。首先,请跟着我们的脚步,一起来领略DirectX 11特别重要的功能:曲面细分!
从鹅卵石说起—电脑画质的困扰
有关DirectX 11的内容我们已经说了很多,其中最重要也是最显眼的功能就是曲面细分。但对不少新手来说,它仍然是一个艰深的技术。今天我们将通过大量形象的比喻让大家进一步理解什么是曲面细分。要了解曲面细分,我们就要先了解计算机是如何处理、建立曲面模型的,下面我们先来看一个例子。
自然界的很多东西都拥有复杂的表面,比如河边的石头、人的脸或者你手中的鼠标。
当然,类似于鼠标这种工业化产品,科学家们能够用标准的数学方程式来描述它,因此它可以很精确地在电脑中显示出来。不过,随处可见的石头、岩壁甚至人的脸,都是“奇形怪状”甚至“楞刺嶙峋”的,那么怎样在电脑中体现它们特殊的表面呢?
首先我们思考一下,如果电脑打算复制一个一模一样的鹅卵石应该怎么做?第一,电脑会先把鹅卵石放到一个3D坐标中,然后测量鹅卵石的基本信息,比如在鹅卵石表面每隔一定距离确定一些顶点。在测量出了足够多的顶点后,电脑会把这些顶点用直线连接起来。
电脑为什么用直线连接顶点呢?这样不会产生很多棱角吗?没错,这就是问题所在。我们要让电脑画任何线条或给出任何操作,都必须用数学方程精确地描述它。对于鹅卵石这种表面很难用规整的数学方程描述的物体,电脑无法推算它表面上的定位数据。因此最简单的方法就是在鹅卵石上取一些顶点然后用线段连接,最后形成立体网格来代表鹅卵石。
取顶点的方法会影响最后的模型效果。比如鹅卵石长宽高都是10cm,每隔1mm量取一个顶点,最后得到的电脑模型图肯定非常接近原始状态。但如果每隔1cm取一个顶点,最后得到的鹅卵石模型肯定非常粗糙。如果顶点取越多,越精细,就会获得越接近鹅卵石的电脑模型。但每隔1mm量取顶点需要大约一百万个顶点,每隔1cm量取顶点需要大约一千个顶点,两者相差一千倍。换句话说,我们得耗费大量的资源才能得到更精确的模型。
没办法再算了—电脑没那么多精力在上一节我们模仿了电脑是如何给鹅卵石建立3D模型的,在实际计算中,在不关乎材质的情况下,电脑会取出对象表面的很多特征顶点,然后用平面、直线将它们覆盖、连接起来。最后形成整个图形的框架。等待下一步的处理。可问题又出来了。打比方说在一个电脑游戏场景中,需要描述山石、树木、草地、主角、鲜花还有一些武器和怪物。电脑又会怎么做呢?有读者认为,让电脑为每个目标都建立好模型不就得了。话虽如此,但实施难度不小。还记得上一节的鹅卵石吗?
我们使用了足足一百万个顶点才能精确地描述它。试想一下,如果更复杂的山体、枝桠纵横的树木,要精确表现又需要多少个顶点呢?对于这个答案,我们可以参考一下电影计算机特效的制作过程。《阿凡达》在制造虚拟场景时,动辄花费几十亿的顶点数量,而另外一部计算机大量参与特效制作的老电影《指环王》也有上亿的顶点数量。
在3D游戏计算中,建模工作基本上是由CPU来完成的,在建模完成后GPU才会将模型顶点2D化。面对动辄上亿的计算数量,普通的桌面电脑显得无能为力。唯一的办法只有取舍—将那些看起来无关紧要的物体顶点数量降低,将主角和游戏中玩家会注意到的重点地方的顶点增加。比如像我们前文描述那样,对鹅卵石采用精度更低的1cm间隔取样,甚至干脆用一张平面贴图,降低计算难度。这样做的结果就是我们在游戏中看到的那些近似平面的屋顶、几乎没有什么褶皱的山脊和平平无奇的道路表面。
更精确、更智能—曲面细分的魅力面对问题,总需要解决办法。GPU在经过多年的发展后,成熟的曲面细分成为很多专家眼中的“香饽饽”。上文我们说过,电脑无法使用精细模型的困扰主要由以下两个问题造成:1.顶点数量不足,模型不够精确;2.电脑计算能力有限,对大量的顶点计算难以承受。曲面细分很轻松地解决了这两个问题,不需要增加建模的顶点数量,也不需要CPU付出更多计算能力。这么神奇的技术是怎么工作的呢?
我们依旧以鹅卵石来说明,比如为了降低游戏场景的建模计算量,对鹅卵石采用每隔1cm取样的方法,最后得到的鹅卵石模型棱角分明,不够精致。在这种情况下,GPU根据程序员的指令,在每一个棱角分明的平面内,通过一种特殊算法,为棱角突出的表面增加元素,比如原来有10个顶点,GPU通过自己的曲面细分单元,在这些顶点中镶嵌入更多的小顶点,这样就能够让本来突兀的平面更加平滑,鹅卵石也更圆润。
在DirectX 11的测试软件Heaven Benchmark中,我们可以看到在曲面细分启用后,电脑利用曲面细分功能添加了更多的顶点,这些新添加的顶点拥有和原来建模生成顶点几乎一样的效果,可以遮挡、反射光线、占用空间等,改善了视觉效果和图像质量。
在应用了曲面细分功能后,我们终于看到了近乎真实的游戏画面。不过软件再出色,也需要硬件支持。在对DirectX11的曲面细分支持上,不同显卡有不同的情况。究竟哪些产品对它的支持更出色呢?敬请关注我们下期的报道……
关注读览天下微信,
100万篇深度好文,
等你来看……