基于VR技术的红船南湖再现的研究与实现

2019-01-10 06:57柏敏杰陆佳飞方玉燕
科技视界 2019年35期
关键词:虚拟现实

柏敏杰 陆佳飞 方玉燕

【摘 要】为了增强了人们对红船的认识和对历史的铭记,让体验者有“身临其境”的真实效果。利用Unity结合三维建模技术可以真实展现红船场景。 本文结合VR技术探讨了以虚拟现实的实现红船南湖再现的方法,在文中描述了实现的关键技术。

【关键词】南湖红船;一大会址;虚拟现实;人机交互仿真

中图分类号: G434文献标识码: A 文章编号: 2095-2457(2019)35-0058-003

DOI:10.19694/j.cnki.issn2095-2457.2019.35.026

Research and Implementation of Red Boat on the Southern Lake Reconstruction Based on VR Technology

BAI Min-jie LU Jia-fei FANG Yu-yan

(JaiXing  Vocational & Technical College, Jaixing Zhejiang 314000, China)

【Abstract】In order to enhance peoples understanding of the Red Ship and the memory of history. Using Unity and 3D modeling technology can truly show red boat scene. Based on VR technology, this paper discusses the method of realizing the reappearance of Red Ship South Lake by virtual reality. The key technologies of implementation are described in this paper.

【Key words】Red Boat on the Southern Lake; Major venue; Virtual reality; Human-Computer Interactive Simulation.Let the experiencer have the real effect of “being there”

0 前言

南湖紅船是红色圣地,其船体只能是远观而不能进入参观,游客的参观仅仅只是局限于在岸上参观在湖里的红船,这种浏览方式具有局限性,很难真正了解到红船内部到底是什么样的场景。利用虚拟现实技术再现的红船,用户可以在虚拟现实平台上真正的了解到红船内部的场景,同时通过交互还可以学习一大的历史知识。

虚拟现实技术是一种可以创建和体验虚拟世界的计算机仿真系统,是一种多源信息融合的、交互式的三维动态视景和实体行为的系统。将红色文化和VR技术相结合,并且通过VR设备特有的沉浸性和交互性体验进行传播,有利于加强青少年爱国主义教育,使得红色教育不仅仅只是局限于枯燥的课本知识。

使用Unity3D技术,结合3DMax等三维图形软件,采用C#语言作为脚本语言实现。同时主场景使用Unity的Terrain地形系统,最大程度实现还原场景,结合交互,可以给人身临其境的感觉,给用户提供良好的视觉体验[1]。

1 设计方案

整个项目分为二大部分,要实现“身临其境”的逼真性,首先需要对南湖和红船进行建模,然后通过Unity3D技术,实现体验者的交互。

把南湖和红船拆分各部分逐一建模,完成建模后。在3dsmax软件进行贴图,再导出Fbx格式再导入Unity中。

体验者的交互技术主要在Unity 3D中用c#语言实现。使用者模型中移动主要分为定点漫游和瞬移自由漫游两大块,首先是定点的漫游,为了增高项目的交互性,提高可操作性。开始时用户是无法自由漫游的,需要在一些已经设置好的定点漫游点上,完成指定的操作以后才能进行自由漫游,此时参观者可通过手柄发出的射线完成瞬移,瞬移至场景内的任意位置。

不论在定点漫游还是自由漫游,用户都可以进行360度环视参观场景内的素材。在自由漫游被激活的时候,场景中会有许多的花草树木以及湖面,这些位置是能移动的,所以在具体实施的时候需要解决这个问题,让用户不能移动到这些不能移动的点上。

在进入红船内部以后可以通过转动身体360度环视内部的场景,同时在漫游的时候也不会移动到一些不能移动的物体上导致穿模、位置信息错误的问题出现。最后用户只需要佩戴上VR设备就可以完成对南湖红船的虚拟漫游。

2 红船外景及人物的建模方法

首先通过利用红船参数进行了外观建模,再运用布尔运算开出红船窗口,然后分别对船头的甲板、木杆、内部的墙柱进行建模,根据红船的外观进行贴图。同样的方法对船部内饰、船仓内的摆设、人物和南湖外景进行建模,先根据素材进行分解,然后进行整合,建成模型再复制,完成贴图,最后摆设放到船仓内部。红船外景设计效果如图1所示,走入红船内部的显示效果如图2所示。

图1 完成的红船外景的效果

图2 走入红船内部的显示效果

3 实现交互体验的关键方法

3.1 环视的实现

要实现整个项目的场景漫游,需要运用到SteamVR软件提供的组件,并将其导入到Unity3D项目文件的Assets文件目录下,同时将CameraRig拖入到Hierarchy窗口下,经过对组件的配置后就能够实现场景摄像机随着HTC VIVE头盔控制旋的功能,它包含了控制器上相关模型的子物体,可以动态获取到头部Y轴方向的转动,以及头部在X、Y轴转动的方向,同时将这个坐标信息实时的赋值给这个脚步绑定的对象上。

3.2 定点移动的实现

在项目开始运行的时候,将场景地面上的MeshCollider组件设置为不可用,同时在地面上放置三个固定点(固定点为高亮显示),只有完成了固定点上的相关要求之后该固定点才会消失,当三个固定点任务都完成的时候,地面上的MeshCollider组件才会被设为开启状态。当检测到抛物线终点在第一个固定点上的时候,第一个任务开启,以此类推,当完成任务后,该界面跟固定点将被立即销毁。关键代码如下:

if(e.target.tag=="Point")

{Canvas.gameObject.SetActive(true); }

当完成最后一个任务后,该界面被立即销毁,同时开启地面MeshCollider组件,此时用户可以自由漫游,关键代码如:

if(e.currentTarget.layer == LayerMask.NameToLayer("move")) {

CanvasDestory();

dati.gameObject.GetComponent ().enabled = true;

scene.GetComponent().enabled=true;

}

3.3 瞬移自由漫游的實现

在VRTK_SDKManager中创建一个空物体,并重命名为PlayArea,添加组件VRTK_Basic Teleport并设置相关属性,瞬移都是基于碰撞的,所以需要给要进行瞬移传送的物体或区域添加Collider组件,为手柄控制器添加上VRTK_Bezier Pointer Renderer组件(贝赛尔曲线指针)来实现抛物线的效果,增强用户的观感。

3.4 设置不可移动区域

在PlayArea上添加PolicyList组件,在不可传送的物体上都设置Collider碰撞器,其中树、植被、湖面、船身、船内的装饰以及人物皆不可被传送,同时设置这些物体的Tag标签为notpass(意为不可穿越的意思),将PolicyList组件的操作方式改为Ignore,当场景中物体的Tag匹配上PolicyList中的Tag “notpass”时,抛物线会被设置成红色,表示不能传送到该物体上。此时用户按下TouchPad按钮也不能进行瞬移操作。

同时在PlayArea上添加VRTK_TeleportDisableOnCont-

rollerObscured组件,添加时会自动添加VRTK_HeadsetC-

ontrollerAware组件,这个是用来跟踪手柄是否碰撞到物体,当手柄碰撞到场景内的任一物体时,会提示禁止传送。

当参观者由于操作不当的原因将场景内身体陷入场景内物体时,会影响观看效果。所以此时在PlayArea上添加VRTK_TeleportDisableOnHeadsetCollision和VRTK_H

eadsetCollision两个组件进行限制,同时可以通过修改该组件属性面板下的Public变量Collider Radius(碰撞半径)来达到最优的效果,提升用户的观感体验。

4 物体瞬移实现原理

4.1 抛物线瞬移

图3 抛物线发射规则

虚拟现实中的瞬移过程,是在体验者决定移动之前,通过手柄选择目标位置,选定之后,视野呈现短暂黑屏(时间相当于一次眨眼),过后将体验者位置设定为选定位置。通过对VRTK_Bezier Pointer Renderer组件(贝赛尔曲线指针)组件的调用,可以从控制器顶部发射出一条抛物线,通过抛物线原理在终点端做出碰撞检测。当检测到是可瞬移区域的时候,松开TouchPad键就可以完成瞬移[7]。如图3显示抛物线发射规则。

4.2 定点位置检测原理

图4 抛物线终点端计算规则

定点移动就是在场景中预先设置好固定点,通过VRTK_DestinationMarker组件方法实现允许特定的场景标记或场景中可以传送到的特定区域,这是一个抽象类,它将继承到提供对象控制操作功能的具体类,因此不应直接使用此脚本。应当抛物线终点端检测到该固定预设点后,通过组件调用已经设置好的包括未选中、选中、取消选中的预设体之间的调用,当抛物线终点端不是在固定点位上时,Enable Teleport复选框会锁定目标点并阻止传送到目标点,当destination marker是active时发送事件,确定最新的目标点。抛物线终点端计算规则如图4所示。

5 结论

本文描述了基于VR技术的红船漫游实现关键技术,实现了对于南湖红船的漫游功能。通过对“VR技术的红船南湖再现的研究,可以更好的通过虚拟现实技术中沉浸性、交互性和多感知性特性再现我党诞生这一伟大历史时刻,更好的宣传我党,更好的激发人们爱党、敬党的热情。

【参考文献】

[1]VRTK. Virtual Reality Toolkit,2019.

[2]宣雨松.Unity3D游戏开发 第2版,2019.

[3]姜学智,李忠华.国内外虚拟现实技术的研究现状.辽宁工程技术大学学报,2004,23(2):238-240.

[4]Unity Technologies.Unity 5.X从入门到精通,2016.

[5]郭胜.C#.NET程序设计教程[M].北京:清华大学出版社,2002.

[6]刘氢.基于Unity3D和htcvive的虚拟现实游戏设计与实现[J].通讯世界,2017.

[7]赖佑吉,姚智,姚智原.Unity 3D游戏开发实战:人气游戏这样做[M].清华大学出版社,2015.

[8]詹秦川,弓宸.虚拟现实技术的应用及发展现状分析[J].产业与科技论坛,2014,(7):75-76.

[9]陈浩磊,邹湘军,陈燕,刘天湖.虚拟现实技术的最新发展与展望[J].中国科技论文在线,2011,(01):1-5.

[10]庞赛男.基于移动平台的明清建筑斗拱教育游戏设计研究[D].哈尔滨工业大学,2016.

猜你喜欢
虚拟现实
论虚拟现实艺术的“沉浸”
REALITY BITES
虚拟现实产业进入高速发展期
虚拟现实技术向科幻小说借灵感
虚拟现实:另一个真实世界
诺基亚推出虚拟现实摄像机OZO
虚拟现实炫酷来袭走出实验室坎坷漫长
浅谈虚拟现实