基于LeapMotion控制的三维笔刷实时生成网络模型的方法与装置制造方法

文档序号:6551696阅读:185来源:国知局
基于Leap Motion控制的三维笔刷实时生成网络模型的方法与装置制造方法
【专利摘要】本发明涉及一种基于Leap?Motion控制的三维笔刷实时生成网格模型的方法,包括:定义三维笔刷的几何参数;捕获当前帧帧手部位置作为笔刷位置,结合三维笔刷几何参数计算空间网格顶点的密度值与法向量;判断当前帧的数据是否需要更新,如果不需要更新则将上一帧的数据写入当前纹理;如果需要更新,则将本帧新计算的数据写入当前纹理;读取纹理数据并生成网格。本发明通过Leap?Motion捕获的手部位置和三维笔刷的几何参数捕捉笔刷移动过程中的体数据,并将动态体数据进行网格模型可视化,通过渲染到纹理等GPU加速方法达到了实时交互的效果,兼有直观和高效的优点。本发明还公开了一种基于Leap?Motion控制的三维笔刷实时生成网格模型的装置。
【专利说明】基于Leap Motion控制的三维笔刷实时生成网络模型的方法与装置
【技术领域】
[0001]本发明涉及人机交互和体数据可视化【技术领域】,尤其涉及一种基于Leap Motion控制的三维笔刷实时生成网络模型的方法与装置。
【背景技术】
[0002]随着三维内容需求的增加,三维建模工具经过多年的发展已经有了较为广泛地应用,对不同领域的需求也有了针对性的解决方案,然而造型机制和交互层面还有各种不足。
[0003]现行的造型系统交互操作层面主要分为两种:以参数为主的造型和以顶点为主的造型。第一种造型方法高度依赖于参数化,所以非常适用于高度规则和参数化的机械和工业生产过程,却不适用于艺术创作领域,因为艺术造型通常是自由的,不规则的,很难参数化的;第二种造型方法自由度较高,但是造型过程非常不直观且繁琐,使用者只能通过对规则形体繁琐地顶点修改得到自己想要的形状。
[0004]在平面的创作中,最快速高效的艺术创作方法就是使用笔刷在平面介质上涂鸦,三维模型也应该以这种方式来创作最为自然且快速,这也正是主流建模系统所欠缺的体验。在研究领域已经对更加自由的三维模型创建模式做出了一定程度探索,为了避免抽象的参数化和繁琐顶点操作,纸笔涂鸦作为人最直观的设计创作模式,也开始被引入到三维模型创建过程中。Igarashi等人在2007年提出了基于自由涂鸦生成三维模型的算法,通过在画布上绘制二维轮廓,再通过该轮廓生成相应的三维网格[14]。Rivers等人也提出了一种通过在不同视角下绘制二维矢量图像,得到可旋转的三维卡通模型的算法[15]。这些以二维草图来创建三维模型的算法在一定程度上让三维模型的创作更加自由,但是现在所有的模型系统都在二维的输入介质上来完成操作,导致在三维软件中,为了完成输入输出介质的认知对应,只能将三维空间到二维屏幕投影与二维输入设备操作的维度对应,所以在一个透视角度下,只可能有两个维度的操作时最直观的,这样的结果就是对一个三维对象的操作要通过频繁地转换视窗投影的角度来完成,或者利用一些视觉辅助比如直观地显示XYZ坐标轴,通过点击图示的坐标轴来完成对应维度的操作,所以一种全三维的输入方式才能最直观地完成三维操作的认知。

【发明内容】

[0005]本发明所要解决的技术问题是,针对现有技术的不足,如何通过Leap Motion捕获的手部位置和三维笔刷的几何参数捕捉笔刷移动过程中的体数据,并将动态体数据进行网格模型可视化的关键问题。
[0006]为此目的,本发明提出了一种基于Leap Motion控制的三维笔刷实时生成网格模型的方法,包括具体以下步骤:
[0007]S1:定义三维笔刷的几何参数;
[0008]S2:捕获当前帧帧手部位置作为笔刷位置,结合所述三维笔刷几何参数计算空间网格顶点的密度值与法向量,其中,所述密度值为一个一维浮点数,所述法向量为一个三维浮点向量;
[0009]S3:判断当前帧的数据是否需要更新,如果需要更新,则进入步骤S5,如果不需要更新则进入步骤S4 ;
[0010]S4:将上一帧的数据写入当前纹理;
[0011]S5:将本帧新计算的数据写入当前纹理;
[0012]S6:读取所述纹理数据并生成网格。
[0013]具体地,所述三维笔刷为一个参数笔刷,通过定义笔刷几何参数同时结合笔刷移动路径,生成几何体。
[0014]具体地,所述步骤SI进一步包括:对三维笔刷形状和笔刷大小进行几何参数定义。
[0015]具体地,所述步骤S2中将Leap Motion设备捕获的手部位置作为三维几何笔刷位置,通过移动手掌来移动三维笔刷,并计算当前帧所述笔刷位置和笔刷几何参数下空间网格顶点的密度值和法向量。
[0016]具体地,所述步骤S3中将当前帧计算的密度值与上一帧中的数据对比,如果预设空间网格顶点的密度值大于当前帧的密度值,则将当前帧在该点的数据存入对应像素,否则直接将上一帧数据存入纹理。
[0017]具体地,计算空间网格顶点密度值和网格生成阶段使用GPU对算法进行加速。
[0018]为此目的,本发明还提出了一种基于Leap Motion控制的三维笔刷实时生成网络模型的装置,包括:
[0019]定义模块,用于定义三维笔刷的几何参数;
[0020]捕获模块,用于捕获当前帧帧手部位置作为笔刷位置;
[0021]计算模块,用于结合所述三维笔刷几何参数计算空间网格顶点的密度值与法向量,其中,所述密度值为一个一维浮点数,所述法向量为一个三维浮点向量;
[0022]判断模块,用于判断当前帧的数据是否需要更新;
[0023]写入模块,用于当前帧的数据不需要更新,则将上一帧的数据写入当前纹理,当前帧的数据需要更新,则将本帧新计算的数据写入当前纹理;
[0024]生成网格模块,用于读取所述纹理数据并生成网格。
[0025]本发明所公开的一种基于Leap Motion控制的三维笔刷实时生成网格模型的方法,通过Leap Motion捕获的手部位置和三维笔刷的几何参数捕捉笔刷移动过程中的体数据,并将动态体数据进行网格模型可视化,通过渲染到纹理等GPU加速方法达到了实时交互的效果,兼有直观和高效的优点。本发明还公开了一种基于Leap Motion控制的三维笔刷实时生成网格模型的装置。
【专利附图】

【附图说明】
[0026]通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:
[0027]图1示出了本发明实施例中的一种基于Leap Motion控制的三维笔刷实时生成网格模型的方法的步骤流程图;[0028]图2示出了本发明实施例中的一种基于Leap Motion控制的三维笔刷实时生成网格模型的装置的结构图。
【具体实施方式】
[0029]下面将结合附图对本发明的实施例进行详细描述。
[0030]如图1所示,本发明提供了一种基于Leap Motion控制的三维笔刷实时生成网格模型的方法,包括具体以下步骤:
[0031]步骤S1:定义三维笔刷的几何参数。其中,三维笔刷为一个参数笔刷,通过定义笔刷几何参数同时结合笔刷移动路径,生成几何体,即通过更改笔刷的几何参数可以更便捷地控制生成几何体的基础形状,结合自由移动路径达到直观地几何体生成过程,且定义三维笔刷的几何参数为对三维笔刷形状和笔刷大小进行几何参数定义。
[0032]例如,本发明中以最基本的球星笔刷来进行研究和实现,其他形状笔刷也可以通过更改笔刷形状参数来完成。具体地,以球形笔刷为例,笔刷大小为球形的半径,所以其几何参数为笔刷位置P和笔刷半径R。
[0033]步骤S2:捕获当前帧帧手部位置作为笔刷位置,结合三维笔刷几何参数计算空间网格顶点的密度值与法向量,即将Leap Motion设备捕获的手部位置作为三维几何笔刷位置,通过移动手掌来移动三维笔刷,并计算当前帧笔刷位置和笔刷几何参数下空间网格顶点的密度值和法向量,其中,密度值为一个一维浮点数,法向量为一个三维浮点向量。
[0034]具体地,每个顶点都需要4个浮点数来存储该点处和体数据相关的参数,所以应该用RGBA格式的纹理来存储这些数据,每个像素由R/G/B/A四个浮点数组成,每个顶点的数据存储在一个像素中。
[0035]进一步地,为了达到实时交互的帧率,计算空间网格顶点密度值和网格生成阶段使用GPU对算法进行加速。具体地,为使用GLSL来计算空间网格密度值,并渲染到纹理,在网格生成阶段使用几何着色器来完成。
[0036]例如,本发明以球形笔刷示例,对于球形笔刷,笔刷参数包括位置矢量O和球体半径R,对于任意空间体素的任意顶点V有位置矢量Pv,那么顶点V的密度值D可表示为:
[0037]D = I Pv-O 1-R
[0038]球形笔刷表面的法向量总是由球心指向空间点的位置,所以任意顶点V处的法向量N的计算方法为:
[0039]N = normalize (Pv-O))
[0040]步骤S3:判断当前帧的数据是否需要更新,如果需要更新,则进入步骤S5,如果不需要更新则进入步骤S4。
[0041]具体地,步骤S3中将当前帧计算的密度值与上一帧中的数据对比,如果预设空间网格顶点的密度值大于当前帧的密度值,则该点数据需要更新,将当前帧在该点的数据存入对应像素,否则直接将上一帧数据存入纹理。
[0042]步骤S4:将上一帧的数据写入当前纹理。
[0043]步骤S5:将本帧新计算的数据写入当前纹理。
[0044]步骤S6:读取纹理数据并生成网格。
[0045]如图2所示,本发明还公开了一种基于Leap Motion控制的三维笔刷实时生成网络模型的装置10,包括:定义模块101、捕获模块102、计算模块103、判断模块104、写入模块105以及生成网格模块106。
[0046]具体地,定义模块101用于定义三维笔刷的几何参数;捕获模块102用于捕获当前帧帧手部位置作为笔刷位置;计算模块103用于结合三维笔刷几何参数计算空间网格顶点的密度值与法向量,其中,密度值为一个一维浮点数,法向量为一个三维浮点向量;判断模块104用于判断当前帧的数据是否需要更新;写入模块105用于当前帧的数据不需要更新,则将上一帧的数据写入当前纹理,当前帧的数据需要更新,则将本帧新计算的数据写入当前纹理;生成网格模块106用于读取纹理数据并生成网格。
[0047]本发明所公开的一种基于Leap Motion控制的三维笔刷实时生成网格模型的方法,通过Leap Motion捕获的手部位置和三维笔刷的几何参数捕捉笔刷移动过程中的体数据,并将动态体数据进行网格模型可视化,通过渲染到纹理等GPU加速方法达到了实时交互的效果,兼有直观和高效的优点。本发明还公开了一种基于Leap Motion控制的三维笔刷实时生成网格模型的装置。
[0048]以上实施方式仅用于说明本发明,而并非对本发明的限制,有关【技术领域】的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
[0049]虽然结合附图描述了本发明的实施方式,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
【权利要求】
1.一种基于Leap Mot1n控制的三维笔刷实时生成网格模型的方法,其特征在于,包括具体以下步骤: 51:定义三维笔刷的几何参数; 52:捕获当前帧帧手部位置作为笔刷位置,结合所述三维笔刷几何参数计算空间网格顶点的密度值与法向量,其中,所述密度值为一个一维浮点数,所述法向量为一个三维浮点向量; 53:判断当前帧的数据是否需要更新,如果需要更新,则进入步骤S5,如果不需要更新则进入步骤S4 ; 54:将上一帧的数据写入当前纹理; 55:将本帧新计算的数据写入当前纹理; 56:读取所述纹理数据并生成网格。
2.如权利要求1所述的方法,其特征在于,所述三维笔刷为一个参数笔刷,通过定义笔刷几何参数同时结合笔刷移动路径,生成几何体。
3.如权利要求1所述的方法,其特征在于,所述步骤SI进一步包括:对三维笔刷形状和笔刷大小进行几何参数定义。
4.如权利要求1所述的方法,其特征在于,所述步骤S2中将LeapMot1n设备捕获的手部位置作为三维几何笔刷位置,通过移动手掌来移动三维笔刷,并计算当前帧所述笔刷位置和笔刷几何参数下空间网格顶点的密度值和法向量。
5.如权利要求1所述的方法,其特征在于,所述步骤S3中将当前帧计算的密度值与上一帧中的数据对比,如果预设空间网格顶点的密度值大于当前帧的密度值,则将当前帧在该点的数据存入对应像素,否则直接将上一帧数据存入纹理。
6.如权利要求1所述的方法,其特征在于,计算空间网格顶点密度值和网格生成阶段使用GPU对算法进行加速。
7.一种基于Leap Mot1n控制的三维笔刷实时生成网格模型的装置,其特征在于,包括: 定义模块,用于定义三维笔刷的几何参数; 捕获模块,用于捕获当前帧帧手部位置作为笔刷位置; 计算模块,用于结合所述三维笔刷几何参数计算空间网格顶点的密度值与法向量,其中,所述密度值为一个一维浮点数,所述法向量为一个三维浮点向量; 判断模块,用于判断当前帧的数据是否需要更新; 写入模块,用于当前帧的数据不需要更新,则将上一帧的数据写入当前纹理,当前帧的数据需要更新,则将本帧新计算的数据写入当前纹理; 生成网格模块,用于读取所述纹理数据并生成网格。
【文档编号】G06T17/00GK104036547SQ201410306480
【公开日】2014年9月10日 申请日期:2014年6月30日 优先权日:2014年6月30日
【发明者】张松海, 王骁建 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1