电脑图形学中,顶点是存储一系列基本绘图所需属性的基本元素,例如二维或三维空间中的点、或曲面上的多个点。在着色器中,与顶点相连的元素称为图元,图元内部应上色的区域称为片段,顶点的集合称为顶点组或顶点数组。[1]而在OpenGL中,顶点默认会包含位置、法向量、颜色、第二色彩、纹理座标等属性[2],而其可以透过着色器编程添加更多属性。

Thumb
图中的顶点包含了颜色信息,分别为红、绿、蓝,通过渲染流程后会输出一个渐变色彩的三角形。

与几何学的关系

电脑图形学中,三维模型通常会表示为以三角形构成的多面体,其中,顶点所包含的信息不像几何学中只含有座标信息,而会额外地包含其渲染所需的信息,如颜色、反射特性、纹理和表面法线等[3]。电脑图形学中的顶点同样可以如同几何学构造与顶点相连的边,然而多边形并非由多个边组成的封闭结构,而是多个顶点依序围出的结构,并构成面,而以上组合在电脑图形学中有一个专有名词,称为图元。

应用于三维模型

Thumb
图中右侧可以理解为使用原始顶点信息绘制出的斯坦福兔子图象,而左侧是透过顶点所提供的渲染信息内插产生的结果

在电脑图形学中,一般的三维模型通常可以通过曲面细分将非三角形曲面转换为三角形数组。而三维模型通常是透过在图元上依据顶点性质内插出资料以渲染出最后的立体。[4]

顶点属性

在电脑图形学中,三角形多边形的顶点不仅与空间位置相关系,而且也需要提供正确渲染对象所需的其他值或关系信息。这些信息称为顶点属性(Vertex attributes)。顶点的大多数属性表示渲染所需的空间向量。这些向量通常可能是一维(x)、二维(x,y)或三维(x,y,z)的向量,并会包含一个齐次座标的维度(w)。这些值通常可以代表要绘制的对象之材质(material)的描述。这些数据通常会在顶点着色器或顶点处理流程中被使用。[4]

常见的顶点属性包括:

顶点位置
对应到二维或三维空间的顶点位置信息[2]
顶点颜色
通常为镜面反射或漫反射的颜色值,表示物体的表面颜色或预先计算的照明信息。一般以RGB色彩空间表示。[2]
反射率
例如顶点所处表面的镜面指数、金属度、菲涅耳值等信息。[5]
纹理座标
用于决定如何将纹理正确渲染所需的座标值。[2]
法向量
法向量可以用于定义了顶点位置处近似曲面[6][7],用于光照计算(例如Phong着色法[8][9]、法线贴图、位移贴图以及控制曲面细分。[2]
切线向量
与法向量垂直的向量,用于部分的法线贴图、位移贴图以及控制曲面细分。[10]
骨架权重
存储用于绘制骨骼动画所需的信息。[11]

用途

顶点包含的资料通常是提供渲染对象所需。在早期版本的OpenGL中,顶点能包含的资料种类是固定的,并且要在起始函数的调用以及终止函数的调用之间依序传入每个顶点的资料,在OpenGL 1.0中起始函数为glBegin、终止函数为glEnd[12]。最初电脑图形学中的顶点定义与几何学类似,只包含空间位置信息,并且要透过glVertex传入资料[13]。颜色参数是额外的一个状态变量,指定一次后后续会沿用先前最后一次给定的颜色[14]。关于其他的顶点属性则是要在每个顶点定义glVertex之前给出[15]。而后来出现了着色器的概念[16],使得顶点定义能够直接被程序开发人员决定。顶点的各项属性被依序存入缓冲器中,并且输入到顶点着色器中,顶点着色器中定义的每一个被标记为attribute的变量都是一个顶点的属性,透过定制这些属性可以让一些较复杂的算法跟随渲染流程一同完成,例如等值立方搜索算法英语Marching cubes[17]

参见

参考文献

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.