一种基于顶点编码的三角网格细分曲面存取方法

文档序号:9547995阅读:255来源:国知局
一种基于顶点编码的三角网格细分曲面存取方法
【技术领域】
[0001]本发明属于计算机检测技术领域,具体涉及一种基于顶点编码的三角网格细分曲面存取方法。
【背景技术】
[0002]三角形网格细分曲面被广泛应用于实体造型、影视渲染、游戏动画制作等领域。它通过对三角形进行细分,使原有网格更加平顺。但是,三角形网格细分曲面存储,通常需要保持顶点坐标和拓扑结构,随着细分层次的增加,细分曲面的单元个数呈几何级数增长,内存占用量急剧上升,最终会导致内存溢出。
[0003]目前,通常采用自适应细分的方法来降低三角形网格细分曲面内存占用量,即利用透视投影的机制,对于能够显示在视窗中的三角形单元进行细分,而不能显示的部分不做处理。由于这种方法对视觉效果没有影响,所以被广泛应用于影视渲染和游戏动画制作,但是,这种方法却不适用实体造型,因为实体造型通常需要对所有单元都要进行细分。
[0004]为此,本发明提出一种基于顶点编码的三角形网格细分曲面存取方法。本发明通过一种编码方法将不同顶点与其所在的存储位置唯一对应,提高了访存效率,同时利用编码和编码的叠加,可以确定细分曲面内的任意顶点和单元,避免了由于保存细分曲面拓扑结构而带来的内存开销,本方法广泛适用于实体造型、影视渲染和游戏动画,可以提高内存利用率60%以上。

【发明内容】

[0005]针对现有技术所存在的上述技术缺陷,本发明提供了一种基于顶点编码的三角网格细分曲面存取方法,利用一种顶点编码方法将顶点与其所在存储位置唯一对应,提高了内存利用率。
[0006]—种基于顶点编码的三角网格细分曲面存取方法,包括如下步骤:
[0007]步骤(1)对输入的待细分三角形,依据给定的最大细分层次,对待细分三角形的二个顶点进行编码;
[0008]步骤(2)对步骤(1)中的待细分三角形进行递归细分,直至达到给定的最大细分层次,且每次细分过程中,对新生成的顶点进行编码;
[0009]步骤(3)计算所有顶点编码在顶点数组中的位置,然后将每个顶点的坐标存入顶点数组中该顶点编码对应的位置。
[0010]步骤(4)依据最顶层细分曲面三个角点的编码,计算出边中心的编码,进而通过递归方式得到所有细分曲面中三角形单元的顶点编码,依据顶点编码计算出该顶点在顶点数组中的位置,然后根据计算出的位置提取顶点坐标。
[0011]所述的步骤(1)中,对输入的待细分三角形,依据给定的最大细分层次,对待细分三角形的三个顶点进行编码,具体包括如下步骤:
[0012]1-1.依据给定的最大细分层次m,计算出经过m次细分后,在待细分三角形每条边上顶点个数n,
[0013]1-2.按照顺时针顺序,用一个十进制整数对待细分三角形的三个顶点进行编码,前两位对应行号,后两位对应列号,具体的:
[0014]1-2-1.任意选取待细分三角形中的一个顶点作为起始顶点,行号列号均为1,
[0015]1-2-2.沿顺时针方向选取下一个顶点,列号为1,行号为η ;
[0016]1-2-3.沿顺时针方向选取下一个顶点,列号为η,行号为1 ;
[0017]所述的步骤(2)中,对步骤(1)中的待细分三角形进行递归细分,直至达到给定的最大细分层次,且每次细分过程中,对新生成的顶点进行编码,具体包括如下步骤:
[0018]2-1.依据细分规则,更新原有顶点坐标,并生成新的边中心点,边中心点编码等于该所在边的两个顶点编码的平均数,
[0019]2-2.重复步骤2-1,直至达到最大细分层次。
[0020]所述的步骤(3)中计算每个顶点编码在顶点数组中的位置,采用如下公式:
[0021]η+η_1+…+n_ (number/MAX-2)+number % ΜΑΧ-1 ;
[0022]其中number为顶点编码,MAX选取刚好大于η的10的整数次幂。
[0023]所述的步骤(4)中依据顶点编码计算出该顶点在顶点数组中的位置,然后根据计算出的位置提取顶点坐标,其顶点在顶点数组中的位置的计算采用如下公式:
[0024]η+η_1+…+n_ (number/MAX-2)+number % MAX-1。
[0025]所述的步骤(2)中采用Loop方法对三角形进行细分。
[0026]本发明有益效果如下:
[0027]本发明通过一种编码方法将不同顶点与其所在的存储位置唯一对应,同时利用编码和编码的叠加,可以确定细分曲面内的任意顶点和单元,避免了由于保存细分曲面拓扑结构而带来的内存开销,本方法广泛适用于实体造型、影视渲染和游戏动画,可以提高内存利用率60%以上。
【附图说明】
[0028]图1为本发明三角形网格细分曲面存取方法的步骤流程示意图;
[0029]图2 (a)为对输入的原始三角形编码;
[0030]图2 (b)为第一次细分结果;
[0031]图2(c)为第二次细分结果;
【具体实施方式】
[0032]为了更为具体地描述本发明,下面结合附图及【具体实施方式】对本发明的三角形网格细分曲面存取方法进行详细说明。
[0033]如图1所示,一种基于顶点编码的四边形网格细分曲面存取方法,包括如下步骤:
[0034]步骤(1)对输入的原始三角形,依据给定的最大细分层次,为待细分三角形的三个顶点编码,如图2(a)所示;
[0035]所述的步骤(1)中,对输入的原始三角形,依据给定的最大细分层次,为待细分的三角形三个顶点编码,包括如下步骤:
[0036]1-1.依据给定的最大细分层次m,计算出经过m次细分后,在原始三角形每条边上顶点个数η,
[0037]1-2.按照顺时针顺序,用一个十进制整数对三角形三个顶点编码,前两位对应行号,后两位对应列号,
[0038]1-2-1.任意选取三角形中的一个顶点作为起始顶点,行号列号均为1,
[0039]1-2-2.沿顺时针方向选取下一个顶点,列号为1,行号为η ;
[0040]1-2-3.沿顺时针方向选取下一个顶点,列号为η,行号为1 ;
[0041]步骤(2)对步骤(1)中的三角形进行递归细分,直至达到给定的最大细分层次,每次细分过程中,对新生成的顶点进行编码,如图2(b)所示;
[0042]采用Loop方法对三角形进行细分,对步骤(1)中的三角形进行递归细分,直至达到给定的最大细分层次,每次细分过程中,对新生成的顶点进行编码,包括如下步骤:
[0043]2-1.依据细分规则,更新原有顶点坐标,并生成新的边中心点,边中心点编码等于对应边的两个顶点编码平均数,
[0044]2-2.重复步骤2-1,直至达到最大细分层次。
[0045]步骤(3)为细分曲面所有顶点,计算顶点编码在顶点数组中的位置,如图2(c)所示;
[0046]使用公式n+n_l+...+n_(number/MAX-2)+number % MAX-1 计算顶点编码在顶点数组中的位置,其中,MAX选取刚好大于η的10的整数次幂;
[0047]步骤(4)依据最顶层细分曲面三个角点的编码,计算出边中心的编码,进而通过递归方式得到所有细分曲面顶点的编码,依据编码计算出该顶点在顶点数组中的位置。
[0048]边中心的编码等于对应边顶点的编码平均值,使用公式η+η-1+...+η-(number/MAX-2)+number% MAX-1计算顶点编码在顶点数组中的位置。
【主权项】
1.一种基于顶点编码的三角网格细分曲面存取方法,其特征在于包括如下步骤: 步骤(1)对输入的待细分三角形,依据给定的最大细分层次,对待细分三角形的三个顶点进行编码; 步骤(2)对步骤(1)中的待细分三角形进行递归细分,直至达到给定的最大细分层次,且每次细分过程中,对新生成的顶点进行编码; 步骤(3)计算所有顶点编码在顶点数组中的位置,然后将每个顶点的坐标存入顶点数组中该顶点编码对应的位置; 步骤(4)依据最顶层细分曲面三个角点的编码,计算出边中心的编码,进而通过递归方式得到所有细分曲面中三角形单元的顶点编码,依据顶点编码计算出该顶点在顶点数组中的位置,然后根据计算出的位置提取顶点坐标。2.根据权利要求1所述的基于顶点编码的三角网格细分曲面存取方法,其特征在于:所述的步骤(1)中,对输入的待细分三角形,依据给定的最大细分层次,对待细分三角形的三个顶点进行编码,具体包括如下步骤: 1-1.依据给定的最大细分层次m,计算出经过m次细分后,在待细分三角形每条边上顶点个数n, 1-2.按照顺时针顺序,用一个十进制整数对待细分三角形的三个顶点进行编码,前两位对应行号,后两位对应列号,具体的: 1-2-1.任意选取待细分三角形中的一个顶点作为起始顶点,行号列号均为1, 1-2-2.沿顺时针方向选取下一个顶点,列号为1,行号为η ; 1-2-3.沿顺时针方向选取下一个顶点,列号为η,行号为1。3.根据权利要求1所述的基于顶点编码的三角网格细分曲面存取方法,其特征在于:所述的步骤(2)中,对步骤(1)中的待细分三角形进行递归细分,直至达到给定的最大细分层次,且每次细分过程中,对新生成的顶点进行编码,具体包括如下步骤: 2-1.依据细分规则,更新原有顶点坐标,并生成新的边中心点,边中心点编码等于该所在边的两个顶点编码的平均数, 2-2.重复步骤2-1,直至达到最大细分层次。4.根据权利要求1所述的基于顶点编码的三角网格细分曲面存取方法,其特征在于:所述的步骤(3)中计算每个顶点编码在顶点数组中的位置,采用如下公式:η+η_1+…+n_ (number/MAX-2)+number % MAX-1 ; 其中number为顶点编码,MAX选取刚好大于η的10的整数次幂。5.根据权利要求1所述的基于顶点编码的三角网格细分曲面存取方法,其特征在于:所述的步骤(4)中依据顶点编码计算出该顶点在顶点数组中的位置,然后根据计算出的位置提取顶点坐标,其顶点在顶点数组中的位置的计算采用如下公式:η+η_1+…+n_ (number/MAX-2) +number % MAX-1。6.根据权利要求1所述的基于顶点编码的三角网格细分曲面存取方法,其特征在于:所述的步骤(2)中采用Loop方法对三角形进行细分。
【专利摘要】本发明公开了一种基于顶点编码的三角网格细分曲面存取方法。本发明包括如下步骤:(1)对输入的原始三角网格模型,依据给定的最大细分层次,为待细分三角形的三个顶点编码;(2)对三角形进行递归细分,直至达到给定的最大细分层次,每次细分过程中,对新生成的顶点进行编码;(3)为细分曲面所有顶点,计算顶点编码在顶点数组中的位置;(4)依据最顶层细分曲面三个角点的编码,计算出边中心的编码,进而通过递归方式得到所有细分曲面顶点的编码,依据编码计算出该顶点在顶点数组中的位置。本发明通过利用顶点编码方法,不需存储细分曲面拓扑结构,就可以实现对三角形细分曲面顶点的精确定位,极大地提高了内存利用率和存取效率。
【IPC分类】G06T19/20
【公开号】CN105303620
【申请号】CN201510895986
【发明人】杜鹏, 王毅刚, 唐敏, 张维泽, 赵杰伊
【申请人】杭州电子科技大学
【公开日】2016年2月3日
【申请日】2015年12月7日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1