一种基于顶点编码的四边形网格细分曲面存取方法
【技术领域】
[0001]本发明属于计算机检测技术领域,具体涉及一种基于顶点编码的四边形网格细分曲面存取方法。
【背景技术】
[0002]四边形网格细分曲面被广泛应用于实体造型、影视渲染、游戏动画制作等领域。它通过对四边形进行细分,使原有网格更加平顺。但是,四边形网格细分曲面存储,通常需要保持顶点坐标和拓扑结构,随着细分层次的增加,细分曲面的单元个数呈几何级数增长,内存占用量急剧上升,最终会导致内存溢出。
[0003]目前,通常采用自适应细分的方法来降低四边形网格细分曲面内存占用量,即利用透视投影的机制,对于能够显示在视窗中的四边形单元进行细分,而不能显示的部分不做处理。由于这种方法对视觉效果没有影响,所以被广泛应用于影视渲染和游戏动画制作,但是,这种方法却不适用实体造型,因为实体造型通常需要对所有单元进行细分。
[0004]为此,本发明提出一种基于顶点编码的四边形网格细分曲面存取方法,通过一种编码方法将不同顶点与其所在的存储位置唯一对应,提高了访存效率,同时利用编码的组合,可以确定细分曲面内的任意顶点和单元,避免了由于保存细分曲面拓扑结构而带来的内存开销,本方法广泛适用于实体造型、影视渲染和游戏动画,可以提高内存利用率55%以上。
【发明内容】
[0005]针对现有技术所存在的上述技术缺陷,本发明提供了一种基于顶点编码的四边形网格细分曲面存取方法,利用一种顶点编码方法将顶点与其所在存储位置唯一对应,提高了内存利用率。
[0006]一种基于顶点编码的四边形网格细分曲面存取方法,包括如下步骤:
[0007]步骤(1)对输入的待细分四边形,依据给定的最大细分层次,为待细分四边形的四个顶点编码;
[0008]步骤(2)对步骤(1)中的待细分四边形进行递归细分,直至达到给定的最大细分层次,且每次细分过程中,对新生成的顶点进行编码;
[0009]步骤(3)计算每个顶点编码在顶点数组中的位置,然后将每个顶点的坐标存入顶点数组中该顶点编码对应的位置。
[0010]步骤(4)依据最顶层细分曲面四个角点的编码,计算出边中心和面中心的编码,进而通过递归方式得到所有细分曲面中四边形单元的顶点编码,依据顶点编码计算出该顶点在顶点数组中的位置,然后根据计算出的位置提取顶点坐标。
[0011]所述的步骤(1)中对输入的待细分四边形网格模型,依据给定的最大细分层次,为待细分四边形的四个顶点编码,包括如下步骤:
[0012]1-1.依据给定的最大细分层次m,计算出经过m次细分后每行和每列的顶点个数η,
[0013]1-2.按照顺时针顺序,采用十进制整数对待细分四边形的四个顶点编码,该十进制整数的前两位对应该顶点所在列的列号,后两位对应该顶点所在行的行号,具体的:
[0014]1-2-1.任意选取待细分四边形中的一个顶点作为起始顶点,行号列号均为1,
[0015]1-2-2.沿顺时针方向选取下一个顶点,列号为1,行号为η ;
[0016]1-2-3.沿顺时针方向选取下一个顶点,行号列号均为η ;
[0017]1-2-4.沿顺时针方向选取下一个顶点,列号为η,行号为1 ;
[0018]所述的步骤(2)中,对步骤(1)中的待细分四边形进行递归细分,直至达到给定的最大细分层次,且每次细分过程中,对新生成的顶点进行编码,具体包括如下步骤:
[0019]2-1.依据细分规则,更新原有顶点坐标,并生成新的边中心点和面中心点,边中心点编码为该所在边的两个顶点编码平均数,面中心点编码为所在面对角线上顶点编码平均数;
[0020]2-2.重复步骤2-1,直至达到最大细分层次。
[0021]所述的步骤(3)中计算每个顶点编码在顶点数组中的位置,采用如下公式:
[0022](number/MAX-1) Xn+number% MAX-1 ;
[0023]其中number为顶点编码,MAX选取刚好大于η的10的整数次幂;
[0024]所述的步骤(4)中依据顶点编码计算出该顶点在顶点数组中的位置,然后根据计算出的位置提取顶点坐标,其顶点在顶点数组中的位置的计算采用如下公式:
[0025](number/MAX-1) Xn+number% MAX-1
[0026]其中number为顶点编码,MAX选取刚好大于η的10的整数倍。
[0027]所述的步骤(2)中,采用Catmull-Clark方法对四边形进行细分。
[0028]本发明有益效果如下:
[0029]本发明通过一种编码方法将不同顶点与其所在的存储位置唯一对应,同时利用编码和编码的叠加,可以确定细分曲面内的任意顶点和单元,避免了由于保存细分曲面拓扑结构而带来的内存开销,本方法广泛适用于实体造型、影视渲染和游戏动画,可以提高内存利用率55%以上。
【发明内容】
[0030]
【附图说明】
[0031]图1为本发明四边形网格细分曲面存取方法的步骤流程示意图;
[0032]图2(a)为对输入的原始四边形编码;
[0033]图2 (b)为第一次细分结果;
[0034]图2 (c)为第二次细分结果;
【具体实施方式】
[0035]为了更为具体地描述本发明,下面结合附图及【具体实施方式】对本发明的四边形网格细分曲面存取方法进行详细说明。
[0036]如图1所示,一种基于顶点编码四边形网格细分曲面存取方法,包括如下步骤:
[0037]步骤(1)对输入的原始四边形,依据给定的最大细分层次,为待细分四边形的四个顶点编码,如图2(a)所示;
[0038]对输入的原始四边形网格模型,依据给定的最大细分层次,为待细分的四边形四个顶点编码,包括如下步骤:
[0039]1-1.依据给定的最大细分层次m,计算出经过m次细分后每行和每列的顶点个数η,
[0040]1-2.按照顺时针顺序,用一个十进制整数对四边形四个顶