CN113610984B - 一种基于Hololens2全息眼镜的增强现实方法 - Google Patents
一种基于Hololens2全息眼镜的增强现实方法 Download PDFInfo
- Publication number
- CN113610984B CN113610984B CN202110666042.9A CN202110666042A CN113610984B CN 113610984 B CN113610984 B CN 113610984B CN 202110666042 A CN202110666042 A CN 202110666042A CN 113610984 B CN113610984 B CN 113610984B
- Authority
- CN
- China
- Prior art keywords
- model
- assembly
- script
- original
- morphology
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/006—Mixed reality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Architecture (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种基于Hololens2全息眼镜的增强现实方法,在搭建好Hololens2的开发环境后,首先设计原始形态模型、分解形态模型和智能提示形态模型三种形态;将三种模型进行整合保存后,设计各个脚本控制模型数据集的分解效果、智能装配效果和视野丢失自动提示效果,在不同形态的模型中提前存储好了各个形态的模型位置信息使得在设计分解模型脚本和智能装配脚本中获取模型数据更加快速高效,并且易于扩展和维护。本发明提供了两种不同的交互方式使得用户能够应对更加复杂的实际装配环境。本发明对于符合Unity3D引擎标准格式的3D模型,都适用于该框架的虚拟装配操作。
Description
技术领域
本发明涉及一种基于Hololens2全息眼镜的增强现实方法,属于增强现实应用开发技术领域。
背景技术
装配活动是大型并且复杂的装备,也是生产过程中非常重要的一个环节,由于人工培训成本高,周期长,某些装配环境狭小不利于多人指导,导致传统的装配活动效率不够高效。
增强现实技术是一种将电脑生成的虚拟图像实时准确地叠加在真实物理世界中,用户通过设备介质能够和计算机生成虚拟对象进行交互地一种技术。增强现实技术的出现能够让用户体验虚实交互的世界,将计算机二维屏幕的仿真行为过渡到真实世界的三维空间去,更加贴合人类真实的操作环境。通过这种技术将装配设备进行建模,并将操作步骤信息投影到真实空间中,可以减少人员培训的成本和时间,并提高装配的整体质量。
在开发增强现实应用的设备中,主流分为二类,一类为搭载深度感知摄像头的智能手机,手机开发增强现实应用主要以娱乐休闲为主。另一类是以微软产品Hololens2所代表的头戴式智能眼镜,头戴式智能眼镜彻底解放双手,让双手能够同时接触计算机所生成的虚拟模型和现实生活中的模型,为工业化装配而服务。本文以Hololens2智能眼镜作为开发硬件,Unity3D引擎作为开发平台,提供一种开发装配应用的增强现实场景框架。
发明内容
本发明所要解决的技术问题是克服现有技术的缺陷,提供一种基于Hololens2全息眼镜的增强现实方法。
为达到上述目的,本发明提供一种基于Hololens2全息眼镜的增强现实方法,包括:
构建3D模型,得到原始形态模型、分解形态模型和智能提示形态模型;
原始形态模型、分解形态模型和智能提示形态模型整合为整合模型;
用户佩戴Hololens2全息眼镜;
用户缩放整合模型:使用4x1按钮菜单的enable按钮或使用语言指令enable开启脚本Bounding Box,使得整合模型周围出现边界框,用户通过手势抓住边界框的四个角往外或往里拖拽实现缩放功能;
当缩放完毕时使用4x1按钮菜单的disable按钮或使用语音指令disable关闭脚本BoundingBox使得整合模型周围出现的边界框进行隐藏;
用户分解原始形态模型得到分解形态模型:使用4x1按钮菜单的exploded按钮或使用语言指令exploded触发脚本Breakdown View Controller中的函数ToggleView,原始形态模型的装配模块自动移动到分解形态模型的装配模块位置上;
用户恢复原始形态模型:使用4x1按钮菜单的exploded按钮或使用语言指令exploded触发脚本Breakdown View Controller中的函数Toggle View,原始形态模型的装配模块从分解形态模型的装配模块位置自动移回到原始形态模型装配模块的原始位置;
用户粘合整合模型:当PartAssemblyHandler脚本检测到整合模型中被用户抓取的装配模块与智能提示形态模型的亮色材质的装配模型相距位置大于0.001cm并且小于0.1cm时,触发粘合事件;粘合事件将亮色材质的装配模块的世界坐标赋值给被抓取的整合模型的装配模块的世界坐标,使得两个装配模块重合;
DirectionHandler脚本检测到摄像机发出的射线未与合体碰撞器发生交互时或者用户点击智能提示按钮,确定用户丢失方向,SloverHandler脚本获取头部的转动方位并设置箭头指向为头部转动的反方向,激活箭头预制体的显示。
优先地,构建3D模型,包括:
在Unity3D项目中搭建开发Hololens2全息眼镜的环境,将3D模型资源转化成符合Unity3D引擎的格式导入到Unity3D项目中;
Unity3D编辑器将3D模型资源的模型组件进行分类,并设计不同形态的3D模型;
将不同形态的3D模型整合并放入装配场景中;
设计脚本来控制各个模型组件的行为;
设置不同的输入指令来操控3D模型。
优先地,在Unity3D项目中搭建开发Hololens2全息眼镜的环境,将3D模型资源转化成符合Unity3D引擎的格式导入到Unity3D项目中,包括:
步骤101:新建Unity3D项目,创建新的场景作为装配场景;在Unity3D项目中下载支持开发Hololens2全息眼镜的UWP平台;在GitHub微软仓库中下载MRTK工具包,并导入到Assembly Project项目中;
在Assembly Project项目中将开发平台切换为UWP平台,将装配场景保存;
步骤102:将要导入到Unity3D项目中的3D模型资源转换成Unity3D引擎支持的任意格式,在Unity3D项目的资源管理器中添加该3D模型资源。
优先地,Unity3D编辑器将3D模型资源的模型组件进行分类,并设计不同形态的3D模型,包括:
步骤201:在Unity3D项目的资源管理器中双击打开导入的3D模型资源,将3D模型资分类为各个装配模块;
为保证归类过程中不扰乱原始形态模型的世界坐标数值,创建空物体作为父类对象,将分类的各个装配模块作为父类对象的子类,并将父类对象的名称设置为分类的名称;
分类完成后,将上述各个装配模块、父类对象和子类打包保存作为原始形态模型;
将原始形态模型复制两份保存在资源管理器中;
步骤202:在资源管理器中打开复制的第一个原始形态模型,将该原始形态模型命名为分解形态模型;
在窗口中编辑器中拖动归类好的各个父类对象到指定位置,或者选中各个父类对象并在Inspect面板中挂载的Transfrom组件上设置各个父类对象对应的变量“Position”的数值;
步骤203:在资源管理器中打开复制的第二个原始形态模型,将该原始形态模型命名为智能提示形态模型;
确定智能提示形态模型中所有的能够进行装配的装配模块,将所有的能够进行装配的装配模块复制一份单独保存;
对单独保存的装配模块,使用亮色高于设定的亮度阈值的材质替换该装配模块的材质。
优先地,将不同形态的3D模型整合并放入装配场景中,包括:
步骤204:在资源管理器中创建新的预制体,打开空的预制体进行编辑,将原始形态模型、分解形态模型和智能提示形态模型拖入放到Hierarchy面板中,在Transform组件里设置原始形态模型、分解形态模型和智能提示形态模型中所有装配模块的“Position”变量保持一致;
将原始形态模型的装配模块全部隐藏,将分解形态模型的装配模块全部隐藏,将智能提示形态模型的装配模块全部显示;
将原始形态模型、分解形态模型和智能提示形态模型保存得到整合模型;
步骤205:新建空的物体对象Game Object放入步骤101保存的装配场景中;
在资源管理器中将整合模型添加到装配场景,设置空的物体对象Game Object为整合模型的父类,将步骤203复制出来的装配模型添加到装配场景,并设置空的物体对象GameObject为复制出来得装配模型得父类。
优先地,设计脚本来控制各个模型组件的行为,包括:
步骤301:使用MRTK工具包中的ObjectManipulator脚本实现原始形态模型、分解形态模型和智能提示形态模型的移动和旋转,使用MRTK工具包中的BoundingBox脚本实现原始形态模型、分解形态模型和智能提示形态模型的缩放;
步骤302:新建BreakdownViewControlle脚本,脚本中编写函数ToggleView,设置变量获取原始形态模型的各个装配模块的世界坐标和分解形态模型的各个装配模块的世界坐标,设置布尔变量IsInOriginalPos使得函数ToggleView能够控制分解形态模型中各个装配模块的分解和控制分解形态模型中各个装配模块的恢复,当InOriginalPos值为true时,Toggle View函数控制分解形态模型中各个装配模块的分解并设InOriginalPos为false;当InOriginalPos值为false时,Toggle View函数控制分解形态模型中各个装配模块的恢复并设InOriginalPos为true;BreakdownViewControlle脚本挂载在整合模型上;
步骤303:新建PartAssemblyHandler脚本,该脚本获取智能提示形态模型中设置亮色材质的装配模块的世界坐标和分解形态模型中装配模块的世界坐标,该脚本中设定整合模型中被用户抓取的装配模块与智能提示形态模型的亮色材质的装配模型相距位置大于0.001cm并且小于0.1cm时触发粘合事件;
PartAssemblyHandler脚本中编写函数ToggleHint,用于触发亮色材质的装配模块的显示与隐藏;
步骤304:新建DirectionHandler脚本,将DirectionHandler脚本和MRTK工具包的SloverHandler脚本挂载在场景相机上,整合模型挂载盒体碰撞器,设置跟踪目标类型为头部,制作一个亮色箭头预制体并隐藏放入装配场景中,DirectionHandler脚本使用射线检测;
射线未与盒体碰撞器发生碰撞交互时,SloverHandler脚本求解方向并激活亮色箭头指向场景中整合模型的方向。
优先地,设置不同的输入指令来操控 3D模型,包括:
步骤401:在步骤301的基础上,添加用于增强用户与场景的交互体验上的按钮,按钮包括用于触发BoundingBox脚本的enable按钮、用于关闭BoundingBox脚本的disable按钮、用于触发BreakdownViewControlle脚本的恢复按钮、用于触发PartAssemblyHandler的粘合按钮、用于分解原始形态模型得到分解形态模型的exploded按钮和触发DirectionHandler脚本与SloverHandler脚本的智能提示按钮;
步骤402:调用MRTK工具包中的语音输入触发函数,将步骤401的四个按钮设置成语音触发;
设置403:新建ToolTipSpawner脚本并挂载在步骤205中的GameObject的各个装配模块上,ToolTipSpawner脚本继承了MRTK工具包中的Base Focus Handler接口和IMixedReality Input Handler接口,这两个接口实现当用户注视某个模型时自动显示对应的包括名称和尺寸的文本信息;
将场景生成为.sln文件,并导入Hololens2全息眼镜。
本发明所达到的有益效果:
本发明对于任意形态的,并符合Unity3D引擎标准格式的3D模型,都适用于该框架进行虚拟装配操作并实现功能。本发明为开发增强现实装配应用提供一种通用的场景框架,为后来开发者提供便利,帮助开发者能够快速搭建基本的增强现实装配场景应用。
附图说明
图1为本发明方法整体体系架构图;
图2为装配模型数据集的制作方法图;
图3为装配模型分解脚本流程图;
图4为装配场景框架结构图。
具体实施方式
以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
需要说明,若本发明实施例中有方向性指示(诸如上、下、左、右、前、后......),则其仅用于解释在某一特定姿态下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
一种基于Hololens2全息眼镜的增强现实方法,包括:
构建3D模型,得到原始形态模型、分解形态模型和智能提示形态模型;
原始形态模型、分解形态模型和智能提示形态模型整合为整合模型;
用户佩戴Hololens2全息眼镜;
用户缩放整合模型:使用4x1按钮菜单的enable按钮或使用语言指令enable开启脚本Bounding Box,使得整合模型周围出现边界框,用户通过手势抓住边界框的四个角往外或往里拖拽实现缩放功能;
当缩放完毕时使用4x1按钮菜单的disable按钮或使用语音指令disable关闭脚本BoundingBox使得整合模型周围出现的边界框进行隐藏;
用户分解原始形态模型得到分解形态模型:使用4x1按钮菜单的exploded按钮或使用语言指令exploded触发脚本Breakdown View Controller中的函数ToggleView,原始形态模型的装配模块自动移动到分解形态模型的装配模块位置上;
用户恢复原始形态模型:使用4x1按钮菜单的exploded按钮或使用语言指令exploded触发脚本Breakdown View Controller中的函数Toggle View,原始形态模型的装配模块从分解形态模型的装配模块位置自动移回到原始形态模型装配模块的原始位置;
用户粘合整合模型:当PartAssemblyHandler脚本检测到整合模型中被用户抓取的装配模块与智能提示形态模型的亮色材质的装配模型相距位置大于0.001cm并且小于0.1cm时,触发粘合事件;粘合事件将亮色材质的装配模块的世界坐标赋值给被抓取的整合模型的装配模块的世界坐标,使得两个装配模块重合;
DirectionHandler脚本检测到摄像机发出的射线未与合体碰撞器发生交互时或者用户点击智能提示按钮,确定用户丢失方向,SloverHandler脚本获取头部的转动方位并设置箭头指向为头部转动的反方向,激活箭头预制体的显示。
优先地,构建3D模型,包括:
在Unity3D项目中搭建开发Hololens2全息眼镜的环境,将3D模型资源转化成符合Unity3D引擎的格式导入到Unity3D项目中;
Unity3D编辑器将3D模型资源的模型组件进行分类,并设计不同形态的3D模型;
将不同形态的3D模型整合并放入装配场景中;
设计脚本来控制各个模型组件的行为;
设置不同的输入指令来操控3D模型。
优先地,在Unity3D项目中搭建开发Hololens2全息眼镜的环境,将3D模型资源转化成符合Unity3D引擎的格式导入到Unity3D项目中,包括:
步骤101:新建Unity3D项目,取名Assembly Project,在Unity3D项目中下载支持开发Hololens2的平台支持(UWP平台),并在GitHub微软仓库中下载MRTK工具包,并导入到Assembly Project项目中。在Assembly Project项目设置中将开发平台切换为UWP平台,并配置MRTK文件。MRTK的UI元素需要使用TextMeshPro基本资源,在Unity项目的菜单中,选择“Window”>“TextMeshPro”>“导入TMP基本资源”以打开“导入Unity包”窗口,在“导入Unity包”窗口中单击“All”按钮,确保选中所有资源,然后单击“导入”按钮以导入资产。接着在Unity3D项目中选择“edit”>“Project Setting”,打开“Project Setting”窗口,在“Project Setting”窗口中,选择“XR插件管理”>“安装XR插件管理”,安装XR插件,Unity3D项目安装完XR插件管理后,确保转到“UWP”设置,然后选中“在启动时初始化XR”和“WindowsMixed Reality”复选框。Unity3D项目导入完Windows Mixed Reality SDK后,项目显示“MRTK项目配置器”窗口,在“MRTK项目配置器”窗口中,使用“音频空间***”下拉列表选择MS HRTF Spatializer,然后单击“应用”按钮以应用该设置。上述步骤设置完毕后将场景保存。
步骤102:将要导入到Unity3D项目中的3D模型转换成Unity3D引擎支持的任意格式,并在Unity3D项目的资源管理器中添加符合Unity3D引擎要求格式的3D模型。
优先地,如图2所示,Unity3D编辑器将3D模型资源的模型组件进行分类,并设计不同形态的3D模型,包括:
步骤201:在Unity3D项目的资源管理器中双击打开导入的3D模型资源,将3D模型资分类为各个装配模块;
为保证归类过程中不扰乱原始形态模型的世界坐标数值,创建空物体作为父类对象,将分类的各个装配模块作为父类对象的子类,并将父类对象的名称设置为分类的名称;
分类完成后,将上述各个装配模块、父类对象和子类打包保存作为原始形态模型;
将原始形态模型复制两份保存在资源管理器中;
步骤202:在资源管理器中打开复制的第一个原始形态模型,将该原始形态模型命名为分解形态模型;
在窗口中编辑器中拖动归类好的各个父类对象到指定位置,或者选中各个父类对象并在Inspect面板中挂载的Transfrom组件上设置各个父类对象对应的变量“Position”的数值;
步骤203:在资源管理器中打开复制的第二个原始形态模型,将该原始形态模型命名为智能提示形态模型;
确定智能提示形态模型中所有的能够进行装配的装配模块,将所有的能够进行装配的装配模块复制一份单独保存;
对单独保存的装配模块,使用亮色高于设定的亮度阈值的材质替换该装配模块的材质。
优先地,将不同形态的3D模型整合并放入装配场景中,包括:
步骤204:在资源管理器中创建新的预制体,打开空的预制体进行编辑,将原始形态模型、分解形态模型和智能提示形态模型拖入放到Hierarchy面板中,在Transform组件里设置原始形态模型、分解形态模型和智能提示形态模型中所有装配模块的“Position”变量保持一致;
将原始形态模型的装配模块全部隐藏,将分解形态模型的装配模块全部隐藏,将智能提示形态模型的装配模块全部显示;
将原始形态模型、分解形态模型和智能提示形态模型保存得到整合模型;
步骤205:新建空的物体对象Game Object放入步骤101保存的装配场景中;
在资源管理器中将整合模型添加到装配场景,设置空的物体对象Game Object为整合模型的父类,将步骤203复制出来的装配模型添加到装配场景,并设置空的物体对象GameObject为复制出来得装配模型得父类。
优先地,设计脚本来控制各个模型组件的行为,包括:
步骤301:使用MRTK工具包中的ObjectManipulator脚本实现原始形态模型、分解形态模型和智能提示形态模型的移动和旋转,使用MRTK工具包中的BoundingBox脚本实现原始形态模型、分解形态模型和智能提示形态模型的缩放;
步骤302:如图3所示,新建BreakdownViewControlle脚本,脚本中编写函数ToggleView,设置变量获取原始形态模型的各个装配模块的世界坐标和分解形态模型的各个装配模块的世界坐标,设置布尔变量IsInOriginalPos使得函数ToggleView能够控制分解形态模型中各个装配模块的分解和控制分解形态模型中各个装配模块的恢复,当InOriginalPos值为true时,Toggle View函数控制分解形态模型中各个装配模块的分解并设InOriginalPos为false;当InOriginalPos值为false时,Toggle View函数控制分解形态模型中各个装配模块的恢复并设InOriginalPos为true;BreakdownViewControlle脚本挂载在整合模型上;
步骤303:新建PartAssemblyHandler脚本,该脚本获取智能提示形态模型中设置亮色材质的装配模块的世界坐标和分解形态模型中装配模块的世界坐标,该脚本中设定整合模型中被用户抓取的装配模块与智能提示形态模型的亮色材质的装配模型相距位置大于0.001cm并且小于0.1cm时触发粘合事件;
PartAssemblyHandler脚本中编写函数ToggleHint,用于触发亮色材质的装配模块的显示与隐藏;
步骤304:新建DirectionHandler脚本,将DirectionHandler脚本和MRTK工具包的SloverHandler脚本挂载在场景相机上,整合模型挂载盒体碰撞器,设置跟踪目标类型为头部,制作一个亮色箭头预制体并隐藏放入装配场景中,DirectionHandler脚本使用射线检测;
射线未与盒体碰撞器发生碰撞交互时,SloverHandler脚本求解方向并激活亮色箭头指向场景中整合模型的方向。
优先地,设置不同的输入指令来操控 3D模型,包括:
步骤401:在步骤301的基础上,添加用于增强用户与场景的交互体验上的按钮,按钮包括用于触发BoundingBox脚本的enable按钮、用于关闭BoundingBox脚本的disable按钮、用于触发BreakdownViewControlle脚本的恢复按钮、用于触发PartAssemblyHandler的粘合按钮、用于分解原始形态模型得到分解形态模型的exploded按钮和触发DirectionHandler脚本与SloverHandler脚本的智能提示按钮;
步骤402:调用MRTK工具包中的语音输入触发函数,将步骤401的四个按钮设置成语音触发;
设置403:新建ToolTipSpawner脚本并挂载在步骤205中的GameObject的各个装配模块上,ToolTipSpawner脚本继承了MRTK工具包中的Base Focus Handler接口和IMixedReality Input Handler接口,这两个接口实现当用户注视某个模型时自动显示对应的包括名称和尺寸的文本信息;
将场景生成为.sln文件,并导入Hololens2全息眼镜。
Hololens2全息眼镜在现有技术中可采用的型号很多,本领域技术人员可根据实际需求选用合适的型号,本实施例不再一一举例。
脚本Breakdown View Controller的运行流程为:
1.场景运行之前,将步骤201中原始模型形态的装配模型存入数组defaultPositions中,将步骤202分解模型形态的装配模型存入数组explodedPositions中。
2.场景运行后,首先调用Unity3D引擎的transform.Location函数将defaultPositions数组和explodedPositions数组里存放的装配模型的世界坐标分别保存在defaultPos数组和explodedPos数组中。
3.调用Unity3D引擎的Update函数,每一帧检测分解事件是否触发,分解事件由函数Toggle View作为外部接口,通过步骤401中的手势交互和步骤402中的语音交互调用该接口进行触发,参阅图4。
4.若分解事件触发,检测布尔值isInDefaultPosition是否为true,若为true,跳转到步骤5。
5.原始装配模型移动到分解装配模型的位置,即将explodedPos数组中存放的世界坐标赋值给原始装配模型的世界坐标。执行完毕后,继续跳转到步骤3。
6.若分解事件触发,检测布尔值isInDefaultPosition为false,跳转到步骤7。
7.将已经移动过的原始装配模型世界坐标重新赋值为defaultPos数组中存储的世界坐标,执行完毕后,继续跳转到步骤3。
8.若没有触发分解事件,则不停重复步骤3。
参阅图4,Breakdown View Controller分解控制脚本挂载在步骤204整合的模型上。
脚本Part Assembly Handler实现过程为:
1.场景运行后,调用Update函数每一帧获取亮色材质装配模型的世界坐标a和被抓取的复制装配模型的世界坐标b。
2.计算两个模型世界坐标的位置,调用Unity3D引擎中的Vector3.Distance(a,b)计算出结果与预先设定范围做比较。
3.若Vector3.Distance(a, b)的结果在0.001cm和0.1cm之间,将亮色材质的装配模型的世界坐标赋值给被抓取的复制的装配模型的世界坐标,使得两个模型重合,这样从视觉上就实现了被抓取的复制装配模型粘合到原始形态模型上的过程。
4.若Vector3.Distance(a, b)的结果没有达到设定范围,则不停的重复步骤1和2,直到满足条件为止。
该脚本还实现了函数Toggle Hint,该函数用于触发亮色材质的装配模型的显示与隐藏,由步骤401手势交互和步骤402语音交互调用触发,参阅图4。
步骤304具体包括:
新建脚本Direction Handler挂载在场景相机上,使用射线检测功能。使用射线检测功能模型必须挂载盒体碰撞器,将步骤205中的父类空物体Game Object添加盒体碰撞器,Direction Handler脚本定向发射射线的实现为:使用Unity3D引擎中的射线类Ray,创建一条射线Ray,需要指明射线的起点(origin)和射线的方向(direction),设定场景相机为射线的起点,设定相机0度角即相机正前方为射线的方向。接着使用MRTK工具包的SloverHandler脚本,Slover Handler脚本也需挂载在场景相机上,并设置跟踪目标类型为头部,这样相机的视野和发射出去的射线就与头部绑定,会随着头部的转动而改变方向。当头部转动,射线未与步骤205中的父类空物体Game Object的盒体碰撞器发生碰撞交互时,即使用者丢失场景视野时,Slover Handler脚本就获取头部的转动方位自动求解,设置箭头指向为头部转动的反方向,并激活箭头预制体的显示。
步骤401:设置手势交互。在步骤301中Object Manipulator脚本和Bound ing Box脚本已经实现了基本的手势交互功能,为了进一步加强手势交互功能,在装配场景中使用MRTK工具包中的4x1按钮菜单,包含四个按钮,分别控制步骤301中的Bounding Box脚本的开关、步骤302中的Breakdown View Controller脚本和步骤303中的Part AssemblyHandler脚本,四个按钮分别实现了:
1、开启场景边界框,此按钮的触发点击事件调用了步骤301中的Bound ing Box脚本,当按钮点击时,整个场景会出现边界框,通过手势交互能够控制整个场景的放大和缩小,适用于不同大小的空间。
2、关闭场景边界框,把场景调整到合适大小和位置时点击该按钮可关闭场景边界框。
3、分解控制按钮,控制步骤204中的整合模型的分解视觉效果,此按钮的点击触发事件调用了步骤302中Breakdown View Controller脚本中的Toggle View函数。此开关是双向开关,模型分解完后再次点击能够恢复。
4、提示开关按钮,控制步骤204中整合模型上亮色材质装配模型的显示与隐藏,当操作人员不熟悉装配位置时,可打开通过视觉提示,熟悉流程后可关闭进行复习操作。
步骤402:设置语音交互。调用MRTK中的语音输入触发函数,将步骤401中所有按钮的实现功能转换为语音触发。实现过程为:首先确保步骤101中的开发场景正确设置,接着在Unity3D项目中MRTK配置设置里找到Input选项,单击选中找到子项Speech列表,单击“Add a new Speech Command”按钮添加四个语音指令,分别对应步骤401中的四个按钮;设置完毕后在装配场景中添加空物体并命名为“SpeechInputHandler_Global”,给“SpeechInputHandler_Global”物体挂载MRTK工具包中自带的脚本SpeechInputHandler,在脚本“SpeechInputHandler”中单击“Add Component”添加四个语音触发事件,与MRTK配置里Speech列表中设置的语音指令必须一致;设置每个语音指令事件的触发函数与步骤401中四个按钮点击触发时调用的函数保持对应。
步骤403:设置凝视交互,该交互实现了当用户注视某个装配模型时会弹出一个文本框,上面显示该模型的基本信息。使用Unity3D引擎开发增强现实应用中,用户头部位置和方向被场景相机代替,调用Unity3D引擎中的RaycastHit类,即射线检测功能,设定当相机发出的射线与碰撞体交互时间超过一秒时,自动弹出文本框,射线离开碰撞体时文本框自动消失。实现此功能的模型上必须挂载盒体碰撞器。
凝视交互的实现方式为:
1.在需要进行凝视交互的模型上挂载盒体碰撞器,新建脚本Tool Tip Spwaner,挂载在需要进行凝视交互的模型上。脚本中事先存储文本类信息并设置为隐藏,等到凝视事件触发时设置为显示。
2.使用Unity3D引擎中的射线类Ray,实例化一个射线对象,设置场景运行一开始从相机发射一条射线,设置射线方向为0度即头部正前方。
3.定义一个RaycastHit变量用来保存被撞物体的信息。
4.如果射线受到带有盒体碰撞器的模型的阻挡,RaycastHit变量就自动存储射线Ray与该模型的碰撞信息,包括碰撞时间t和碰撞点的位置p。
5.判断碰撞时间t是否大于等于1s,若是则触发显示文本的事件,若时间过短则无显示效果。
装配场景设计完毕后,打开“Build Settings”窗口,单击“Build”按钮进行项目构建。构建完毕后打开文件夹中的.sln文件,通过usb连接线将Hololens2眼镜与计算机相连接,通过选择“Release”配置、ARM64 体系结构和“设备”作为目标,配置 Visual Studiofor HoloLens 的.sln文件,在Visual Studio2019中选择“启动但不调试”的按钮,单击将Unity3D项目导入到Hololens2眼镜中。导入完毕后,在Hololens2眼镜中启动应用,应用一开始会显示步骤205中的搭建的基本场景,包括一个整合的模型、需要装配的模型和步骤401中的4x1按钮菜单。用户可通过手势交互,亮色提示进行模型的装配,通过语音命令实现不同的功能,通过凝视交互获取模型信息。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (7)
1.一种基于Hololens2全息眼镜的增强现实方法,其特征在于,包括:
构建3D模型,得到原始形态模型、分解形态模型和智能提示形态模型;
原始形态模型、分解形态模型和智能提示形态模型整合为整合模型;
用户佩戴Hololens2全息眼镜;
用户缩放整合模型:使用4x1按钮菜单的enable按钮或使用语言指令enable开启脚本Bounding Box,使得整合模型周围出现边界框,用户通过手势抓住边界框的四个角往外或往里拖拽实现缩放功能;
当缩放完毕时使用4x1按钮菜单的disable按钮或使用语音指令disable关闭脚本BoundingBox使得整合模型周围出现的边界框进行隐藏;
用户分解原始形态模型得到分解形态模型:使用4x1按钮菜单的exploded按钮或使用语言指令exploded触发脚本Breakdown View Controller中的函数ToggleView,原始形态模型的装配模块自动移动到分解形态模型的装配模块位置上;
用户恢复原始形态模型:使用4x1按钮菜单的exploded按钮或使用语言指令exploded触发脚本Breakdown View Controller中的函数Toggle View,原始形态模型的装配模块从分解形态模型的装配模块位置自动移回到原始形态模型装配模块的原始位置;
用户粘合整合模型:当PartAssemblyHandler脚本检测到整合模型中被用户抓取的装配模块与智能提示形态模型的亮色材质的装配模型相距位置大于0.001cm并且小于0.1cm时,触发粘合事件;粘合事件将亮色材质的装配模块的世界坐标赋值给被抓取的整合模型的装配模块的世界坐标,使得两个装配模块重合;
DirectionHandler脚本检测到摄像机发出的射线未与合体碰撞器发生交互时或者用户点击智能提示按钮,确定用户丢失方向,SloverHandler脚本获取头部的转动方位并设置箭头指向为头部转动的反方向,激活箭头预制体的显示。
2.根据权利要求1所述的一种基于Hololens2全息眼镜的增强现实方法,其特征在于,
构建3D模型,包括:
在Unity3D项目中搭建开发Hololens2全息眼镜的环境,将3D模型资源转化成符合Unity3D引擎的格式导入到Unity3D项目中;
Unity3D编辑器将3D模型资源的模型组件进行分类,并设计不同形态的3D模型;
将不同形态的3D模型整合并放入装配场景中;
设计脚本来控制各个模型组件的行为;
设置不同的输入指令来操控3D模型。
3.根据权利要求1所述的一种基于Hololens2全息眼镜的增强现实方法,其特征在于,在Unity3D项目中搭建开发Hololens2全息眼镜的环境,将3D模型资源转化成符合Unity3D引擎的格式导入到Unity3D项目中,包括:
步骤101:新建Unity3D项目,创建新的场景作为装配场景;在Unity3D项目中下载支持开发Hololens2全息眼镜的UWP平台;在GitHub微软仓库中下载MRTK工具包,并导入到Assembly Project项目中;
在Assembly Project项目中将开发平台切换为UWP平台,将装配场景保存;
步骤102:将要导入到Unity3D项目中的3D模型资源转换成Unity3D引擎支持的任意格式,在Unity3D项目的资源管理器中添加该3D模型资源。
4.根据权利要求1所述的一种基于Hololens2全息眼镜的增强现实方法,其特征在于,
Unity3D编辑器将3D模型资源的模型组件进行分类,并设计不同形态的3D模型,包括:
步骤201:在Unity3D项目的资源管理器中双击打开导入的3D模型资源,将3D模型资分类为各个装配模块;
为保证归类过程中不扰乱原始形态模型的世界坐标数值,创建空物体作为父类对象,将分类的各个装配模块作为父类对象的子类,并将父类对象的名称设置为分类的名称;
分类完成后,将上述各个装配模块、父类对象和子类打包保存作为原始形态模型;
将原始形态模型复制两份保存在资源管理器中;
步骤202:在资源管理器中打开复制的第一个原始形态模型,将该原始形态模型命名为分解形态模型;
在窗口中编辑器中拖动归类好的各个父类对象到指定位置,或者选中各个父类对象并在Inspect面板中挂载的Transfrom组件上设置各个父类对象对应的变量“Position”的数值;
步骤203:在资源管理器中打开复制的第二个原始形态模型,将该原始形态模型命名为智能提示形态模型;
确定智能提示形态模型中所有的能够进行装配的装配模块,将所有的能够进行装配的装配模块复制一份单独保存;
对单独保存的装配模块,使用亮色高于设定的亮度阈值的材质替换该装配模块的材质。
5.根据权利要求4所述的一种基于Hololens2全息眼镜的增强现实方法,其特征在于,
将不同形态的3D模型整合并放入装配场景中,包括:
步骤204:在资源管理器中创建新的预制体,打开空的预制体进行编辑,将原始形态模型、分解形态模型和智能提示形态模型拖入放到Hierarchy面板中,在Transform组件里设置原始形态模型、分解形态模型和智能提示形态模型中所有装配模块的“Position”变量保持一致;
将原始形态模型的装配模块全部隐藏,将分解形态模型的装配模块全部隐藏,将智能提示形态模型的装配模块全部显示;
将原始形态模型、分解形态模型和智能提示形态模型保存得到整合模型;
步骤205:新建空的物体对象Game Object放入步骤101保存的装配场景中;
在资源管理器中将整合模型添加到装配场景,设置空的物体对象Game Object为整合模型的父类,将步骤203复制出来的装配模型添加到装配场景,并设置空的物体对象GameObject为复制出来得装配模型得父类。
6.根据权利要求1所述的一种基于Hololens2全息眼镜的增强现实方法,其特征在于,
设计脚本来控制各个模型组件的行为,包括:
步骤301:使用MRTK工具包中的ObjectManipulator脚本实现原始形态模型、分解形态模型和智能提示形态模型的移动和旋转,使用MRTK工具包中的BoundingBox脚本实现原始形态模型、分解形态模型和智能提示形态模型的缩放;
步骤302:新建BreakdownViewControlle脚本,脚本中编写函数ToggleView,设置变量获取原始形态模型的各个装配模块的世界坐标和分解形态模型的各个装配模块的世界坐标,设置布尔变量IsInOriginalPos使得函数ToggleView能够控制分解形态模型中各个装配模块的分解和控制分解形态模型中各个装配模块的恢复,当InOriginalPos值为true时,Toggle View函数控制分解形态模型中各个装配模块的分解并设InOriginalPos为false;当InOriginalPos值为false时,Toggle View函数控制分解形态模型中各个装配模块的恢复并设InOriginalPos为true;BreakdownViewControlle脚本挂载在整合模型上;
步骤303:新建PartAssemblyHandler脚本,该脚本获取智能提示形态模型中设置亮色材质的装配模块的世界坐标和分解形态模型中装配模块的世界坐标,该脚本中设定整合模型中被用户抓取的装配模块与智能提示形态模型的亮色材质的装配模型相距位置大于0.001cm并且小于0.1cm时触发粘合事件;
PartAssemblyHandler脚本中编写函数ToggleHint,用于触发亮色材质的装配模块的显示与隐藏;
步骤304:新建DirectionHandler脚本,将DirectionHandler脚本和MRTK工具包的SloverHandler脚本挂载在场景相机上,整合模型挂载盒体碰撞器,设置跟踪目标类型为头部,制作一个亮色箭头预制体并隐藏放入装配场景中,DirectionHandler脚本使用射线检测;
射线未与盒体碰撞器发生碰撞交互时,SloverHandler脚本求解方向并激活亮色箭头指向场景中整合模型的方向。
7.根据权利要求6所述的一种基于Hololens2全息眼镜的增强现实方法,其特征在于,
设置不同的输入指令来操控 3D模型,包括:
步骤401:在步骤301的基础上,添加用于增强用户与场景的交互体验上的按钮,按钮包括用于触发BoundingBox脚本的enable按钮、用于关闭BoundingBox脚本的disable按钮、用于触发BreakdownViewControlle脚本的恢复按钮、用于触发PartAssemblyHandler的粘合按钮、用于分解原始形态模型得到分解形态模型的exploded按钮和触发DirectionHandler脚本与SloverHandler脚本的智能提示按钮;
步骤402:调用MRTK工具包中的语音输入触发函数,将步骤401的四个按钮设置成语音触发;
设置403:新建ToolTipSpawner脚本并挂载在步骤205中的GameObject的各个装配模块上,ToolTipSpawner脚本继承了MRTK工具包中的Base Focus Handler接口和IMixedReality Input Handler接口,这两个接口实现当用户注视某个模型时自动显示对应的包括名称和尺寸的文本信息;
将场景生成为.sln文件,并导入Hololens2全息眼镜。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110666042.9A CN113610984B (zh) | 2021-06-16 | 2021-06-16 | 一种基于Hololens2全息眼镜的增强现实方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110666042.9A CN113610984B (zh) | 2021-06-16 | 2021-06-16 | 一种基于Hololens2全息眼镜的增强现实方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113610984A CN113610984A (zh) | 2021-11-05 |
CN113610984B true CN113610984B (zh) | 2023-06-16 |
Family
ID=78303518
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110666042.9A Active CN113610984B (zh) | 2021-06-16 | 2021-06-16 | 一种基于Hololens2全息眼镜的增强现实方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113610984B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116012562A (zh) * | 2022-12-28 | 2023-04-25 | 中建电子信息技术有限公司 | 快速完成bim三维可视化平台模型制作的方法 |
CN116459009A (zh) * | 2023-05-15 | 2023-07-21 | 德智鸿(上海)机器人有限责任公司 | 一种增强现实导航***半自动配准方法和装置 |
CN117132624B (zh) * | 2023-10-27 | 2024-01-30 | 济南作为科技有限公司 | 跟随摄像机遮挡检测方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106846442A (zh) * | 2017-03-06 | 2017-06-13 | 西安电子科技大学 | 基于Unity3D的三维虚拟人群场景生成方法 |
US10732721B1 (en) * | 2015-02-28 | 2020-08-04 | sigmund lindsay clements | Mixed reality glasses used to operate a device touch freely |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10838496B2 (en) * | 2017-06-29 | 2020-11-17 | South China University Of Technology | Human-machine interaction method based on visual stimulation |
US20190253700A1 (en) * | 2018-02-15 | 2019-08-15 | Tobii Ab | Systems and methods for calibrating image sensors in wearable apparatuses |
US11250641B2 (en) * | 2019-02-08 | 2022-02-15 | Dassault Systemes Solidworks Corporation | System and methods for mating virtual objects to real-world environments |
-
2021
- 2021-06-16 CN CN202110666042.9A patent/CN113610984B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10732721B1 (en) * | 2015-02-28 | 2020-08-04 | sigmund lindsay clements | Mixed reality glasses used to operate a device touch freely |
CN106846442A (zh) * | 2017-03-06 | 2017-06-13 | 西安电子科技大学 | 基于Unity3D的三维虚拟人群场景生成方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113610984A (zh) | 2021-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113610984B (zh) | 一种基于Hololens2全息眼镜的增强现实方法 | |
US10534605B2 (en) | Application system having a gaming engine that enables execution of a declarative language | |
US11425220B2 (en) | Methods, systems, and computer program products for implementing cross-platform mixed-reality applications with a scripting framework | |
US9508179B2 (en) | Flexible 3-D character rigging development architecture | |
König et al. | Interactive design of multimodal user interfaces: reducing technical and visual complexity | |
CN102221993B (zh) | 复杂用户界面状态变更的声明性定义 | |
Shaer et al. | A specification paradigm for the design and implementation of tangible user interfaces | |
KR20120045744A (ko) | 체험형 학습 콘텐츠 저작 장치 및 방법 | |
CN112711458B (zh) | 虚拟场景中道具资源的展示方法及装置 | |
US9508178B2 (en) | Flexible 3-D character rigging blocks with interface obligations | |
CN110503724A (zh) | 一种基于人脸特征点的ar表情资源构建管理***及方法 | |
WO2021154101A1 (en) | Software broker for assets managed with nested instancing | |
CN114931746B (zh) | 基于笔式和触屏交互的3d游戏的交互方法、装置及介质 | |
Ledermann | An authoring framework for augmented reality presentations | |
Deshayes et al. | Statechart modelling of interactive gesture-based applications | |
Broll et al. | Interactive bits: Prototyping of mixed reality applications and interaction techniques through visual programming | |
Lu et al. | Design of immersive and interactive application based on augmented reality and machine learning | |
Oliveira et al. | Creation and visualization of context aware augmented reality interfaces | |
Dontschewa et al. | Using motion capturing sensor systems for natural user interface | |
Green et al. | The grappl 3d interaction technique library | |
Feuerstack et al. | Model-based design of multimodal interaction for augmented reality web applications | |
Levas et al. | An architecture and framework for steerable interface systems | |
Feuerstack et al. | Model-Based Design of Interactions That can Bridge Realities-The Augmented" Drag-and-Drop" | |
Du et al. | Study on Virtual Assembly for Satellite Based on Augmented Reality | |
Lu et al. | Interactive augmented reality application design based on mobile terminal |
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 |