基于Unity 3D的室内VR仿真设计

2019-06-27 00:08李欢
科技创新与应用 2019年10期
关键词:定位器头戴式脚本

李欢

摘  要:文章介绍了基于Unity 3D 平台开发的 3D房产装饰仿真系统,对新房装修构建了3D模拟仿真场景,将房屋设计与虚拟现实技术结合起来,避免了传统装修公司房屋设计图纸反复修改、不能团队同时开发设计的限制,从而实现房屋装修设计的高效出图设计。

关键词:VR;Unity 3D;虚拟

中图分类号:TP391.9       文獻标志码:A 文章编号:2095-2945(2019)10-0040-03

Abstract: This paper introduces the 3D real estate decoration simulation system based on Unity 3D platform, constructs the 3D simulation scene for the decoration of the new house, and combines the house design with virtual reality technology, therebysettlesseveral problems such asthe repeated modification of the traditional decoration company housing design drawings and the inability of a team to develop the design simultaneously, so as to realize the efficient drawing design of the housing decoration design.

Keywords: VR;Unity 3D; virtual

VR(全称为Virtual Reality),指虚拟现实技术,是由美国公司创建人拉尼尔(Jaron Lanier)提出的一个虚拟仿真场景化概念。其具体操作就是利用计算机终端和外围设备接口,在计算机上进行渲染,操作者通过外围设备,在可交互的三维环境中体验真实场景。

本文以设备安装、室内装饰、场景漫游、家具详情展示为例,设计了包括家居、门窗、室内装饰物等一体化Unity3D仿真场景,从触控板监听、场景漫游家居装饰为顺序进行设计和编码,形成一套适合房产装修的立体化场景设计软件系统,可以通过游戏手柄和射线进行房屋的场景漫游、为客户提供具有交互性和真实性的漫游体验。

1 设备介绍

HTC VIVE,是由HTC与Valve联合开发的头戴式显示产品,于2015年3月在MWC2015上发布。它是距今为止比较通用的3D体验设备,产品演示前,需要在Steam平台下载相关软件进行支持。

2 HTC VIVE安装

步骤一:选定合适的游戏位置

找到属于自己的游戏位置,关键是要适合你,它适合任何的空间区域,你只要遵循考虑激光定位器在游玩区中的安装和放置位置:激光定位器的组合视场要能复盖整个游戏区,因此两个激光定位器之间的距离不要超过16.4英尺或5米。

步骤二:安装软件

开始安装之前需要在 HTC Vive官网下载 Vive执行文件,可以帮助我们一步一步正确的安装和配置整个VR软硬件系统。Vive需要的显卡功能比较高,一般的台式笔记本显卡不支持该设备运行,如果是AMD显卡需要安装最新驱动程序。下载后,依照其程序即可随时的安装了。

步骤三:安装HTC vive激光定位器

打开HTC Vive的包装盒,对照物品清单取出激光定位其相关设备(2个激光定位器、电源适配器、安装支架),并确认以下需求:

激光定位器需高于使用者的头部,才能利于追踪(建议至少6英尺半);两个激光定位器需分别被安置于对角位置;支架架设完成后,将激光定位器对准游戏区位置,调整其位置为向下倾斜30-45度;确保两个激光定位器之间的视线不受阻挡;为激光定位器接上电源并撕下保护膜后,即可开始启用。需要离地两米,可以选择通过相机三脚架和随机自带墙面固定座安装,定位器接通电源即可启动。频道设置,更改为不同频道方可正常定位,状态指示灯为绿色时表示工作正常,闪烁表示出现了位移。

步骤四:设置头戴式设备

将电源适配器插上电后,再接到串流盒上; 将USB数据线插到串流盒上(PC端口),并将另一端插入电脑的USB端口; 将HDMI连接线插到串流盒上(PC端口),然后将另一端插入电脑显卡的HDMI端口; 最后,将头戴式设备的线缆插头一一插入串流盒上的橙色端口,完成初步设置。

接下来拿起头戴式显示器,撕下显示器上的保护膜即可使用。但要注意的是,尽量避免尖锐物品触及感应器,另外,也须避免将镜头放至于阳光直射处,这些行为都有可能伤害头戴式显示器,整体集成度一般,串流盒的细节,黄色接口为头显端,另外一端接到电脑上,连接头显。

步骤五:设置HTC游戏操作手柄,长按系统按钮启动手柄

步骤六:划定游戏区域

步骤七:房间设置,手柄放置到地面上点击校准地面,按住扳机画出最大活动范围,有时候场景的材质会影响设置,比如场地的一面墙是玻璃材质,反光造成了定位偏移。最后带上头显和耳机就可以开始进行3D漫游了。

3 3D场景设计

搭建场景及显示指针,首先导入SteamVR和VRTK包,新建场景,删掉自带Camera,新建一个Plane,新建一个空物体,重命名为[VRTK_SDKManager],添加组件VRTK_SDK Manager。创建空物体为[VRTK_SDKManager]的子物体,重命名为VRTK_SDKSetup,添加组件VRTK_SDKSetup。在VRTK_SDK Setup中的Quick Selection里选择SteamVR,如果VRTK_SDKSetup脚本中的Actual Objects中没有自动填充,则点击Populate Now填充物体。添加预制体Camera_Rig作为VRTK_SDKSetup的子物体。选中[VRTK_SDKManager],选中Setups中点击“+”,将VRTK_SDKSetup拖动到“None(VRTK_SDK Setup)”的位置。新建空物体,重命名为[VRTK_Scripts]。在[VRTK_Scripts]下创建两个空物体,分别重命名为LeftController(用来配置左手柄)、RightController(右手柄)。选中LeftController和RightController,分别添加VRTK_Controller Events(事件交互的脚本)、VRTK_Pointer(手柄的指针)、VRTK_Straight Pointer Renderer(直线指针)或者VRTK_Bezier Pointer Renderer(贝兹尔曲线指针)。分别设置左指针和右指针。分别制定两个手柄。

4 触控按钮监听

首先要获取左手控制器,先获取到这个左手control这个脚本组件组件,通过这个脚本组件,再调用是STeaVRinput这一个方法,可以得到正确的设备。因此第1步获取左手设备上面的一个脚本,取名为追踪脚本,如果是左手程序变量我们取名left,右手的程序变量取名right,我们以左手变量为例,将变量初始化,我们可以通过transform来查找它的子物体,它也是VR相机的一个子物体,他们是有父子关系的,通过子物体的路径找到当前子物体的控制器,这个只是找到了它的transform,我们还是要获取它的脚本,就是通过代码从而获取左手设备,获取左手设备,还需要调用方法,传递对应设备的手柄ID,获取对应的设备ID,然后由系统自动填充的,它可能是device1也可能是device2或device3,这是随机的。但是由于在第1次使用的时候,设备手柄由于各种原因(或者是没电或者说是没有开机),可能不能正确拿到这个手柄,这时那我们就需要时时的去获取,所以将设备的初始化放到Update()里面,还有一种情况就是当我们离开了定位器范围之后,我的手柄包括图形都会丢失,當我再次回时需要重新获取设备,也需要我们的设备的初始化放到Update里面。接下来输入参数,首先要判断这个脚本,如果说这个脚本是空的,那么我们通过这一个空的游戏物体是没有办法拿到这个index的,这时候会报一个错误,这时需要加一个判断。如果条件成立的,说明这个脚本是肯定获取到的,并且是start方法里面获取的,通过调用Steam input这个方法传入对应的设备ID,通过ID我们可以正确的得到设备,也就是得到left device,我们通过这个设备可以去监听设备上面的9个按键。

5 场景漫游

Move函数是做场景漫游,首先要去监听左手,手柄触摸板的一个点击事件,所以需要添加一个判断。首先判断设备是否为空,并且ID不能为NO,当这些条件成立之后,可以通过左手设备去获取一个事件,这个事件是对于按键的监听,按键监听分为三种状态,一种状态是一开始按下的那一瞬间,是press down事件,然后传入要监听的是哪一种类型的按键,比如说枚举值,现在我们监听的是触摸板,所以添加一个Touchpad。如果我们监听单击键我们可以传一个Trigger参数,选择Touchpad,按F12进入Api,查看按键类型,这里的监听Touchpad可以得到一个布尔值,默认值为Fasle,当按键按下去的时候为true,代码如下:

6 家具详情展示

此处以沙发为例,在沙发上添加一个UI控件,取名为image,系统会自动给它添加一个副控件Canvas和EventSystem,Canvas相当于一个画布,EventSystem是一个事件系统,通过此事件系统来检测事件的交互,image相当于一个背景,可以在上面添加文字、图片等,选中image,将场景切换到2D,选中Canvas,双击,选中image在image属性面板,选择样式列表中的最后一个样式,调整image锚点大小,让image大小正好填充满Canvas,修改Canvas属性窗口中的Render Mode,改为World Space,场景由2D切换为3D,找到沙发物体上的Couch,调整属性窗口的Scale参数为1,1,调整沙发的子物体,将主界面的Iteminfo拖动到沙发下面,当作沙发子物体,修改画布大小,修改缩放比例,尺寸Scale参数为-0.1,-0.1,在主界面将Iteminfo拖动到合适位置,其他家具也如此进行相关属性及画面大小的调整,然后,监听左手的TrackPad点击事件进行射线发射,选中指定家具,使用UGUI显示具体家具详情,监听事件代码如下:

7 结束语

本文主要针对房屋的门窗及室内家具物体进行了Unity 3D的虚拟场景设计,使用C#语言开发了动态场景,可以为房产施工者和买房客户提供虚拟的场景体验。虚拟现实技术是未来的发展趋势,可以应用于更多的场景,并且可以逐步推广至手机端。

参考文献:

[1]朱惠娟.基于Unity3D的虚拟漫游系统[J].计算机系统应用,2012,21(10):36-39.

[2]高国雪,高辉,焦向东,等.基于Unity3D的焊接机器人虚拟现实仿真技术研究[J].组合机床与自动化加工技术,2018(3).

[3]汪学著,孙凤佳.宣城市宛溪河矮塔斜拉桥设计[J].世界桥梁,2012,40(1).

[4]C Helbig,H S Bauer,K Rink,et al.Concept and workflow for 3D visualization of atmospheric data in a virtual reality environment for analytical approaches[J].Environmental Earth Sciences,2014,72(10).

猜你喜欢
定位器头戴式脚本
压接类定位器压接工艺设备改进方案
甜蜜在线
翼身对接柔性自动调姿机构
读书看报 解放双手
自动推送与网站匹配的脚本
苹果要推出头戴式耳机
头戴式耳机
捉迷藏用
无人机相机
举一反三新编