当前位置: 首页 > 专利查询>复旦大学专利>正文

基于样图覆盖、分割的三维纹理贴图方法技术

技术编号:2949315 阅读:258 留言:0更新日期:2012-04-11 18:40
本发明专利技术为一种基于样图覆盖、分割的三维纹理贴图方法。其步骤是:先从三维物体上按照一定的条件,选取一块表面,然后将该块表面展平、缩放,并选择新旧纹理差异度较小的块覆盖在样图上;最后使用图的分割技术对重复贴图区进行分割,使新贴上的纹理与原来的纹理结合得最连续。本发明专利技术的特点是算法简单,速度快捷,易于实现;适用于各种纹理的贴图,都能产生比较理想的效果。

【技术实现步骤摘要】

本专利技术属于计算机算法、虚拟现实
,具体涉及一种。
技术介绍
纹理贴图广泛应用于计算机图形学的各个领域,以增加三维物体的真实感。随着计算机仿真,计算机辅助设计,计算机动画等技术的广泛应用,纹理贴图技术越来越受到人们的重视。近年来,有许多研究关注于此问题,提出了许多新的方法和技术,以提高纹理贴图的质量和速度。这些研究主要集中在“基于样图的纹理贴图(texture-from-sample)技术”给定一个三维模型和一张纹理样图,然后由算法生成三维模型上的纹理。这些研究又可以大致分为两类,一类是纹理映射(texture mapping),一类是纹理合成(texture synthesis)。纹理映射最终为每个面的每个顶点生成纹理坐标。在绘制该三维模型时,表面上任意一点的颜色根据所在面的顶点的纹理坐标从样图中得到。而纹理合成最终为三维模型的每个顶点生成颜色,由所有顶点的颜色最终形成我们需要的纹理。在三维模型的绘制过程中,就不再需要此样图。显而易见,模型上顶点的密度必须足够大,以保证三维模型上的纹理能够保留样图的细节。这两类技术各有自己的优缺点纹理映射应用的范围更广,无论是粗糙的三维模型还是精细的三维模型都可以使用。但是效果一般没有纹理合成好,特别是当三维模型比较粗糙时。而纹理合成一般都有比较好的效果,但是它的三维模型必须很细密,并不适用于一般情况,比如在实时渲染中。到目前为止,在任意表面上的纹理贴图技术,无论是纹理映射还是纹理合成,都有着各种各样的缺陷有的技术适用的纹理有限,有的技术产生的效果并不太好,有的技术其速度跟纹理样图大小有关,当纹理样图较大时,速度下降得很快。而对于的纹理合成技术来说,基本上都需要比较大的时间代价。
技术实现思路
本专利技术的目的在于提出一种适用性强、时间代价小的三维纹理贴图方法。本专利技术提出的三维纹理贴图方法,是利用图的分割(Graph Cut)进行纹理贴图,该方法能够同时应用于纹理映射和纹理合成。对于一个给定的三维模型和纹理样图,可按照下面三个步骤给三维模型贴上纹理(1)从三维物体上选取一块表面(由相邻的面组成的集合)。其步骤是先在模型上选取一个还没有贴图的面,把它作为该块表面的种子面;然后,选取一个与该块相邻的面,如果该面满足下面两个条件,那么就把该面加入到块中条件1该面的法向量与种子面的法向量的夹角小于一定阀值P。通过阀值的大小可以控制该块的平坦度,从而控制纹理的形变。同时,阀值也可以控制该块的大小。在纹理贴图技术中,形变总是越小越好,因此阀值应该比较小。另一方面,块的面积应该越大越好,这样有利于后面使用图的分割来产生相邻块的无缝连接。因此,阀值要求比较大。根据实验的结果,该阀值的大小通常取在 和 之间。条件2该块的面积不能太大,必须保证经步骤(2)展平缩放后的块会超过纹理样图的大小。为此,我们必须再设置一阀值l。对于每个要加入该块的面,它的每个顶点必须满足下面的式子|| d×nseed||<l (1)其中,d是种子面中心到该顶点的向量,nseed是种子面的法向量。阀值l大小的确定,跟纹理的大小,步骤(2)中的纹理映射方法和系数有关。l的计算公式为l=λ×ts---(2)]]>其中,λ是调节系数,它控制该块的最大面积与纹理大小的关系。t是纹理的大小(这里,我们假设了纹理是长宽相等的)。s是步骤(2)中要使用到的块缩放系数。因为通常在图形系统中,纹理的大小表示为1×1。所以上面的公式又可以简化为l=λs---(3)]]>该过程一直重复,直到没有更多的面加入块中为止。这些面的集合就是我们需要的表面块。如果没有这样的块,即所有面都已经贴上纹理,那么算法结束。(2)展平和缩放。展平是把该块按其中心位置的法向量平行投影到平面上。这样该块中每个顶点在平面上都有一个对应点。然后对展平后的块进行适当的缩放。缩放的目的是使纹理中的元素以要求的大小映射到模型表面。具体是每个对应点的坐标乘上一个缩放系数s即可。s的大小,要根据模型的大小,纹理的大小和客观要求来确定。最后,把展平和缩放的块覆盖在样图上,其覆盖区域就是将要贴在该块上的纹理样图片。对于纹理映射来说,我们可以得到每个顶点的纹理坐标;对于纹理合成来说,我们可以得到每个顶点的颜色。对于某些纹理,通过简单地把展平后的块随机覆盖在样图上来选择需要的样图片,可能不会产生令人满意的效果。为此,我们可以在样图中寻找一块较好的纹理贴到该块上,使重复贴图区的新旧纹理较相似,即差异度较小。这样有利于在第三步分割中使新旧纹理产生较好的连接。估计重复贴图区的新旧纹理的差异度,可以在重复贴图区中均匀地设置一些采样点。对于每个采样点,计算在新旧纹理上的颜色。然后,差异度按如下公式计算Cost=∑||Cold_i-Cnew_i||2(4)Cold分别表示采样点i上旧纹理的颜色。相应的,Cnew分别表示采样点i上新纹理的颜色,Cost为新旧纹理的差异度。所谓选择一块差异度较小的纹理,先随机选择若干块,然后取差异度最小的;也可以遍历整个样图,寻找一块差异度最小的纹理,但是这样会产生比较大的时间代价。(3)如果该块中原来就有一部分面已经贴上了纹理,那么就使用图的分割(Graph Cut)技术对该重复贴图区进行分割,使新贴上的纹理与原来的纹理结合得最连续。然后返回第(1)步。重复贴图区中的每个面,都是新旧两个纹理。本专利技术使用图的分割(Graph Cut)技术对重复贴图区进行分割,使新旧纹理连接自然。下面进一步说明重复贴图区及其分割。把重复贴图区的每个面抽象成一个点。如果两个面相邻,那么这两个面对应的点各有一条指向对方的有向边。边上的权重是指该面上以前的纹理与另一面上新的纹理相连接时的不连续度。例如如图1所示,面a,b相邻,点a′,b′分别是a,b对应的抽象点,a′,b′间存在有向边(a′,b′)和(b′,a′)。边(a′,b′)上的权重是指面a上的旧纹理和面b上的新纹理连接的代价,即两个纹理在连接处的差异度。相应的,边(b′,a′)上的权重是指b上的旧纹理和面a上的新纹理连接的代价。此外,在图中再加上两个辅助点s和t。s是图的源点,它代表以前贴的纹理。重复贴图区中的面a,如果处于边缘且于已经贴图的面g相邻,那么有一条从s指向它的边。边上的权重即是面g上的旧纹理与a的新纹理连接的代价之和。t是图的终点,它代表新的纹理。如果重复贴图区中的面d,它处于边缘并且与第一次贴图的面h相邻,那么它有一条指向t的边。边上的权重就是面d的旧纹理与面h的新纹理连接的代价之和。边上权重的计算,可以通过在边上设置一定数目的采样点,采样点的数目正比于该边的长度。然后计算每个采样点上颜色差异的和得到。计算公式如公式(4)。这样就得到了有源点s,终点t的带权有向图。把该问题转换为图之后,求该图s-t最小割,与s分为一组的面,仍然贴以前的旧纹理,而与t分为一组的面贴新的纹理。显而易见,图s-t分割得到的分割代价,就是新旧纹理的连接代价。这样,我们为新的块贴上了纹理,并且使新旧的纹理连接的代价最小。如图2,假设虚线表示图1的最小割,那么我们得到的最后结果如右边的图所示。本专利技术具有以下的优点(1)算法比较简单,宜于实现。(本文档来自技高网
...

【技术保护点】
一种基于样图覆盖、分割的三维纹理贴图方法,其特征在于具体步骤如下:(1)从三维物体上选取一块表面,其步骤是先在模型上选取一个还没有贴图的面,把它作为该块表面的种子面;然后,选取一个与该块相邻的面,如果该面满足下面两个条件,那么就把该 面加入到块中:条件1:该面的法向量与种子面的法向量的夹角小于阀值P,p在π/6和π/3之间;条件2:该面的每个顶点满足下面的式子:‖d×n↓[seed]‖<l(1)其中,d是种子面中心到该顶点的向量,n↓ [seed]是种子面的法向量,l=λ×t/s(2)其中,λ是调节系数,t是纹理的大小,s是步骤(2)中要使用到的块缩放系数;该过程一直重复,直到没有更多的面加入块中为止;(2)展平和缩放,其步骤是先把该块 按其中心位置的法向量平行投影到平面上,然后对展平后的块的每个对应点的坐标乘上一个缩放系数s;最后,把展平和缩放的块覆盖在样图上,其覆盖区域就是将要贴在该块上的纹理样图片;(3)如果该块中原来就有一部分面已经贴上了纹理,那么就使用图的 分割技术对该重复贴图区进行分割,使新贴上的纹理与原来的纹理结合得最连续,然后返回第(1)步。...

【技术特征摘要】

【专利技术属性】
技术研发人员:沈一帆
申请(专利权)人:复旦大学
类型:发明
国别省市:31[中国|上海]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1