APP下载

基于增强现实技术的家具布置系统设计

2022-07-08谢斐

电子技术与软件工程 2022年2期
关键词:家具物品平面

谢斐

(深圳信息职业技术学院数字媒体学院 广东省深圳市 518172)

增强现实技术(Augmented Reality,简称AR),将计算机生成的文字、图像、三维模型和视频等虚拟信息,运用实时跟踪及注册、智能交互、传感等多种技术手段,叠加到用户所看到的真实场景中,实现对真实世界的增强。增强现实技术追求真实世界与虚拟世界的无缝实时融合,使用户在看到真实世界的同时也能通过人机交互与虚拟对象进行交流,从而获得超越现实的感官体验。

增强现实技术起源于早期计算机科学与技术中的计算机界面研究。1968年美国哈佛大学教授Ivan Sutherland 研制出世界第一款应用在头盔式显示器上的增强现实系统STHMD,它标志着AR研究的开始。增强现实技术(Augmented Reality)这一词汇,最早是在20世纪90年代由波音公司研究员Thomas Caudell提出的。随着计算机图形图像及便携式显示器等关键技术的发展,近年来增强现实技术的实用性显著增强,出现了包括谷歌眼镜、微软Hololens、国产蚁视眼镜等产品。在软件方面,高通公司的Vuforia、苹果公司的ARKit和谷歌的ARCore等AR开发平台也相继出现。增强现实技术作为新兴的研究领域,其巨大的优势和应用潜力,正越来越多的引起人们的关注,在医疗、教育、设计、娱乐及军事等领域具有广泛的应用前景。

本文在研究增强现实技术的基础上将其应用于家居设计领域,设计和开发了一款应用于移动设备的增强现实家具布置系统。该系统将三维虚拟家具物品与真实场景融合,用户能够在真实场景中与虚拟家具实时交互,实现家具的准确摆放和展示,具有直观性、真实性和交互性的特点。

1 增强现实家具布置系统关键技术

1.1 增强现实系统框架

1997年北卡大学的Ronald Azuma提出,增强现实技术应具有三大具体特征,即三维注册、虚实融合和实时交互。本系统增强现实特征体现如下:

(1)虚拟家具三维注册:移动设备摄像头捕捉真实场景,系统通过实时跟踪相机姿态、检测特征点和拟合平面等方式获取对现实世界的理解,通过射线碰撞检测层级获取虚拟对象及其阴影在AR空间的位置,从而将家具模型逼真、准确叠加在成像平面的正确位置上。

(2)虚拟家具与真实场景融合:将系统中的虚拟家具模型和移动设备摄像头捕获的现实世界图像有效叠加、实时渲染,最终显示到移动设备屏幕,向用户直观展示家具模型在真实世界的布置效果。

(3)家具布置人机交互:用户可以从模型库选择不同类型家具物品,通过单击、双击、拖动和旋转等操作控制屏幕中的虚拟物品,可以通过移动摄像机从不同角度观察家具模型摆放效果。交互过程中系统能够稳定的显示与跟踪,实现自然人机交互过程。

增强现实家具布置系统框架图如图1所示。

图1:增强现实家具布置系统框架图

1.2 增强现实开发平台ARCore

本文采用Google公司推出的ARCore SDK构建增强现实开发平台。ARCore支持Android和IOS系统的众多移动设备,支持Android设备模拟器、Unity3D和Unreal开发平台。它采用SLAM(Simultaneous Localization And Mapping)算法认知重建周围真实场景同时进行定位。该算法只需使用普通摄像头,成本低,适用于无标志物的增强现实系统应用。ARCore主要完成两件事情,即跟踪移动设备移动时的位置,以及建立自己对现实世界的理解。它的三大关键功能是运动跟踪、环境理解和光估计。运动跟踪技术通过识别和跟踪特征点,结合手机惯性传感器,确定手机在空间中移动的位置和方向。环境理解功能让手机检测真实环境中的平面,例如桌面或者地板等平面。光估计功能估算周围环境的平均强度和色彩校正。

借助ARCore对现实世界的理解,开发人员能够实现将虚拟物体信息与真实世界无缝融合。在搭建好ARCore开发环境后,运行ARCore的示例应用HelloAR,可看到如图2效果。用户在ARCore拟合的平面上放置虚拟模型,与真实场景融合并显示在手机屏幕上,实现增强现实效果。

图2:增强现实HelloAR运行效果

2 增强现实家具布置系统设计与实现

2.1 开发环境构建

系统实现使用虚拟现实开发引擎Unity 3D,使用C#为开发语言, Google ARCore 为增强现实开发工具包。系统开发软硬件要求及使用资源如表1所示。

表1:系统开发软硬件环境要求

开发时需要准备一台手机做测试,本文使用国内支持ARCore的安卓机型,在手机上安装Google Play Service For AR。在电脑上分别安装开发引擎Unity3D、安卓SDK插件UnitySetup-Android-Support-for-Editor、安装jdk_8.0.1310.11_64.exe和ARCore开发包arcore-unity-sdk-1.23.0.unitypackage,编码工具使用Microsoft Visual Studio Community 2015。项目配置Building Settings中注意将ARCore Supported 勾选,开启ARCore支持。

2.2 系统功能设计

增强现实家具布置系统根据功能设计了三大模块,分别是UI控制模块、家具布置模块和家具管理模块。

(1)UI控制模块。UI是系统与用户交户的界面,负责处理显示家具分类、移除家具、屏幕快照和退出程序四个功能。程序运行后,移动设备摄像头获取真实场景并显示在设备屏幕上,系统读取家具配置文化,创建家具分类页,通过家具分类按钮选择虚拟家具。

(2)家具布置模块。家具布置模块作为增强现实家具布置系统的核心模块,负责本系统增强现实功能,实现虚拟家具与真实世界无缝融合和人机互动,它包括管理AR状态和控制物品状态两大功能。管理AR状态功能将AR状态定义为初始状态(NoReadyState)和就绪状态(StandbyState)。它负责初始化相机参数和各类管理器,创建状态实例,检测ARCore状态,察看是否有拟合平面生成,实现在AR空间放置虚拟物体。控制物品状态,将虚拟物品定义为放置状态(PlaceState)、悬浮状态(SuspendState)、旋转状态(RotateState)和下落状态(FallState)四种状态。家具布置人机交互过程中,各状态之间根据条件相互切换,执行对应操作并播放动画。

(3)家具物品管理模块。家具物品模型的管理包括三维虚拟模型库的更新和家具物品配置文件的读取。三维虚拟模型库的更新包括添加和删除家具物品模型和家具类型。在3Dmax制作好家具物品模型,再为该模型准备一个图标,存入系统对应文件夹。通过修改配置文件更新UI界面显示的模型库。配置文件的读取由系统定义的ResourceInfo类完成。ResourceInfo类读取配置文件中的家具物品类型、家具物品模型及对应图标,再由UI控制模块为这些家具物品及图标创建分类标签按钮,和图标按钮,供家具布置人机交互使用。

2.3 三维家具模型的建立

三维家具模型是家具布置系统实现增强现实和人机交互的对象。本文所用的家具模型采用3D Max三维建模工具制作,保存为.FBX格式。模型制作以XOZ平面为水平地面,Y轴向上为直立方向,所有家具按照实际比例制作,一个浮点单位为实际世界中的1米。系统中所有家具必须添加包围盒,其模型和纹理材质保存到Unity的Assets对应的文件夹中。

2.4 家具模型配置文件

系统使用config.xls文件来指示程序图标与模型的配对关系,并指明家具的类别属性。将虚拟模型分为两大类:家具(Furniture)类和杂项(other)类。家具类又细分为椅子类、沙发类、床类和桌子类等,具体类型及数量可以根据需要添加。杂项类主要是指书或其他装饰类物品,杂项类物品可以堆叠在家具类上,而家具模型之间是不能相互堆叠。

3 关键技术与难点实现

3.1 系统实现要点

本文使用C#编写相关代码,实现业务逻辑,主要代码及功能如表2所示。

表2:主要类及其功能

AR状态机实现AR功能。AR状态初始为NoReady State,在初始状态下,函数lapse轮巡ARCore是否准备好,如果准备好就切换到就绪状态StandbyState。当ARCore处于就绪状态时,查看是否有拟合平面生成,确定虚拟物体放置在拟合平面的位置。ARStateContext类负责控制、管理AR各状态及处理相应事务。初始时负责初始化相机参数、初始化各管理器,创建状态实例、获取主控摄像机实例,接受阴影投影器投影并获取AR拟合平面实例,读取并加工虚拟模型。TrackedArea类负责设置拟合平面、更新拟合平面轮廓和绘制拟合平面。

控制状态机管理虚拟物品的状态,负责人机交互操作的功能。物品放置、悬浮、旋转和下落四种状态由CtrlState Context类管理。ObjectInfo类用于记录虚拟物品的锚点、root节点和model节点。对于手势的输入和响应,系统使用EasyTouchBundle插件实现,定义了GestureDispatcher类处理点击、抬起、拖动和触碰等手势。

UI控制负责管理系统主界面,处理虚拟物品在真实世界的阴影效果。定义TraceModelPos类负责让阴影平面与跟踪模型保持同步。LayerMgr类为虚拟物品设立了20个阴影接收层级,该类负责为添加的物品分配和回收阴影层级。

3.2 虚拟物品状态转换机制

控制状态机中将虚拟物品定义为放置、悬浮、旋转和下落四种状态,状态间的转换由CtrlStateContext类的changeState(CtrlType type, GameObject model)函数实现,该函数的功能是将物品当前状态设置为参数type指定的目标状态,参数model是虚拟模型节点引用,返回ICtrlState类型,为切换后的物品状态。系统允许非家具物品(Others类)堆叠在家具模型上,而家具模型则不能堆叠在任何类型物品上。因此在处理Fall状态时,要根据物品类型判断堆叠是否合法,从而进行相应处理。

3.3 拟合平面的构造和渲染

AR状态机处于就绪状态(StandBy)后开始轮巡ARCore,察看是否有拟合平面生成,若有则实例化进而可视化平面对象,相关代码如下:

4 系统运行效果

本系统界面简洁,程序运行后,移动设备摄像头实时捕获取真实场景并显示在设备屏幕上,此时通过主界面按钮展开家具模型分类库,将系统中的家具模型选中,系统主界面返回真实场景,虚拟家具与真实场景的叠加显示。通过对屏幕中的家具模型单击、拖拽、旋转和放置,在真实场景中操作家具模型,实现人机交互。家具场景布置成功后,可单击右下角的屏幕快照功能截图保存在指定文件夹。若要删除场景中的家具,可以通过删除按钮实现。系统主界面运行效果如图3所示,真实场景家具布置效果如图4所示,家具与书本堆叠显示效果如图5所示。

图3:系统主界面

图4:真实场景家具布置实例

图5:家具类模型和其他类型(书本)堆叠显示效果

5 结束语

本文以增强现实技术为基础,以家具布置为例,研究在Unity 3D平台下使用ARCore SDK开发增强现实家具布置系统。系统通过接触手机屏幕实现与虚拟模型的互动,将3D模型准确叠加在真实场景中,用户可以移动手机从不同角度观察虚拟家具,直观的看到家具模型在真实场景中的布置效果。本文实现了增强现实的基本功能,更多的功能将在后续的研究中不断完善。实验表明,基于增强现实技术的布置系统将有较广泛的应用领域,其研究成果可应用于家具设计、家具导购及环境艺术设计课堂等诸多领域。随着AR技术的不断发展,AR应用将在更多领域大放异彩,必将取得较好的经济社会效益。

猜你喜欢

家具物品平面
称物品
“双十一”,你抢到了想要的物品吗?
现代家具创新化研究
立体几何基础训练A卷参考答案
谁动了凡·高的物品
向日常生活敬:2018danishdesign MAKERS家具展
参考答案
关于有限域上的平面映射
找物品
家具