发布信息

基于ARKit的iOS设备中车辆展示交互方法与流程

作者:admin      2022-10-01 06:26:23     538



计算;推算;计数设备的制造及其应用技术基于arkit的ios设备中车辆展示交互方法技术领域1.本发明涉及图像现实增强技术领域,具体涉及一种基于arkit的ios设备中车辆展示交互方法。背景技术:[0002] ios是由苹果公司开发的移动操作系统,arkit是2017年6月6日,苹果发布ios11系统所新增框架,它能够帮助我们以最简单快捷的方式实现ar技术功能。arkit框架提供了两种ar技术,一种是基于3d场景(scenekit)实现的增强现实,一种是基于2d场景(spriktkit)实现的增强现实。其中,要想显示ar效果,必须要依赖于苹果的游戏引擎框架(3d引擎scenekit,2d引擎spriktkit),通过游戏引擎框架可加载物体模型到arkit框架中。[0003]为了为ios设备用户提供更加真实的车辆展示与交互体验,申请人考虑采用通过scenekit加载3d模型,arkit将生成3d虚拟内容无缝整合到真实环境,并根据用户手势区分操作区域,对模型汽车进行手势操作后,实现交互动画。技术实现要素:[0004]针对上述现有技术的不足,本发明所要解决的技术问题是:如何为ios设备用户提供一种较为真实的车辆展示与交互体验。[0005]为了解决上述技术问题,本发明采用了如下的技术方案:一种基于arkit的ios设备中车辆展示交互方法,包括如下步骤:s1,通过三维软件创建车辆3d模型,并将车辆3d模型文件导入arkit框架中;s2,通过scenekit对车辆3d模型进行渲染,其渲染步骤包括:在scenekit创建一个“arscnview”,并通过arscnview”对“scnscene”和“arsession”进行配置;s3,在“arscnview”中为渲染视图添加点击手势和/或滑动手势,并针对手势特定区域和/或滑动范围进行显示内容的设置;s4,对手势特定区域和/或滑动范围的虚拟节点添加3d模型交互动画。这样,在将车辆3d模型导入具有ios设备的用户手机,并通过在ios设备用户的对车辆模型进行渲染,对虚拟场景和ar会话进行配置后,添加手势,并对手势所设定的特定区域进行显示操作的设置,从而能够使得用户可直接通过手势操作对车辆进行显示设置,实时感受到车辆不同状态下的感受,用户体验感较好。而所配制的3d模型交互动画能够实现用户与设备之间的交互操作,无需用户对程序进行设置,而直接通过交互动画来实现相应的模型操作。[0006]进一步的,通过scenekit对车辆3d模型进行渲染的具体方法如下:首先,在scenekit创建一个“arscnview”,并通过arscnview”对“scnscene”和“arsession”进行配置;然后,通过“scnscene”构造方法传入3d模型资源路径后创建虚拟场景,并将该场景绑定到“arscnview”;通过“arsession”设置“arworldtrackingconfiguration”;最后,通过“arsession”调用“run”方法运行ar场景。这样,“arsession”在幕后创建了一个“avcapturesession”以及一个ꢀ“cmmotionmanager”,通过它们获得图像和运动数据。使用图像来检测场景中的特征点。在更高的频率下使用运动数据,随着时间推移计算其积分以获得设备的运动数据。同时使用两者,就能够进行传感器数据混合处理,从而提供精确的角度和位置,并以“arframe”形式返回。整体流程参考图5。[0007]进一步的,所述“scnscene”管理“scnnode”,“arsession”根据“arconfiguration”维持真实世界追踪,并生成“arframe”。[0008]进一步的,所述arframe”包含“arcamera”和“aranchor”,“aranchor”与“scnnode”有位置映射关系。这样,“arscnview”,包含一个“arsession”,用于更新渲染。“arscnview”会绘制摄像头背景画面,根据“arcamera”中的追踪更新“scncamera”。场景保持不变,“arkit”只是控制ꢀ“scncamera”在场景中移动,模拟用户在现实世界中来回移动设备。“arscnview”会将“scnnode”映射到“aranchor”,实际上不需要直接操作“aranchor”,使用“scnnode”即可。整体流程参考图3。[0009]进一步的,在通过“scnscene”构造方法传入3d模型资源路径后创建虚拟场景,并将该场景绑定到“arscnview”后,可设置场景中模型的初始位置,位置数据通过“scnvector3”传递。这样,通过“scnvector3”,可以向初始的3d模型传递位置信息,从而修改3d模型的初始显示位置,“scnvector3”设置参考坐标系图4。[0010]进一步的,所述手势特定区域为车门、车灯、车身、天窗中的一个或多个区域,所述显示内容包括车身高亮显示、车灯点亮、车门打开、天窗打开。这样,针对每一个能够出现使用变化的汽车部件,对应设置一个控制区域,同时,所设定的显示内容与车辆各部件的操作动作相匹配,从而能够为用户展示实时使用过程中,车辆各部件操作后的显示状态,为用户带来较好的体验。[0011]进一步的,在“arscnview”中为渲染视图添加点击手势,并针对手势特定区域进行显示内容的设置的具体步骤如下:步骤1,在“arscnview”中添加“uitapgesturerecognizer”;步骤2,从“hittest”中获取到点击视图“arscnview”中虚拟节点的“scngeometry”,所述“arscnview”中包含有模型中的全部“scngeometryelement”和“scnmaterial”;步骤3,对被点击到的相应点击区域的材质进行显示内容的修改。这样,“hittest”是“arscnview”提供的手势目标检测回调方法,通过该方法可以获取到点击区域的“scngeometryelement”(几何信息)及“scnmaterial”(材质信息),以此判断3d模型中相应的交互入口,然后达到修改具体“scngeometryelement”及“scnmaterial”的目的。具体设置参考图7,图8。[0012]进一步的,s1中,通过三维软件创建车辆3d模型后,先采用blender将模型文件转换为“.usdc”格式文件。为保证3d模型安全问题,使用“ecc”算法对版权信息进行加密,然后,使用“usdedit”工具编辑“.usdc”文件,填入加密后的版权信息,同时编写对应的版权校验逻辑,再通过arkit中的xcode添加“.usdc”文件到应用项目中完成3d模型导入。这样,通常情况下,3d建模工具生成的3d模型格式不能直接被xcode(苹果应用开发工具)使用,使用blender将该模型导出成“.usdc”(通用场景描述)文件以便导入到xcode中。效果参考图1。xcode加载模型时,“.usdc”文件内部版权校验逻辑会比对明文的版权信息同样进行“ecc”算法加密,如果加密后的文本不一致,则模型加载流程中断(流程参考图9)。[0013]与现有技术相比,本发明得到的基于arkit的ios设备中车辆展示交互方法具有如下优点:使用arkit渲染展示车辆3d模型,车辆3d模型可根据手势目标检测操作区域,可显示交互动画。车辆3d模型的交互处理可接入音频播放,车控指令发送等功能。同时,方法保证了3d模型在互联网传输的版权问题及安全问题,任何修改版权信息的“.usdc”文件均无法加载3d模型,加密版权信息和明文信息不匹配的3d模型也不能加载。[0014]工作原理:首先,arkit利用摄像头拍摄现实场景的画面,然后 scenekit建立虚拟世界。建立完成后,arkit 负责将现实世界和虚拟世界的信息融合,并渲染出一个增强现实世界。在渲染的同时,arkit 要负责以下三件事:维持世界追踪:指的是当你移动摄像头,要去获取新的现实世界的信息。进行场景解析:指的是解析现实世界中有无特征点、平面等关键信息。虚拟世界互动:指的是当用户点击或拖动屏幕时,处理有没有点击到虚拟物体或者要不要进行添加/删除物体的操作。总的来说,arkit 主要做的事是:捕捉真实世界信息、将虚拟世界与真实世界混合渲染、并且时刻处理新的信息并进行互动。附图说明[0015]图1为车辆3d模型导入后的界面示意图;图2为arkit与scenekit功能示意图;图3为模型渲染流程图;图4为 arkit与scenekit坐标系示意图;图5为arsession调用流程示意图;图6为车辆模型ar效果示意图;图7为对车辆模型车身高亮显示操作时的参数配置图;图8为对车辆模型的车灯点亮时的参数配置图;图9为模型加载校验流程图。具体实施方式[0016]下面结合附图和实施例对本发明进一步说明。[0017]实施例:如图所示,本实施例提供的基于arkit的ios设备中车辆展示交互方法,包括3d模型导入、渲染模型、添加手势及处理以及交互动画配置四个步骤。[0018]具体的,3d模型导入的步骤如下:采用blender将其他格式3d模型格式文件导出为“通用场景描述”(.usdc)文件;然后,使用“ecc”算法对版权信息进行加密后(用ecc算法可防止他人修改内置加密版权信息),使用“usdedit”工具编辑“.usdc”文件,填入加密后的版权信息,同时编写对应的版权校验逻辑,最后,通过arkit中的xcode添加“.usdc”文件到应用项目中完成3d模型导入(最终效果如图1所示)。加载模型时,“.usdc”文件。在载入“.usdc”格式文件时,根据所编写的版权校验逻辑,先确定所载入文件是否匹配内置有加密版权,若是,则加载文件3d模型,若否,则中断加载流程(如图9所示)。具体来说,xcode内置有版权信息比对逻辑,若所导入的“.usdc”文件明文版权信息与内置版权信息进行对比时,比对结果显示不一致,则模型加载流程中断,若对比结果一致,则继续加载模型文件。[0019]渲染模型的具体步骤如下:首先,在应用页面中创建一个“arscnview”,该类属于arkit框架,同时又继承于来自scenekit框架的“scnview”,“arscnview”中可以对“scnscene”(虚拟场景)和“arsession”(ar会话)进行配置。“scnscene”管理“scnnode”(虚拟节点),“arsession”根据“arconfiguration”(追踪配置)维持真实世界追踪,并生成“arframe”(场景信息)。“arframe”包含“arcamera”(捕获相机)和“aranchor”(现实空间物理位置),“aranchor”与“scnnode”有位置映射关系,相关关系如图3所示。[0020]其次,通过“scnscene”构造方法传入3d模型资源路径创建虚拟场景,并将该场景绑定到“arscnview”。之后,可以设置场景中模型的初始位置,位置数据通过“scnvector3”(scenekit三维向量)传递,位置坐标系如图4所示。arsession”设置“arworldtrackingconfiguration”(世界追踪配置),其基类为“arconfiguration”,该配置不仅可以获得设备角度,还能获得设备的相对位置,此外还能获得有关场景的信息。[0021]最后,“arsession”调用“run”方法运行ar场景,流程如图5所示。[0022]本实施例中arkit实现增强现实的效果需要结合scenekit使用,创建增强现实体验需要的所有处理都由 arkit 框架负责,scenekit负责渲染虚拟内容,其关系如图2所示。在渲染模型完成后,用户操作ios设备中的相关应用,运行该应用后,最终效果如图6所示。[0023]具体的,手势包括点击手势、拖拽手势、长时间按压手势、捏合手势和旋转手势。以添加点击手势为例,添加点击手势及处理的具体步骤如下:本实施例中,“arscnview”中添加“uitapgesturerecognizer”(点击手势),“hittest”(点击手势检测回调处理方法)中获取到点击视图“arscnview”中虚拟节点的“scngeometry”(几何图形),几何信息中包含了模型中的全部“scngeometryelement”(几何元素)和“scnmaterial”(材质信息)。我们将被点击到的材质进行显示内容的修改,如车身(几何元素“106558 x triangle”)高亮(材质“polar_white”),参数配置如图8所示。在实际应用中,可以通过元素来判断模型被点击的具体位置。具体的,在将被点击到的元素进行显示内容的修改,如车灯(几何元素“4203 x triangle”)点亮(材质“lights_glass”),参数配置如图9所示。[0024]交互动画主要是为手势与手机操作界面之间的交互方式进行设定,具体的,交互动画的具体步骤如下:“scnnode”(虚拟节点)可通过“scnaction.rotate”添加旋转动画,在车辆模型点击后,旋转车模进行展示。[0025]除了上述点击手势外,本实施例还通过在“arscnview”添加uipangesturerecognizer(拖拽手势)用于处理3d模型视角切换。具体实施步骤如下:获取拖拽手势的velocity(加速参数),该参数包含x(水平方向)和y(竖直方向)两个值。x值为正时表示水平方向向右,为负时表示水平方向向左,y值为正时表示竖直方向向上,为负时表示竖直方向向下。基于velocity参数的x值,可以调整3d模型水平方向视角(图4中x轴、z轴方向),基于y值,可以调整3d模型竖直方向视角(图4中y轴、z轴方向),即调整“arscnview”中“scnnode”的“eulerangles”(角度参数)属性,该属性为“scnvector3”(scenekit三维向量)。[0026]velocity与eulerangles转换公式如下:1)velocity参数的x值及y值应与屏幕大小自适应,设备竖屏时:eulerangles.x = velocity.x÷20000,eulerangles.y = velocity.yꢀ÷ꢀ10000。设备横屏时:eulerangles.x = velocity.xꢀ÷10000,eulerangles.y = velocity.yꢀ÷ꢀ20000。以上公式可以使手指进行滑动操作时预留更多屏幕空间,增强交互体验。[0027]2)水平方向拖拽时z轴设置:eulerangles.z = eulerangles.xꢀ×ꢀπ,竖直方向拖拽时z轴设置:eulerangles.z = eulerangles.yꢀ×π。[0028]本实施例中,“arscnview”添加uipinchgesturerecognizer(捏合手势)用于处理3d模型缩放功能。具体实施:获取捏合手势的scale(缩放参数),该参数通过两指捏合距离表示缩放程度的增减,即调整“arscnview”中“scnnode”的“scale”属性,该属性为“scnvector3”(scenekit三维向量)。缩放程度应与屏幕大小自适应,设备竖屏时:scnnode.scale = uipinchgesturerecognizer.scaleꢀ×(屏幕宽ꢀ÷ꢀ屏幕高),设备横屏时:实际scnnode.scale = uipinchgesturerecognizer.scaleꢀ×屏幕高ꢀ÷ꢀ屏幕宽)。以上公式可以使手指进行缩放操作时预留更多屏幕空间,增强交互体验。[0029]最后需要说明的是,以上实施例仅用以说明本发明的技术方案而非限制技术方案,尽管申请人参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,那些对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,均应涵盖在本发明的权利要求范围当中。









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部