本发明涉及Kinect应用领域,具体涉及一种效果真实的基于Kinect的3D虚拟试衣镜的实现方法及系统。
背景技术:
近年来,随着虚拟现实技术的发展,在某些服饰品牌店中,我们偶然会看到虚拟的试衣镜。这些产品会利用一些体感技术与用户做简单的交互行为,比如手势滑动换装、虚拟服饰与影像的适配,从而使用户不需要去试衣间一件件的去更换看中的衣服,可以直接看到上身效果。
但是,市面上的虚拟试衣镜的缺陷如下:
第一,有些产品使用的模型是二维模型,这类产品在与用户进行交互时就暴露了平面模型不真实的弊端。
第二,大多数产品使用的模型虽然是三维模型,但该三维模型多为短袖上衣、裙子,由于三维模型绑定的骨骼点较少,使得当用户抬起胳膊或是抬起腿的时候,三维模型并不会随着用户动作的变化而变化。同时,当用户穿裙子转身的时候,衣物没有材质系统,裙子就不会有“飘”起来的效果。
技术实现要素:
本发明的目的是提供一种基于Kinect的3D虚拟试衣镜的实现方法及系统,解决了传统的三维试衣镜不真实的情况,提供了一种基于Kinect获取用户人体骨骼点,将三维虚拟衣服模型与人体骨骼点绑定联动的3D虚拟试衣镜的实现方法及系统。
本发明的目的是通过以下技术方案来实现:
一种基于Kinect的3D虚拟试衣镜的实现方法,包括以下步骤:
建立骨骼节点数组。
获取初始三维虚拟衣服模型,并为所述初始三维虚拟衣服模型添加与所述骨骼节点数组相对应的虚拟骨骼节点,得到绑定骨骼节点的三维虚拟衣服模型。
通过Kinect设备获取用户的实际骨骼节点,将所述实际骨骼节点与骨骼节点数组进行骨骼节点关联操作,得到人体虚拟骨骼模型。
将所述绑定骨骼节点的三维虚拟衣服模型与人体虚拟骨骼模型进行骨骼节点关联操作,得到三维联动骨骼节点模型;通过游戏引擎将所述三维联动骨骼节点模型导入虚拟场景中,得到三维虚拟衣服效果动画。
在优选的实施方案中,所述得到绑定骨骼节点的三维虚拟衣服模型,其具体为通过三维建模软件编辑初始三维虚拟衣服模型;通过三维建模软件为所述三维虚拟衣服模型上添加与所述骨骼节点数组相对应的虚拟骨骼节点,得到所述绑定骨骼节点的三维虚拟衣服模型;将所述绑定骨骼节点的三维虚拟衣服模型存储到虚拟衣服模型数据库中。
在优选的实施方案中,将所述实际骨骼节点与骨骼节点数组进行骨骼节点关联操作,其具体为将所述骨骼节点数组中对应人体部位的各个骨骼节点均添加相对应的骨骼节点名称;将实际骨骼节点中对应人体部位的各个骨骼节点均添加相对应的实际骨骼节点名称;将对应人体相同部位的所述实际骨骼节点名称与骨骼节点名称进行关联,得到所述人体虚拟骨骼模型。
在优选的实施方案中,所述将所述绑定骨骼节点的三维虚拟衣服模型与人体虚拟骨骼模型相匹配,其具体为将所述虚拟骨骼节点中对应人体部位的各个骨骼节点均添加相对应的虚拟骨骼节点名称;将对应人体相同部位的所述虚拟骨骼节点名称与骨骼节点名称进行关联,得到三维联动骨骼节点模型。
在优选的实施方案中,通过游戏引擎将所述三维联动骨骼节点模型导入虚拟场景中,得到三维虚拟衣服效果动画,包括将所述三维联动骨骼节点模型通过游戏引擎映射到所述虚拟场景中,得到二维联动骨骼节点模型;将所述Kinect设备获取用户的人物彩色图像通过游戏引擎置于虚拟场景中,所述人物彩色图像与二维联动骨骼节点模型相配匹,得到三维虚拟衣服效果动画。
在优选的实施方案中,所述通过Kinect设备获取用户的人体骨骼模型之前,需要在所述3D虚拟试衣镜的游戏引擎中与Kinect设备交互的类库。
一种基于Kinect的3D虚拟试衣镜系统,包括以下结构:Kinect设备,用于获取所述用户的实际骨骼节点;虚拟衣服模型系统,用于编辑初始三维虚拟衣服模型,为所述初始三维虚拟衣服模型添加虚拟骨骼节点,储存得到的绑定骨骼节点的三维虚拟衣服模型;骨骼匹配系统,用于建立骨骼节点数组,接收所述Kinect设备发送的实际骨骼节点,将所述实际骨骼节点与所述骨骼节点数组进行骨骼节点关联操作,得到人体虚拟骨骼模型,将所述虚拟骨骼节点与人体虚拟骨骼模型进行骨骼节点关联操作,得到三维联动骨骼节点模型;游戏引擎,将所述三维联动骨骼节点模型导入虚拟场景中,得到三维虚拟衣服效果动画;显示设备,用于显示所述三维虚拟衣服效果动画。
在优选的实施方案中,3D虚拟试衣镜系统还包括类库,用于建立Kinect设备与游戏引擎之间的数据交互。
在优选的实施方案中,所述虚拟衣服模型系统包括三维建模软件,用于编辑初始三维虚拟衣服模型,并为所述初始三维虚拟衣服模型添加对应人体各个部位的虚拟骨骼节点,得到绑定骨骼节点的三维虚拟衣服模型;虚拟衣服模型数据库,用于存储所述绑定骨骼节点的三维虚拟衣服模型。
在优选的实施方案中,所述骨骼匹配系统包括骨骼节点编辑单元,用于编辑骨骼节点数组;实际骨骼节点匹配单元,接收所述Kinect设备发送的实际骨骼节点,并与所述骨骼节点数组进行骨骼节点关联操作,得到人体虚拟骨骼模型;虚拟骨骼节点匹配单元,将所述三维虚拟衣服模型的虚拟骨骼节点与人体虚拟骨骼模型进行骨骼节点关联操作,得到三维联动骨骼节点模型,将所述三维联动骨骼节点模型发送给所述游戏引擎。
本发明的有益效果为:
本发明为三维虚拟衣服模型添加骨骼节点信息,使三维虚拟衣服模型与骨骼点联动,在通过体感传感器获取用户的身体骨骼信息,使三维虚拟衣服模型与用户身体骨骼信息的骨骼点相匹配,形成联动,使三维虚拟衣服模型随着用户的动作而动,并且能够让用户体验多种动作下的穿衣效果,营造逼真的试衣体验,节省用户的试衣时间。
本发明将人体感应技术、网络与数字显示技术完美结合,使运用该终端的服装店、商场等公共场合具有强烈的视觉冲击力和客户吸引力和科技感;提供给客户高质量试衣体验;提供给管理人员更简便的管理服务。
附图说明
下面根据附图对本发明作进一步详细说明。
图1是本发明实施例所述的基于Kinect的3D虚拟试衣镜的实现方法的方法流程图;
图2是本发明实施例所述3D虚拟试衣镜系统的系统结构图。
图中:
1、Kinect设备;2、虚拟衣服模型系统;3、虚拟衣服模型数据库;4、三维建模软件;5、显示设备;6、游戏引擎;7、类库;8、骨骼匹配系统;9、骨骼节点编辑单元;10、实际骨骼节点匹配单元;11、虚拟骨骼节点匹配单元。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面详细描述本发明的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面将参照附图和具体实施例对本发明作进一步的说明。
现有名词解释:
Kinect是由微软公司开发的一款姿态传感输入设备,作为Xbox360外接的3D体感摄影机,利用即时动态捕捉、影像辨识等功能,可实现追踪用户动作,让用户通过自己的肢体控制终端。
游戏引擎6是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件,这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。大部分都支持多种操作平台,如Linux、Mac OS X、微软Windows。游戏引擎6包含以下系统:渲染引擎(即“渲染器”,含二维图像引擎和三维图像引擎)、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。
渲染是引擎最重要的功能之一,当3D模型制作完毕之后,美工会按照不同的面把材质贴图赋予模型,这相当于为骨骼蒙上皮肤,最后再通过渲染引擎把模型、动画、光影、特效等所有效果实时计算出来并展示在屏幕上。
类库7,类库7(Class Library)是一个综合性的面向对象的可重用类型集合,这些类型包括:接口、抽象类和具体类。可以解决一系列常见编程任务(包括诸如字符串管理、数据收集、数据库连接以及文件访问等任务),还可以解决多种专用开发任务(控制台应用程序、桌面应用程序、WEB应用程序等)。
SDK,软件开发工具包(外语首字母缩写:SDK、外语全称:Software Developmention Kit)一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。
数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。
本发明实施例的一种基于Kinect的3D虚拟试衣镜的实现方法,包括以下步骤:
建立骨骼节点数组,将骨骼节点数组中对应人体部位的各个骨骼节点均添加相对应的骨骼节点名称,骨骼节点数组为包含每个骨骼节点的骨骼节点名称及该骨骼节点在坐标系中的方位信息。
通过三维建模软件4AutodesK Maya编辑初始三维虚拟衣服模型,再通过三维建模软件4AutodesK Maya为初始三维虚拟衣服模型上添加与骨骼节点数组相对应的虚拟骨骼节点,将虚拟骨骼节点中对应人体部位的各个骨骼节点均添加相对应的虚拟骨骼节点名称,得到绑定骨骼节点的三维虚拟衣服模型;然后使用Unity3D对三维虚拟衣服模型进行材质渲染,先为三维虚拟衣服模型添加材质,包括纹理颜色贴图等内容,再在该材质中添加着色器,着色器定义了渲染的方式,使得三维虚拟衣服模型具有真实的质感,最后将绑定骨骼节点的三维虚拟衣服模型存储到虚拟衣服模型数据库3中。
3D虚拟试衣镜内还包括建立游戏引擎6与Kinect设备1交互的类库7。类库7作为引擎与体感设备的交互桥梁,在游戏引擎6中引入体感设备的类库7,然后调用此类库7中的数据及方法作为在引擎中呈现的内容及逻辑功能的支持。操作步骤为将类库7核心脚本作为组件挂靠在引擎场景中的游戏物体上,当程序运行时,类库7核心脚本将被实例化并加载,实现控制Kinect设备1与游戏引擎6的交互行为。
当用户进入到Kinect设备1的扫描范围内,Kinect设备1对用户的人体进行扫描,并获取用户的实际骨骼节点,将实际骨骼节点中对应人体部位的各个骨骼节点均添加相对应的实际骨骼节点名称。Kinect设备1将该实际骨骼节点发送给骨骼节点数组,并进行储存,将对应人体相同部位的实际骨骼节点名称与骨骼节点名称相关联,并形成联动,得到人体虚拟骨骼模型。
将绑定骨骼节点的三维虚拟衣服模型与人体虚拟骨骼模型相匹配,将对应人体相同部位的虚拟骨骼节点名称与骨骼节点名称相关联,使三维虚拟衣服模型通过虚拟骨骼节点与人体虚拟骨骼模型进行匹配关联,得到三维联动骨骼节点模型,再将三维联动骨骼节点模型通过游戏引擎6映射到虚拟场景中,得到二维联动骨骼节点模型,将Kinect设备1获取用户的人物彩色图像通过游戏引擎6置于虚拟场景中,游戏引擎6使用类库7中的CoordinateMapper.MapCameraPointsToDepthSpace方法(该方法记载在KinectSDK中)将骨骼节点信息映射到显示设备5的屏幕空间平面上,再根据屏幕分辨率、体感彩色图像分辨率结合显示屏幕的空间坐标进行映射运算,保证用户在移动时使映射后的骨骼节点信息与用户的图像信息相对应,人物彩色图像与二维联动骨骼节点模型相配匹,得到三维虚拟衣服效果动画。
一种应用上述方法的基于Kinect的3D虚拟试衣镜系统,包括以下结构:
类库7用于建立Kinect设备1与游戏引擎6之间的数据交互。
Kinect设备1用于通过扫描用户获取用户的实际骨骼节点;
虚拟衣服模型系统2用于编辑初始三维虚拟衣服模型,为初始三维虚拟衣服模型添加虚拟骨骼节点,储存得到的绑定骨骼节点的三维虚拟衣服模型。虚拟衣服模型系统2包括三维建模软件4与虚拟衣服模型数据库3,其中虚拟衣服模型系统2包括三维建模软件4,用于编辑初始三维虚拟衣服模型,并为初始三维虚拟衣服模型添加对应人体各个部位的虚拟骨骼节点,得到绑定骨骼节点的三维虚拟衣服模型;虚拟衣服模型数据库3,用于存储绑定骨骼节点的三维虚拟衣服模型。
骨骼匹配系统8,用于建立骨骼节点数组,接收Kinect设备1发送的实际骨骼节点,将实际骨骼节点与骨骼节点数组进行骨骼节点关联操作,得到人体虚拟骨骼模型,将虚拟骨骼节点与人体虚拟骨骼模型进行骨骼节点关联操作,得到三维联动骨骼节点模型;骨骼匹配系统8包括骨骼节点编辑单元9、实际骨骼节点匹配单元10与虚拟骨骼节点匹配单元11,其中骨骼节点编辑单元9用于编辑骨骼节点数组;实际骨骼节点匹配单元10,接收Kinect设备1发送的实际骨骼节点,并与骨骼节点数组进行骨骼节点关联操作,得到人体虚拟骨骼模型;虚拟骨骼节点匹配单元11,将三维虚拟衣服模型的虚拟骨骼节点与人体虚拟骨骼模型进行骨骼节点关联操作,得到三维联动骨骼节点模型,将三维联动骨骼节点模型发送给游戏引擎6。
游戏引擎6,将三维联动骨骼节点模型通过游戏引擎6映射到虚拟场景中,得到二维联动骨骼节点模型,将Kinect设备1获取用户的人物彩色图像通过游戏引擎6置于虚拟场景中,游戏引擎6使用类库7中的CoordinateMapper.MapCameraPointsToDepthSpace方法(该方法记载在KinectSDK中)将骨骼节点信息映射到显示设备5的屏幕空间平面上,再根据屏幕分辨率、体感彩色图像分辨率结合显示屏幕的空间坐标进行映射运算,保证用户在移动时使映射后的骨骼节点信息与用户的图像信息相对应,人物彩色图像与二维联动骨骼节点模型相配匹,得到三维虚拟衣服效果动画。
显示设备5用于显示虚拟场景及处于虚拟场景内的三维虚拟衣服效果动画。
本发明不局限于上述最佳实施方式,任何人在本发明的启示下都可得出其他各种形式的产品,但不论在其形状或结构上作任何变化,凡是具有与本申请相同或相近似的技术方案,均落在本发明的保护范围之内。