VR 技术的应用

1992年美国国家科学基金资助的交互式系统项目工作组的报告中对VR提出了较系统的论述,并确定和建议了未来虚拟现实环境领域的研究方向。可以认为,虚拟现实技术综合了计算机图形技术、计算机仿真技术、传感器技术、显示技术等多种科学技术,它在多维信息空间上创建一个虚拟信息环境,能使用户具有身临其境的沉浸感,具有与环境完善的交互作用能力,并有助于启发构思。所以说,沉浸-交互-构想是VR环境系统的三个基本特性。虚拟技术的核心是建模与仿真。 VR技术的应用领域包括直观教学,设计模型,游戏运动。

实验介绍

VR技术能让人们看到很多显示上肉眼看不到的世界,比如微观世界,电磁世界。 而且具有很强的互动,直观效果很好。 本实验用Unity软件模拟电场的空间分布。 带电体为点电荷,无限长的线电荷,圆柱体等简单的几何形状的电荷。 使用者可以用手柄操作带电体,让需要的带电体进入电场演示空间。 而且还可以调节每个带电体的电量。 电场演示空间由3维的点矩阵构成, 带电体进去了电场之后,演示空间里有了个静电场分布。 这时候,每个点的颜色和从每个点发出的箭头表示电场的强度和方向,从而给使用者直观地展示电场。

实验原理

本实验用Unity软件设计了VR系统。 本实验的大部分工作也是Unity软件的编程。

Unity软件里自带建模3D的功能和编程的功能。 目前做了15*15*15点矩阵里有一个和两个电荷的时候模拟的电场。

电场演示空间里的每个点的电场强度可以由库伦定律和叠加原理简单地计算。

Unity软件支持C sharp和JavaScript语言来编程。(本实验用C sharp语言做了编程。) Unity软件,一个场景里有几个对象。一个对象带有几个组件,包括脚本。 本场景,也就是带电场演示空间的场景里面有三个主要对象,分别是 ElectricFieldRenderer(电场演示空间), ElectricfieldBodies(带电体),Environment(周围环境) Objects对象。

下面是电场演示空间对象的脚本。ElectricFieldRenderer.cs

每个类和函数的作用是这样的。 m_unitLength 单位间隔 m_x,m_y,m_z三个方向的间隔数目 m_maxIndensity,m_minIndensity ,强度映射到颜色贴图时的取的上下限 Awake() 里调用Init(),Init()是初始化方法 InitializeDataPoint()生成 sphere组成的点阵 SetDataPointColor() 给每一个点修改改点出对应的颜色 UpdateDataColor() 用来刷新每个点的颜色 setColor()设置点的颜色

下面是带电体对象里的脚本。Electricfieldbody.cs

实验装置

1)头戴显示器 分辨率2160*1200(单眼 1080*1200) 110°视场角 90Hz刷频率 2)控制手柄,定位基站

实验演示

试验记录

2018年3月20日 了解了之前同学们做过的VR课题 2018年3月27日 选择了课题,用VR技术演示电场 2018年4月3日 学习了C#语言的class和start,update函数 2018年4月10日 学习了Unity的基础功能,搭建3D场景的方法 2018年4月17日 学习了C#语言的几个函数,做了几个简单的练习 2018年4月24日 Unity场景里面建模了电场演示体和带电体 2018年5月1日 了解了几个Unity官网例子 2018年5月8日 写了一个脚本,添加给带电体 2018年5月15日 写了一个脚本,添加给电场演示体 2018年5月22日 搭建了周围环境,做了期中报告 2018年5月29日 给电场演示体添加了电场矢量 2018年6月5日 带电体设置为3个,用3dsMax建模了控制台 2018年6月12日 给使用者提供了VR互动

后期计划

目前还没完成几个不同形状的带电体的模拟和使用者对带电体的操作空间。 打算这学期内完成实验介绍里的这些内容。

参考文献

  • Unity5实战 是以哦那个C#和Unity开发多平台游戏 清华大学出版社
  • VR与AR开发高级教程 基于Unity 人民邮电出版社
  • Unity 3D 脚本编程 使用C#语言开发跨平台游戏 中国工信出版集团

致谢

  • 感谢吕景林老师和魏心源老师的指导
  • 感谢黄文凯学长的帮助

附带文件

 
course/demo/projects/2018/vr_demonstration_electricfield.txt · 最后更改: 2018/06/21 01:03 由 15307116002
 
除额外注明的地方外,本维基上的内容按下列许可协议发布:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki