预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共23页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号CN106887042A(43)申请公布日2017.06.23(21)申请号201710058646.9(22)申请日2017.01.23(71)申请人北京工业大学地址100124北京市朝阳区平乐园100号(72)发明人何震震肖创柏禹晶(74)专利代理机构北京思海天达知识产权代理有限公司11203代理人刘萍(51)Int.Cl.G06T17/30(2006.01)权利要求书3页说明书9页附图10页(54)发明名称基于GPU的自适应曲面细分方法(57)摘要基于GPU的自适应曲面细分方法涉及计算机图形学领域。现存的细分方法,随着细分的进行,顶点和边的数量会急剧增加,实际情况是,在细分迭代数次后,某些区域(如较平坦部分或者初始控制网格较稠密的部分)其控制网格已较好地逼近极限细分曲面,而在另外一些区域(如曲率变化较大的部分)其控制网格还比较粗糙,需要继续细分。为了减少不必要的计算资源的浪费,自适应的曲面细分算法就很重要了。本发明有效的解决曲面光滑度和数据量之间的矛盾,使得在保证曲面细分显示效果的前提下提高渲染帧率。采取了两种基于三角形面片的细分模式:PN三角形和Phong细分进行验证,实验证明,基于GPU的自适应曲面细分方法具有很好的现实和理论意义。CN106887042ACN106887042A权利要求书1/3页1.基于GPU的自适应曲面细分方法;其特征在于,在计算机中是依次按以下步骤实现的:步骤(1),Directx11初始化步骤(2),读取网格模型数据与初始化顶点缓存:在Directx11中集成了曲面细分管线,在GPU中实现PN三角形细分策略时,对于每一个三角形面片,由三个控制点生成一个有10个控制点的3阶贝塞尔三角形;在GPU中实现Phong细分算法时,对于每一个三角形面片,需要知道每个顶点的法向量;在自定义顶点结构中定义顶点的相关属性,PN三角形细分策略与Phong细分策略顶点格式相同,都包含一个坐标信息和法向量信息;步骤(3),创建顶点布局:在自定义顶点结构中定义顶点的相关属性,PN三角形细分策略与Phong细分策略顶点格式相同,都包含一个坐标信息和法向量信息;步骤(4),网格渲染:设置InputAssembler的图元拓扑类型,使其接收的是控制面片的结构,用IASetPrimitiveTopology设置D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST,使得GPU以面片的方式读取顶点缓存;步骤(5),自适应曲面细分:准备好顶点缓冲后,在GPU中实现曲面细分算法,GPU以D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST组装方式对输入的顶点缓冲进行读取;在Directx11中,曲面细分阶段分为三个管线,分别为Hull着色阶段,Tessellator阶段以及Domain着色阶段;其中,Hull着色阶段由两部分构成,分别对应两个不同的hlsl程序,分别为Hull着色阶段和patch静态函数;在patch静态函数中决定了曲面片的细分程度,从而告知Tessellator阶段要细分出多少顶点;第一步:在patch静态函数中,进行自适应曲面细分算法的实现;自适应策略包括:背部剔除、距离自适应、垂直面自适应及面片大小自适应;计算出面片的细分因子后,需要进行裂缝消除;背部剔除:在进行计算细分因子之前,先做背部剔除测试,对于没有通过背部剔除测试的面片,只需要把该面片的每一条边的曲面细分因子置为0,那么渲染管线将不再渲染该面片;对于一个给定的三角形面片,对于每一条边,计算公式如下:其中edgedot为点积结果,Nj,Nk表示三角形面片中任意两个顶点的组合,V为视向量;对于左手坐标系,若该结果为负值,说明该面片的这条边为背向;当一个面片的三条边都为背向时说明该面片为背向;距离自适应:基于距离自适应的细分因子计算公式如下:Factor1=1-(Dis-minDis)/disFrange其中,Dis表示视点与面片边中点的距离,minDis表示使用最大细分因子的最小距离;2CN106887042A权利要求书2/3页disFrange表示近平面与远平面之间的距离,Factor1为使用距离自适应策略得到的调节因子;得到的Factor1的值位于[0,1]之间;得到调节因子后,使用线性差值公式:x1=1+Factor*(x-1)其中,x1为使用距离自适应策略调解后的细分因子大小,x为初始细分因子大小;垂直面自适应:对于每一个面片处理如下:其中edgedot为点积结果,Nj,Nk表示三角形面片中任意两个顶点的组合,V为视向量;其中edgedot为归一化后的两个向量之间的乘积;根据公式:F