基于IntelRealSense的汽车展示应用的开发方法及系统与流程

文档序号:14043708阅读:248来源:国知局

本发明涉及互联网技术领域,特别涉及一种基于intelrealsense汽车展示应用的开发方法及系统。



背景技术:

目前,常见的人机交互方式主要是基于键盘、鼠标、触摸屏、遥控器等接触式的操作方式,交互过程需要借助中间设备,其传输方式单一。伴随着计算机软硬件技术的高速发展以及人们对人机交互的更高要求,语音识别、体感交互等新型人机交互方式开始出现,体感交互可以使得用户通过语音、手势等更加自然、直观地与计算机进行交流,该交互方式是一种非接触式的交互方式,不需要借助中间设备,更加符合人类交流方式。

但现有的汽车展示体感应用往往需要借助虚拟现实头盔、手柄等其他外接设备,且程序开发量较大,而且操作该应用佩戴该类型的设备具有一定的延时和眩晕等缺点,用户不能获得良好的体验。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种基于intelrealsense汽车展示应用的开发方法。

第一方面,本发明实施例提供一种基于intelrealsense汽车展示应用的开发方法,包括:在unity引擎中创建汽车展示场景,整合与汽车展示相关的多媒体素材;

制作汽车3d模型,将所述汽车3d模型导入unity中并将其置于所述汽车展示场景中;

通过intelrealsensesdk完成unity下感知设备的数据接入,并创建预设的脚本;

借助intelrealsense3dcamera跟踪和捕捉预设的用户手势动作和头部转动信息,根据所述用户手势动作和头部转动信息实现与所述汽车3d模型的交互,展示所述汽车3d模型的外观和车内全景。

在一个实施例中,所述预设的用户手势动作和头部转动信息,根据所述用户手势动作和头部转动信息实现与所述汽车3d模型的交互,展示所述汽车3d模型的外观和车内全景,包括:

双手张开并分开的手势动作控制汽车3d模型的旋转,双手握拳并分开的手势动作控制汽车3d模型的缩放,头部转动实现汽车3d模型内部全景展示。

在一个实施例中,所述双手张开并分开的手势动作控制汽车3d模型的旋转包括:

配置手势的开始、过程和结束事件;

控制汽车3d模型的旋转开始动作为双手紧握,过程动作为双手分开并旋转,停止动作为双手张开。

在一个实施例中,所述双手握拳并分开的手势动作控制汽车3d模型的缩放包括:

配置手势的开始、过程和结束事件;

控制汽车3d模型的缩放开始动作为双手张开,过程动作为双手分开并旋转,停止动作为双手握紧。

在一个实施例中,所述头部转动实现汽车3d模型内部全景展示,包括:

新建展示汽车3d模型内部全景的场景,在所述场景内创建一个球体和摄像机,使得视角的位置位于球体中心;

将汽车3d模型内部全景图片拼接于所述球体的内表面,通过跟踪和捕捉头部转动,控制视角的变化,实现汽车3d模型内部全景展示。

在一个实施例中,与所述汽车3d模型的交互,还包括:鼠标点击颜色按钮切换汽车3d模型颜色;

所述方法还包括:定义用于存放改变颜色车身对象的数组;

获取所述数组中所有对象的renderer组件,并改变所有对象的材质颜色为指定的颜色;

建立每一种颜色色块按钮,当点击所述按钮时,实现颜色的切换。

在一个实施例中,与所述汽车3d模型的交互,还包括:鼠标点击控制开关门动画;

所述方法还包括:制作开关门动画,在所述汽车3d模型的车门上添加animation组件,加载制作好的开关门动画;

新建动画控制器;

当从摄像机发射一条到屏幕所述鼠标点击位置的射线,并确定所述射线是否穿过车门,是则播放开关门动画。

在一个实施例中,所述预设的脚本,包括:

ui控制器脚本、音频控制器脚本、模型切换控制器脚本、颜色切换控制器脚本和手势控制脚本。

在一个实施例中,在所述制作汽车3d模型,将所述汽车3d模型导入unity中并将其置于所述汽车展示场景中之后,所述方法还包括:调整所述汽车3d模型在所述汽车展示场景中的位置、旋转角度和缩放大小。

第二方面,本发明实施例提供一种基于intelrealsense汽车展示应用的开发系统,包括:

创建整合模块,用于在unity引擎中创建汽车展示场景,整合与汽车展示相关的多媒体素材;

制作导入模块,用于制作汽车3d模型,将所述汽车3d模型导入unity中并将其置于所述汽车展示场景中;

数据接入模块,用于通过intelrealsensesdk完成unity下感知设备的数据接入;

创建脚本模块,用于创建预设的脚本;

跟踪捕捉模块,用于借助intelrealsense3dcamera跟踪和捕捉预设的用户手势动作和头部转动信息;

交互展示模块,用于根据所述用户手势动作和头部转动信息实现与所述汽车3d模型的交互,展示所述汽车3d模型的外观和车内全景。

本发明实施例提供的上述技术方案的有益效果至少包括:

本发明实施例提供的基于intelrealsense汽车展示应用的开发方法,包括在unity引擎中创建汽车展示场景,整合与汽车展示相关的多媒体素材;制作汽车3d模型,将所述汽车3d模型导入unity,置于所述汽车展示场景中;通过intelrealsensesdk完成unity下感知设备的数据接入,并创建预设的脚本;借助intelrealsense3dcamera跟踪捕捉预设的用户手势动作和头部转动信息,实现用户与汽车3d模型的交互,展示汽车的外观和车内全景。本发明实施例提供的基于intelrealsense汽车展示应用的开发方法,制作汽车3d模型和场景,创建预设的脚本,借助realsensesdk和intelrealsense3d摄像头,使得开发者编写少量代码来实现汽车展示的交互操作,大大减少开发人员的工作量,用户无需穿戴任何设备,通过获取用户自然的肢体动作和手势,可实现对屏幕中的汽车3d模型隔空控制,能够给用户带来娱乐性的互动体验,增强了趣味性。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

图1为本发明实施例提供的基于intelrealsense汽车展示应用的开发方法的流程图;

图2为本发明实施例提供的手势说明示意图;

图3a为本发明实施例提供的手势动作绕z轴旋转示意图;

图3b为本发明实施例提供的手势动作绕y轴旋转示意图;

图4为本发明实施例提供的举例的开发方法技术架构图;

图5为本发明实施例提供的基于intelrealsense汽车展示应用的开发系统的框图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

参照图1所示,本发明实施例提供的基于intelrealsense汽车展示应用的开发方法,根据英特尔的实感技术能够利用intelrealsense3d摄像头能够实时输出深度数据,借助realsensesdk提供手势识别、脸部交互、场景感知等一系列计算机视觉算法,实现高精度的手势追踪、面部分析、语音识别等感知计算。该方法包括:步骤s101~s104;

s101、在unity引擎中创建汽车展示场景,整合与汽车展示相关的多媒体素材;

s102、制作汽车3d模型,将所述汽车3d模型导入unity中并将其置于所述汽车展示场景中;

s103、通过intelrealsensesdk完成unity下感知设备的数据接入,并创建预设的脚本;

s104、借助intelrealsense3dcamera跟踪和捕捉预设的用户手势动作和头部转动信息,根据所述用户手势动作和头部转动信息实现与所述汽车3d模型的交互,展示所述汽车3d模型的外观和车内全景。

本实施例中,unity,也可称unity3d,是由unitytechnologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

步骤s101可以在unity引擎中新建多个类型的汽车展示场景文件,并整合与汽车站相关的多媒体素材,比如可以是展厅室内的展示场景,也可以是室外蓝天白云下的展示场景。其中素材包含图片、音频、视频、三维模型、全景图,其中对unity程序中所需的音频、视频、三维模型、全景图的采集和加工至关重要,保证其符合unity支持的格式,比如.aiff、.wav、.mp3、.ogg和.mp4、.fbx、.max等格式。

步骤s102中,通过三维软件也可以制作多个汽车3d模型,比如可以利用blender、3dmax或maya等三维软件,其中:blender是一款开源的跨平台全能三维动画制作软件,提供从建模、动画、材质、渲染、到音频处理、视频剪辑等一系列动画短片制作解决方案。

多个汽车3d模型,比如选择奥迪汽车作为展示对象时,可以制作奥迪车型中比较有代表性的几种车型,例如a8—大型公务轿车,a4—小型旅行车,s5—运动车,q7—越野车,r8—gt跑车,tts—跑车等。

例如将3dmax中处理过的汽车展厅模型和汽车模型导入unity中,将模型放入汽车展示场景中,可调整汽车展厅以及汽车3d模型在汽车展示场景中的位置,可调整汽车3d模型旋转角度和缩放大小,保证展厅和汽车3d模型的大小比例符合现实中的比例。

步骤s103中,为了方便利用高度集成的intelrealsense3d摄像头,intelrealsense技术还提供了丰富的sdk,通过intelrealsensesdk完成unity下感知设备的数据接入,并创建预设的脚本。

步骤s104中,借助intelrealsense3d摄像头跟踪和捕捉预设的用户手势动作和头部转动信息,转换为匹配的指令,实现用户与汽车3d模型的交互,从而来展示汽车的外观和车内全景。

本发明实施例提供的基于intelrealsense汽车展示应用的开发方法,制作汽车3d模型和场景,创建预设的脚本,借助realsensesdk和intelrealsense3d摄像头,使得开发者编写少量代码来实现汽车展示的交互操作,大大减少开发人员的工作量,用户无需穿戴任何设备,通过获取用户自然的肢体动作和手势,可实现对屏幕中的汽车3d模型隔空控制,能够给用户带来娱乐性的互动体验,增强了趣味性。

在一个实施例中,参照图2所示,步骤s104具体地可通过双手张开并分开运动的手势动作控制汽车3d模型的旋转,双手握拳并分开的手势动作控制汽车3d模型的缩放,头部转动实现汽车3d模型内部全景展示。

本实施例中,张开指的是单手的五指展开,与手掌在同一水平面;分开是指双手由合并聚拢状态,变为两只手分别向相反的方向移动,两只手中间距离较远。旋转缩放功能是利用手势控制汽车模型,使用户能够在360°方向观察汽车的外形细节,导入unitytookit插件;unitytookit插件是一个由脚本、预制件和其他工具组成的套件。该工具集使得设计者能够通过编写少量的代码来添加交互操作,例如,当游戏中需要加入诸如手部跟踪、姿势检测等功能时,只需将unity工具集提供的动作脚本(如trackingaction或rotateaction)附给场景中的游戏对象上。该功能用到unitytoolkit中的rotationaction和scaleaction组件,将这两个组件赋给汽车3d模型,并配置手势的开始、过程和结束事件,从而实现对象的放大、缩小和旋转。

其中汽车内部全景展示功能采用头部转动的方式进行控制视角的变化。

具体地,在一个实施例中,参照图2所示,双手张开并分开的手势动作控制汽车3d模型的旋转,比如将汽车3d模型放入场景中,添加rotationaction和scaleaction组件,由于旋转动作均是连续事件,因此需要分别定义其开始、过程、停止事件。经过反复测试,最终选择旋转的开始动作是双手握紧(handclosed),过程动作是双手分开并旋转(twohandsscaleandrotate),手势旋转方式可以参考图3a所示,可以绕z轴旋转,也可以参照图3b所示,可以绕y轴旋转;停止动作是双手张开(handsopened);

在一个实施例中,参照图2所示,双手握拳并分开的手势动作控制汽车3d模型的缩放,比如将汽车3d模型放入场景中,添加rotationaction和scaleaction组件,由于缩放动作也是连续事件,需要分别定义其开始、过程、停止事件。经过反复测试,具体为缩放事件开始动作是双手张开(handsopened),过程动作是双手分开并旋转(twohandsscaleandrotate),手势旋转方式可以参考图3a所示,可以绕z轴旋转,也可以参照图3b所示,可以绕y轴旋转;停止动作是双手握紧(handclosed)。

在一个实施例中,参照图2所示,通过大拇指和其余四指呈近似o型,进入汽车3d模型内部空间,然后通过头部转动实现汽车3d模型内部全景展示,汽车内部的展示选择全景图片展示的形式,可以大大减少系统资源,且具有逼真的体验效果。本实施例中选择球形全景模型,其实现原理是将全景图片贴入球体的内部,人眼在球内往外看实现全景图浏览。

汽车内部全景展示的原理是将全景图片贴在球体内部,并视角位于球体的中心。首先新建展示汽车3d模型内部全景的场景,在场景内创建一个球体和摄像机,分别设置其坐标位置为(0,0,0),使得视角的位置位于球体中心。将全景图片赋予球体内表面。

另外一种方式将全景图片赋予球体的外部,因此在球体内部看不到全景图片。比如可以新建着色器脚本,将全景图片进行翻转,修改球体的着色器为insidevisible,此时便可在内部查看全景图片。

设置动作脚本,比如将trackingaction脚本赋给摄像机(maincamera),设置追踪的开始、过程、结束动作,分别为检测到脸部(facedetected)、脸部追踪(facedetected)、脸部丢失(facelost),摄像头的位置不变,仅跟随人脸的移动而在x轴和y轴上转动,当检测人脸并转动面部时,即可查看汽车内部全景图片。

在一个实施例中,与汽车3d模型的交互,还包括:鼠标点击颜色按钮切换汽车3d模型颜色;

颜色切换功能是点击按钮改变车身的颜色,比如奥迪汽车的每款车型会有多个颜色,通过该功能,用户可以查看同一车型在不同颜色下的外观。

该功能的实现思路是首先定义一个车身数组,用于存放需要改变颜色的车身对象,然后获取该数组中所有对象的renderer组件,并改变所有对象的材质颜色为指定的颜色,颜色色块作为一个按钮,当用户点击该按钮时,实现颜色的切换。

比如将颜色切换的脚本赋给canvas对象,查看汽车模型中需要改变颜色的子对象,若改变颜色的子对象有7个,则车身对象的数组的size为7,把需要改变颜色的子对象分别赋给车身对象的数组中的元素,最后给颜色按钮添加点击事件。

在一个实施例中,与汽车3d模型的交互,还包括:鼠标点击控制开关门动画;开关门动画是汽车展示的重要组成部分,它可以提升应用的交互性和趣味性。动画功能的实现有两种方法,一种是导入外部动画,并在unity中利用脚本控制该动画的播放。第二种方法是利用unity自带的动画系统制作和控制动画。

以第二种方式为例,在hierachy(hierachy视图,是主要放于游戏场景中具体的游戏对象,比如摄像机平面贴图、3d贴图等)中选中需要建立动画的车门,打开animation(动画)编辑窗口,建立animator(unity中是作为一种单独的配置文件存在的文件类型)文件,在该动画编辑面板中为车门增加旋转属性,改变车门的旋转角度,创建旋转动画。在车门上添加animation组件,并加载制作好的开门动画。

新建animatiorcontroller(动画控制器),这里可以将编辑动画的控制,管理不同动画之间的关联。unity3d的mecanim动画系统是基于状态机的思想对物体的动画进行控制,每个动画控制器可有多个动画层,每个动画层都是一个动画状态机,每个状态机都必须包含“anystate”“entry”“exit”动画状态单元,用于实现状态机不同的功能。将开门的动画文件拖入动画状态机编辑窗口,创建动画单元,通过“maketransition”创建动画过度条件,完成动画过渡条件的连接。

比如控制动画的播放,通过从摄像机发射一条到屏幕点击位置的射线,并判断这个射线是否碰到车门,当车门处于关闭状态,则实现开门动画的播放;当车门处于打开状态,则实现关门动画的播放。

在一个实施例中,步骤s103中预设的脚本包括:ui控制器脚本、音频控制器脚本、模型切换控制器脚本、颜色切换控制器脚本和手势控制脚本。

比如ui控制器脚本,应用程序ui界面的设计从用户的角度出发,界面简洁,结构清晰一致,便于用户理解和使用;比如界面的颜色以黑色、蓝色和为主,突出科技感;在ui界面的交互方面,根据系统的功能,设计各级界面,并通过鼠标或手势操作实现场景的切换。

比如音频控制器脚本包含对背景音乐和汽车发动机引擎声音的处理。

比如模型切换控制器脚本、颜色切换控制器脚本,包含对汽车类型以及颜色切换的处理。

下面具体说明手势控制脚本的实现过程:

手势控制一般需要经过四个步骤:初始化和配置手势模块,实现主处理循环,访问手动跟踪数据,处理手势。

(1)初始化和配置手势模块

在跟踪手势之前,必须初始化sensemanager以进行手势跟踪和配置手势。初始化sensemanager和手势模块的c#代码如下:

//创建sensemanager实例

pxcmsensemanagermysm=pxcmsensemanager.createinstance();

//使用手势跟踪

mysm.enablehand;

//获得pxchandmodule实例

pxchandmodulemyhandmodule=mysm.queryhand();

//获得pxchandconfiguration实例

pxchandconfiguration

handconfig=handmodule.createactiveconfiguration();

//改变配置并应用

handconfig.enableengagement(true);

handconfig.enableallgestures();

//设置其他配置选项

handconfig.applychanges();

//初始化sensemanager流水线

mysm.init();

(2)实现主处理循环

初始化和配置手势模块后,需要启动主处理循环。主处理循环用来在线获取每个图像帧并管理手势跟踪过程,同时响应每一帧中检测到的首部动作和手势。

实现主处理循环的方式有两种:同步函数和异步函数,同步函数可以跟踪和处理每一帧的输出,异步函数可以实现和注册一个或多个事件处理器,并初始化一个用于处理跟踪的新线程。同步函数实现主循环的核心代码如下:

//主循环处理

while(mysm.acquireframe(true).issuccessfull()){

//获取当前跟踪结果

handdata.update();

//处理手部跟踪数据

……

//进行下一帧处理

mysm.releaseframe();

}

(3)访问手动跟踪数据

在主处理循环中,可以处理当前帧的手势跟踪数据,包括访问手部位置、手势跟踪状态、关节数据等。手势数据由ihand接口表示,可以从handdata对象获取指定的手势数据。

(4)手势处理

手势处理是对具体的手部动作或姿势进行处理,可以让应用程序只响应预先定义的手势,而不必处理原始数据。手势的处理可以在手势被触发时,利用回调函数调用已注册的手势进行处理程序,或者在主处理循环中轮询手势。主处理循环中轮询指定手势的核心代码(c#)如下,其中handdata是一个pxcmhanddata实例,isgesturefired函数用来处理指定手势。

本发明提供的基于intelrealsense汽车展示应用的开发方法,还包括对应用程序进行发布与测试,unity3d可实现程序的多平台发布,本实施例是基于英特尔体感外设摄像头进行的开发,发布在pc端,并运行于windows系统下。点击buildsettings,首先将主菜单场景加载进来,使其index为0,随后把所有的场景加载进来,选择发布终端为pc端,将汽车展示应用发布为一个在pc端独立运行的应用程序。

参照图4所示,为本发明实施例提供的举例的开发方法技术架构图;举例说明开发汽车展示的技术架构,包括收集整理素材,比如音频素材、ui素材和贴图素材等,然后使用3dmax制作汽车3d模型和汽车展示场景,再使用unity进行一个完整场景的构建;通过编写ui控制器、音频控制器、模型切换控制器和颜色切换控制器,接入interrealsensesdk,创建手势控制汽车模型旋转、放大缩小以及开关门动画的脚本,最终进行测试、修改、完善、发布。

本发明实施例还提供了一种基于intelrealsense的汽车展示应用的开发系统,该系统使用本发明实施例提供的上述基于intelrealsense的汽车展示应用的开发方法。

基于同一发明构思,由于该系统所解决问题的原理与前述基于intelrealsense的汽车展示应用的开发方法相似,因此该系统的实施可以参见前述方法的实施,重复之处不再赘述。

参照图5所示,上述系统包括:

创建整合模块51,用于在unity引擎中创建汽车展示场景,整合与汽车展示相关的多媒体素材;

制作导入模块52,用于制作汽车3d模型,将所述汽车3d模型导入unity中并将其置于所述汽车展示场景中;

数据接入模块53,用于通过intelrealsensesdk完成unity下感知设备的数据接入;

创建脚本模块54,用于创建预设的脚本;

跟踪捕捉模块55,用于借助intelrealsense3dcamera跟踪和捕捉预设的用户手势动作和头部转动信息;

交互展示模块56,用于根据所述用户手势动作和头部转动信息实现与所述汽车3d模型的交互,展示所述汽车3d模型的外观和车内全景。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1