CN106887042B - 基于gpu的自适应曲面细分方法 - Google Patents

基于gpu的自适应曲面细分方法 Download PDF

Info

Publication number
CN106887042B
CN106887042B CN201710058646.9A CN201710058646A CN106887042B CN 106887042 B CN106887042 B CN 106887042B CN 201710058646 A CN201710058646 A CN 201710058646A CN 106887042 B CN106887042 B CN 106887042B
Authority
CN
China
Prior art keywords
subdivision
patch
triangle
strategy
factor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710058646.9A
Other languages
English (en)
Other versions
CN106887042A (zh
Inventor
何震震
肖创柏
禹晶
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing University of Technology
Original Assignee
Beijing University of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing University of Technology filed Critical Beijing University of Technology
Priority to CN201710058646.9A priority Critical patent/CN106887042B/zh
Publication of CN106887042A publication Critical patent/CN106887042A/zh
Application granted granted Critical
Publication of CN106887042B publication Critical patent/CN106887042B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/30Polynomial surface description

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Algebra (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Abstract

基于GPU的自适应曲面细分方法涉及计算机图形学领域。现存的细分方法,随着细分的进行,顶点和边的数量会急剧增加,实际情况是,在细分迭代数次后,某些区域(如较平坦部分或者初始控制网格较稠密的部分)其控制网格已较好地逼近极限细分曲面,而在另外一些区域(如曲率变化较大的部分)其控制网格还比较粗糙,需要继续细分。为了减少不必要的计算资源的浪费,自适应的曲面细分算法就很重要了。本发明有效的解决曲面光滑度和数据量之间的矛盾,使得在保证曲面细分显示效果的前提下提高渲染帧率。采取了两种基于三角形面片的细分模式:PN三角形和Phong细分进行验证,实验证明,基于GPU的自适应曲面细分方法具有很好的现实和理论意义。

Description

基于GPU的自适应曲面细分方法
技术领域
本发明属于计算机图形学领域,涉及一种基于GPU的自适应曲面细分方法。
背景技术
随着现代工业的发展,计算机辅助与制造发展迅速,其技术水平的发展已成为一个国家现代化水平的重要标志。其中计算机辅助几何设计(Computer Aided GeometricDesign简称为CAGD)是对外形方面的几何信息的计算机表示,现在已经是计算机应用学科的一个重要分支。
由于计算机离散化表示数据,计算机不能直接生成曲线,当然更不能直接生成曲面。我们在计算机屏幕上看到的曲线、曲面实际上是由无数个多边形构成的。当然多边形越多,那么曲面就会展现的更为真实。要得到精细的效果,需要提供包含大量控制点的实体模型,称之为高模模型,但这给模型设计带来了大量的工作量,提高了人力成本。
曲面细分技术,是一种化繁为简的手段,在模型已有的表面上细分出顶点,逐步逼近理想曲面。1978年Edwin Catmull和Jim Clark提出经典的Catmull-Clark曲面细分算法,由于该算法的递归特性不适用于GPU编程,基于三角形的Loop细分算法也不适用GPU编程。近些年一大批适用于GPU编程的曲面细分算法被提出,比如:2008年CHARLES LOOP和SCOTTSCHAEFER两人于2008年提出了一种近似Catmull-Clark细分面的算法、同年TamyBoubekeur提出的Phong细分算法。由于细分曲面的顶点和面数以指数速度增长,绘制速度会随细分深度增加而迅速降低,所以在GPU技术出现之前细分曲面技术难以实用,直到由ATI公司基于GPU开发应用了曲面细分之后,曲面细分技术得以在工业设计、计算机动画和雕塑曲面等的设计加工中被广泛应用和研究。
现存的细分方法,随着细分的进行,顶点和边的数量会急剧增加,所以对庞大复杂的网格模型进行细分时,将耗费大量的存储资源和运算资源。同时对后续的显示、传输或者数控加工编程增加负担。而实际情况是,在细分迭代数次后,某些区域(如较平坦部分或者初始控制网格较稠密的部分)其控制网格已较好地逼近极限细分曲面,而在另外一些区域(如曲率变化较大的部分)其控制网格还比较粗糙,需要继续细分。为了减少不必要的计算资源的浪费,自适应的曲面细分算法就很重要了。根据给定的局部细分准则,对整个控制网格上进行局部细分,力求以规模较小的网格来表示精度较高的细分曲面,这对于扩大细分曲面的应用具有重要的工程意义。
基于以上背景,基于GPU的自适应曲面细分方法提出了一种自适应策略,将有效的解决曲面光滑度和数据量之间的矛盾,使得在保证曲面细分显示效果的前提下提高渲染帧率。采取了两种基于三角形面片的细分模式:PN三角形和Phong细分进行验证,实验证明,基于GPU的自适应曲面细分方法具有很好的现实和理论意义。
发明内容
发明目的:以有效的解决曲面光滑度和数据量之间的矛盾,使得在提高显示效果的前提下提高渲染帧率。
本发明包括:至少支持Directx11的GPU。
基于GPU的自适应曲面细分方法;其特征在于,在计算机中是依次按以下步骤实现的:
步骤(1),Directx11初始化
具体包括:
1、设置输入布局,添加POSITION和NORMAL两个顶点语义。
2、设置常量缓冲区,与GPU中HLSL常量缓冲区对应
步骤(2),读取网格模型数据与初始化顶点缓存:
在Directx11中集成了曲面细分管线,在GPU中实现PN三角形细分策略时,对于每一个三角形面片,由三个控制点生成一个有10个控制点的3阶贝塞尔三角形。在GPU中实现Phong细分算法时,对于每一个三角形面片,需要知道每个顶点的法向量。在自定义顶点结构中定义顶点的相关属性,PN三角形细分策略与Phong细分策略顶点格式相同,都包含一个坐标信息和法向量信息。
步骤(3),创建顶点布局:
在自定义顶点结构中定义顶点的相关属性,PN三角形细分策略与Phong细分策略顶点格式相同,都包含一个坐标信息和法向量信息。
步骤(4),网格渲染:
为了能启用Directx11的细分阶段,设置Input Assembler的图元拓扑类型,使其接收的是控制面片的结构,用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,那么渲染管线将不再渲染该面片。对于一个给定的三角形面片,对于每一条边,计算公式如下:
Figure DEST_PATH_GDA0001273838480000031
其中edgedot为点积结果,Nj,Nk表示三角形面片中任意两个顶点的组合,V为视向量。对于左手坐标系,若该结果为负值,说明该面片的这条边为背向。当一个面片的三条边都为背向时说明该面片为背向。
距离自适应:
基于距离自适应的细分因子计算公式如下:
Factor1=1-(Dis-minDis)/disFrange
其中,Dis表示视点与面片边中点的距离,minDis表示使用最大细分因子的最小距离。disFrange表示近平面与远平面之间的距离,Factor1为使用距离自适应策略得到的调节因子这两个参数大小用户可以设定,对于不同的物体模型,取值不同。最终可以得到的Factor1的值位于[0,1]之间。
得到调节因子后,使用线性差值公式:
x1=1+Factor*(x-1)
其中,x1为使用距离自适应策略调解后的细分因子大小,x为初始细分因子大小。垂直面自适应:
一个面片如果与视线方向保持近似垂直时,由于3D场景在2D屏幕上显示时需要进行投影,对于这样的面片进行细分视觉效果变化不大,因此适当减小细分因子。对于每一个面片处理如下:
Figure DEST_PATH_GDA0001273838480000041
其中edgedot为点积结果,Nj,Nk表示三角形面片中任意两个顶点的组合,V为视向量。其中edgedot为归一化后的两个向量之间的乘积。
根据公式:
Factor2=1-|edgedot|
同样使用线性插值公式:
x2=1+Factor2*(x1-1)
其中,Factor2为使用垂直面自适应策略得到的调节因子。x2为经过垂直面自适应策略调解后得到的细分因子大小,x1使用距离自适应策略调解后的细分因子大小面片大小自适应:
对于模型中的面片首先根据面片的每一条边进行细分因子的动态计算。对于一个给定的面片,计算公式如下:
Figure DEST_PATH_GDA0001273838480000042
其中,P1,P2表示三角形面片的任意两点。D表示用户给定的距离大小。Factor3为求得的调节因子。
得到调节因子Factor3后,同样使用线性差值公式:
x3=1+Factor3*(x2-1)
其中,x3为面片大小自适应策略调解后的细分因子大小,x2为经过垂直面自适应策略调解后得到的细分因子大小
裂缝消除:
对于相邻三角形的相邻边,设置该边的细分因子为相邻三角形中最大的细分因子。
Figure DEST_PATH_GDA0001273838480000051
三角形ABC,与三角形ACD相邻,AC为共享边,XAC表示边AC的细分因子大小。
Figure DEST_PATH_GDA0001273838480000052
为三角形ABC中AC边的细分因子大小,
Figure DEST_PATH_GDA0001273838480000053
为三角形ACD边AC边的细分因子大小。
第二步:hull着色程序,对每个输出控制点执行一次,设置细分domain为三角形,输出控制点的数量为3,并指定patch函数为第二步中的patch函数。
第三步:domain着色程序,在该程序中分别实现了PN三角形细分策略及Phong细分策略。
使用PN三角形细分策略时,对于给定u,v,w,u+v+w=1,使用三阶贝塞尔三角形公式:
Figure DEST_PATH_GDA0001273838480000054
求出细分得到的顶点的三维坐标。
使用二阶贝塞尔三角形公式得到各个顶点的法向量。公式如下:
Figure DEST_PATH_GDA0001273838480000055
对于给定的uvw坐标,求出顶点的法向量。
使用Phong细分模式时,三角形面片的控制点为:pl,pm和pn,各个顶点对应的法向量分别为nl,nm和nn。对于给定的uvw坐标,使用以下公式:
Figure DEST_PATH_GDA0001273838480000056
其中,
p(u,v,w)=pl*u+pm*v+pn*w
令q=p(u,v,w),那么:
πl(p(u,v,w))=πl(q)=q-((q-pl)Tnl)nl
πm(p(u,v,w))=πm(q)=q-((q-pm)Tnm)nm
πn(p(u,v,w))=πn(q)=q-((q-pn)Tnn)nn
T表示转置;
即可求出细分得到的顶点的三维坐标。
本发明使用Directxll编程工具,基于距离自适应、垂直面自适应、面片大小自适应及背部剔除四种自适应策略,实现了曲面细分的自适应方法。对于每个面片,基于四种策略做细分因子的计算,因此可以动态的根据不同的三角形面片的特征调整每个三角形面片的细分因子大小。从而有效的解决了曲面光滑度与数据量之间的矛盾。
附图说明
图1为物体模型的网格图
图2为模型在细分因子为9是的网格图
图3为模型结果俯视图
图4为模型在细分因子为9时的渲染结果俯视图
图5为模型在细分因子为9时的使用面片大小自适应策略的渲染结果俯视图
图6为模型在细分因子为9时的使用距离自适应策略的渲染结果俯视图
图7为模型在细分因子为9时的使用垂直面自适应策略的渲染结果俯视图
图8为模型在细分因子为9时的使用面片大小自适应策略的渲染结果图
图9为模型在细分因子为9时的使用距离自适应策略的渲染结果图
图10为模型在细分因子为9时的使用垂直面自适应策略的渲染结果图
图11为模型在细分因子为9时的使用背部剔除测试的渲染结果图
图12为为模型在细分因子为9时,未使用自适应策略渲染结果图
图13为基于GPU的自适应曲面细分方法的总体流程图
图14为在计算细分因子时使用自适应策略流程图
图15为相同边由于不同大小的细分因子导致的裂缝的效果图
图16为使用裂缝消除策略后的效果图
具体实施方式
下面结合附图对本发明做进一步的说明。
图13,14是本发明的流程图,在计算机中按如下步骤进行:
1、基于GPU的自适应曲面细分方法;其特征在于,在计算机中是依次按以下步骤实现的:
步骤(1),Directx11初始化
具体包括:
3、设置输入布局,添加POSITION和NORMAL两个顶点语义。
4、设置常量缓冲区,与GPU中HLSL常量缓冲区对应
步骤(2),读取网格模型数据与初始化顶点缓存:
在Directx11中集成了曲面细分管线,在GPU中实现PN三角形细分策略时,对于每一个三角形面片,由三个控制点生成一个有10个控制点的3阶贝塞尔三角形。在GPU中实现Phong细分算法时,对于每一个三角形面片,需要知道每个顶点的法向量。在自定义顶点结构中定义顶点的相关属性,PN三角形细分策略与Phong细分策略顶点格式相同,都包含一个坐标信息和法向量信息。
步骤(3),创建顶点布局:
在自定义顶点结构中定义顶点的相关属性,PN三角形细分策略与Phong细分策略顶点格式相同,都包含一个坐标信息和法向量信息。
步骤(4),网格渲染:
为了能启用Directx11的细分阶段,设置Input Assembler的图元拓扑类型,使其接收的是控制面片的结构,用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,那么渲染管线将不再渲染该面片。对于一个给定的三角形面片,对于每一条边,计算公式如下:
Figure DEST_PATH_GDA0001273838480000081
其中edgedot为点积结果,Nj,Nk表示三角形面片中任意两个顶点的组合,V为视向量。对于左手坐标系,若该结果为负值,说明该面片的这条边为背向。当一个面片的三条边都为背向时说明该面片为背向。
距离自适应:
基于距离自适应的细分因子计算公式如下:
Factor1=1-(Dis-minDis)/disFrange
其中,Dis表示视点与面片边中点的距离,minDis表示使用最大细分因子的最小距离。disFrange表示近平面与远平面之间的距离,Factor1为使用距离自适应策略得到的调节因子这两个参数大小用户可以设定,对于不同的物体模型,取值不同。最终可以得到的Factor1的值位于[0,1]之间。
得到调节因子后,使用线性差值公式:
x1=1+Factor*(x-1)
其中,x1为使用距离自适应策略调解后的细分因子大小,x为初始细分因子大小。垂直面自适应:
一个面片如果与视线方向保持近似垂直时,由于3D场景在2D屏幕上显示时需要进行投影,对于这样的面片进行细分视觉效果变化不大,因此适当减小细分因子。对于每一个面片处理如下:
Figure DEST_PATH_GDA0001273838480000082
其中edgedot为点积结果,Nj,Nk表示三角形面片中任意两个顶点的组合,V为视向量。其中edgedot为归一化后的两个向量之间的乘积。
根据公式:
Factor2=1-|edgedot|
同样使用线性插值公式:
x2=1+Factor2*(x1-1)
其中,Factor2为使用垂直面自适应策略得到的调节因子。x2为经过垂直面自适应策略调解后得到的细分因子大小,x1使用距离自适应策略调解后的细分因子大小面片大小自适应:
对于模型中的面片首先根据面片的每一条边进行细分因子的动态计算。对于一个给定的面片,计算公式如下:
Figure DEST_PATH_GDA0001273838480000091
其中,P1,P2表示三角形面片的任意两点。D表示用户给定的距离大小。Factor3为求得的调节因子。
得到调节因子Factor3后,同样使用线性差值公式:
x3=1+Factor3*(x2-1)
其中,x3为面片大小自适应策略调解后的细分因子大小,x2为经过垂直面自适应策略调解后得到的细分因子大小
裂缝消除:
对于相邻三角形的相邻边,设置该边的细分因子为相邻三角形中最大的细分因子。
Figure DEST_PATH_GDA0001273838480000092
三角形ABC,与三角形ACD相邻,AC为共享边,XAC表示边AC的细分因子大小。
Figure DEST_PATH_GDA0001273838480000093
为三角形ABC中AC边的细分因子大小,
Figure DEST_PATH_GDA0001273838480000094
为三角形ACD边AC边的细分因子大小。
第二步:hull着色程序,对每个输出控制点执行一次,设置细分domain为三角形,输出控制点的数量为3,并指定patch函数为第二步中的patch函数。
第三步:domain着色程序,在该程序中分别实现了PN三角形细分策略及Phong细分策略。
使用PN三角形细分策略时,对于给定u,v,w,u+v+w=1,使用三阶贝塞尔三角形公式:
Figure DEST_PATH_GDA0001273838480000101
求出细分得到的顶点的三维坐标。
使用二阶贝塞尔三角形公式得到各个顶点的法向量。公式如下:
Figure DEST_PATH_GDA0001273838480000102
对于给定的uvw坐标,求出顶点的法向量。
使用Phong细分模式时,三角形面片的控制点为:pl,pm和pn,各个顶点对应的法向量分别为nl,nm和nn。对于给定的uvw坐标,使用以下公式:
Figure DEST_PATH_GDA0001273838480000103
其中,
p(u,v,w)=pl*u+pm*v+pn*w
令q=p(u,v,w),那么:
πl(p(u,v,w))=πl(q)=q-((q-pl)Tnl)nl
πm(p(u,v,w))=πm(q)=q-((q-pm)Tnm)nm
πn(p(u,v,w))=πn(q)=q-((q-pn)Tnn)nn
T表示转置;
即可求出细分得到的顶点的三维坐标。
经过以上步骤后,实现了基于GPU的自适应曲面细分方法,图2展示了物体模型在进行曲面细分后的显示效果,与图1相比,可以看出在原有的控制点的基础上,新生成了大量的新的控制点。图4与图3相比,细分后的结果面片更加光滑。图7中展示了使用垂直面自适应策略时的俯视图,因为是俯视图,所以该面近似与视线方向垂直,因此结果图与图4结果类似。图8,9及10分别展示了使用不同自适应策略后的渲染效果。图15为产生裂缝示意图,图16为消除裂缝示意图。如果所示,左侧三角形细分每个边的细分因子都为4,右侧三角形每条边的细分因子都为3,所以在共享边上产生了裂缝,使用裂缝消除算法解决该问题,右侧三角形的共享边细分因子取4,其他边保持不变,如图16 所示,消除了裂缝。为验证自适应算法的有效性,本文对各个自适应策略分别做了实验,并从客观指标帧率(FPS)对其验证,帧率越高表示绘制场景需要的资源更少,帧率的提升反映了自适应曲面细分的有效性(实验机器的配置:NVIDIA Quadro K600图形卡),结果如下:
背部消隐测试
Figure DEST_PATH_GDA0001273838480000111
表1
距离自适应测试
Figure DEST_PATH_GDA0001273838480000112
表2
Figure DEST_PATH_GDA0001273838480000113
表3
垂直面自适应
Figure DEST_PATH_GDA0001273838480000121
表4
面片大小自适应
Figure DEST_PATH_GDA0001273838480000122
表5
从表1-5可以看出,随着细分因子的增大,绘制的面片的增加,使用自适应策略后,能大幅度提升帧率。此外,结合图8,9,10,11及12可以看出,在渲染效果几乎相同的情况下,使用自适应曲面细分方法能大幅度提升帧率。

Claims (1)

1.基于GPU的自适应曲面细分方法;其特征在于,在计算机中是依次按以下步骤实现的:
步骤(1),Directx11初始化
步骤(2),读取网格模型数据与初始化顶点缓存:
在Directx11中集成了曲面细分管线,在GPU中实现PN三角形细分策略时,对于每一个三角形面片,由三个控制点生成一个有10个控制点的3阶贝塞尔三角形;在GPU中实现Phong细分算法时,对于每一个三角形面片,需要知道每个顶点的法向量;在自定义顶点结构中定义顶点的相关属性,PN三角形细分策略与Phong细分策略顶点格式相同,都包含一个坐标信息和法向量信息;
步骤(3),创建顶点布局:
在自定义顶点结构中定义顶点的相关属性,PN三角形细分策略与Phong细分策略顶点格式相同,都包含一个坐标信息和法向量信息;
步骤(4),网格渲染:
设置Input Assembler的图元拓扑类型,使其接收的是控制面片的结构,用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,那么渲染管线将不再渲染该面片;对于一个给定的三角形面片,对于每一条边,计算公式如下:
Figure FDA0002250312910000021
其中edgedot为点积结果,Nj,Nk表示三角形面片中任意两个顶点的组合,V为视向量;对于左手坐标系,若该结果为负值,说明该面片的这条边为背向;当一个面片的三条边都为背向时说明该面片为背向;
距离自适应:
基于距离自适应的细分因子计算公式如下:
Factor1=1-(Dis-minDis)/disFrange
其中,Dis表示视点与面片边中点的距离,minDis表示使用最大细分因子的最小距离;disFrange表示近平面与远平面之间的距离,Factor1为使用距离自适应策略得到的调节因子;得到的Factor1的值位于[0,1]之间;
得到调节因子后,使用线性插值公式:
x1=1+Factor1*(x-1)
其中,x1为使用距离自适应策略调解后的细分因子大小,x为初始细分因子大小;
垂直面自适应:
对于每一个面片处理如下:
Figure FDA0002250312910000022
其中edgedot为点积结果,Nj,Nk表示三角形面片中任意两个顶点的组合,V为视向量;其中edgedot为归一化后的两个向量之间的乘积;
根据公式:
Factor2=1-|edgedot|
同样使用线性插值公式:
x2=1+Factor2*(x1-1)
其中,Factor2为使用垂直面自适应策略得到的调节因子;x2为经过垂直面自适应策略调解后得到的细分因子大小,x1使用距离自适应策略调解后的细分因子大小;
面片大小自适应:
对于模型中的面片首先根据面片的每一条边进行细分因子的动态计算;对于一个给定的面片,计算公式如下:
Figure FDA0002250312910000031
其中,P1,P2表示三角形面片的任意两点;D表示用户给定的距离大小;Factor3为求得的调节因子;
得到调节因子Factor3后,同样使用线性插值公式:
x3=1+Factor3*(x2-1)
其中,x3为面片大小自适应策略调解后的细分因子大小,x2为经过垂直面自适应策略调解后得到的细分因子大小;
裂缝消除:
对于相邻三角形的相邻边,设置该边的细分因子为相邻三角形中最大的细分因子;
Figure FDA0002250312910000032
三角形ABC,与三角形ACD相邻,AC为共享边,XAC表示边AC的细分因子大小;
Figure FDA0002250312910000033
为三角形ABC中AC边的细分因子大小,
Figure FDA0002250312910000034
为三角形ACD边AC边的细分因子大小;
第二步:hull着色程序,对每个输出控制点执行一次,设置细分domain为三角形,输出控制点的数量为3,并指定patch函数为第二步中的patch函数;
第三步:domain着色程序,在该程序中分别实现了PN三角形细分策略及Phong细分策略;
使用PN三角形细分策略时,对于给定u,v,w,u+v+w=1,使用三阶贝塞尔三角形公式:
Figure FDA0002250312910000035
求出细分得到的顶点的三维坐标;
使用二阶贝塞尔三角形公式得到各个顶点的法向量;公式如下:
Figure FDA0002250312910000036
对于给定的uvw坐标,求出顶点的法向量;
使用Phong细分模式时,三角形面片的控制点为:pl,pm和pn,各个顶点对应的法向量分别为nl,nm和nn;对于给定的uvw坐标,使用以下公式:
Figure FDA0002250312910000041
其中,
p(u,v,w)=pl*u+pm*v+pn*w
令q=p(u,v,w),那么:
πl(p(u,v,w))=πl(q)=q-((q-pl)Tnl)nl
πm(p(u,v,w))=πm(q)=q-((q-pm)Tnm)nm
πn(p(u,v,w))=πn(q)=q-((q-pn)Tnn)nn
T表示转置;
即能求出细分得到的顶点的三维坐标。
CN201710058646.9A 2017-01-23 2017-01-23 基于gpu的自适应曲面细分方法 Active CN106887042B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710058646.9A CN106887042B (zh) 2017-01-23 2017-01-23 基于gpu的自适应曲面细分方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710058646.9A CN106887042B (zh) 2017-01-23 2017-01-23 基于gpu的自适应曲面细分方法

Publications (2)

Publication Number Publication Date
CN106887042A CN106887042A (zh) 2017-06-23
CN106887042B true CN106887042B (zh) 2020-05-19

Family

ID=59176698

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710058646.9A Active CN106887042B (zh) 2017-01-23 2017-01-23 基于gpu的自适应曲面细分方法

Country Status (1)

Country Link
CN (1) CN106887042B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108346177B (zh) * 2018-01-15 2020-09-08 浙江大学 一种基于Unity3D的虚拟陶瓷设计方法
CN115170600B (zh) * 2022-09-05 2022-11-22 南京砺算科技有限公司 用于曲面细分的缝合方法及装置、存储介质、终端设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101510226A (zh) * 2009-03-26 2009-08-19 山东理工大学 产品stl模型快速自适应细分方法
CN101639946A (zh) * 2009-08-26 2010-02-03 北京农业信息技术研究中心 植物叶片三维模型几何描述和曲面重建方法及系统
US8471852B1 (en) * 2003-05-30 2013-06-25 Nvidia Corporation Method and system for tessellation of subdivision surfaces
CN103810756A (zh) * 2014-01-17 2014-05-21 浙江大学 基于不规则区域的自适性的Loop细分曲面的绘制方法
CN105676290A (zh) * 2016-04-03 2016-06-15 北京工业大学 基于曲面细分的地震数据三维显示方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070247458A1 (en) * 2006-04-11 2007-10-25 Samsung Electronics Co., Ltd. Adaptive computation of subdivision surfaces

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8471852B1 (en) * 2003-05-30 2013-06-25 Nvidia Corporation Method and system for tessellation of subdivision surfaces
CN101510226A (zh) * 2009-03-26 2009-08-19 山东理工大学 产品stl模型快速自适应细分方法
CN101639946A (zh) * 2009-08-26 2010-02-03 北京农业信息技术研究中心 植物叶片三维模型几何描述和曲面重建方法及系统
CN103810756A (zh) * 2014-01-17 2014-05-21 浙江大学 基于不规则区域的自适性的Loop细分曲面的绘制方法
CN105676290A (zh) * 2016-04-03 2016-06-15 北京工业大学 基于曲面细分的地震数据三维显示方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Feature-adaptive GPU rendering of Catmull-Clark subdivision surfaces;MATTHIAS NIEßNER,etc;《ACM Transactions on Graphics》;20120131;第31卷(第1期);第6:1-6:11页 *
PN三角形在基于GPU曲面细分中的应用;陈驰,等;《太赫兹科学与电子信息学报》;20150430;第13卷(第2期);第297-301页 *
基于GPU曲面细分的研究与应用;覃飏;《中国优秀硕士学位论文全文数据库 信息科技辑》;20130515(第5期);第I138-2050页 *
基于图像处理单元的古建筑构件快速绘制;黄明,等;《测绘科学》;20160531;第41卷(第5期);第111-115页 *

Also Published As

Publication number Publication date
CN106887042A (zh) 2017-06-23

Similar Documents

Publication Publication Date Title
Kobbelt et al. A survey of point-based techniques in computer graphics
Piponi et al. Seamless texture mapping of subdivision surfaces by model pelting and texture blending
US7412362B2 (en) River modeling
US20070247458A1 (en) Adaptive computation of subdivision surfaces
US20110310102A1 (en) Systems and methods for subdividing and storing vertex data
EP3379495B1 (en) Seamless fracture in an animation production pipeline
US20240185503A1 (en) Displacement-centric acceleration for ray tracing
CN106887042B (zh) 基于gpu的自适应曲面细分方法
Reshetov Cool patches: A geometric approach to ray/bilinear patch intersections
US20020118212A1 (en) Shading polygons from a three-dimensional model
Li et al. Approximation of Loop subdivision surfaces for fast rendering
Li et al. An alternative method for constructing interpolatory subdivision from approximating subdivision
Boubekeur et al. QAS: Real-time quadratic approximation of subdivision surfaces
Linsen et al. Fan clouds-an alternative to meshes
CN107578821B (zh) 一种用于虚拟手术系统中的实时的高效gpu渲染方法
Cui et al. GPU-based smooth free-form deformation with sharp feature awareness
Tatarchuk Real-time tessellation on GPU
Brainerd Catmull-clark subdivision surfaces
Valentine et al. GPU Accelerated Modelling and Real-time Rendering of Fluid Motion
Settgast et al. Adaptive Tesselation of Subdivision Surfaces in OpenSG
Runions et al. Ribbons: A representation for point clouds
CN118247410B (zh) 一种基于可微渲染的外观驱动的建筑模型简化方法
Amresh et al. Methods for approximating Loop subdivision using tessellation enabled GPUs
Lanquetin et al. Generalized SCODEF deformations on subdivision surfaces
Husain et al. Iterative Process to Improve Simple Adaptive Subdivision Surfaces Method for Triangular Meshes

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant