虚拟现实交互式应用开发及行为研究
本次毕业设计是一个在Unity平台上搭建的3DVR平台。
共四个子实验:静止直接接触实验、直线交互实验、静止射线接触实验及费茨定律验证实验。
一、 框架介绍
a) 平台背景
基于HTC VIVE头盔手柄设备与Unity2017 2.1p2(64bit)开发了一个模拟普通房间的虚拟现实场景,用于测量三维空间中的基于手柄的手部抖动测量。为尽可能提高沉浸感,本场景内嵌了完善的物理引擎,和一个完整的生活场景,给与第一次使用虚拟现实设备、体验虚拟现实场景的实验者提供更为舒适和易于接受的实验环境。
b) 实验标准物体
为采集数据,在实验场景内部设置了如下标准物体。
i. 搭建完毕的室内场景,内置一个略低于视线的桌子(Table),高度约为一米。位于(0,0,0)。该桌子在实验中起到控制实验者活动范围的作用,因为实验者无法与桌子重合。这使每个实验者距离实验物体的距离都大致相等,同时也保证他们可以在桌前自由活动,若有需要,HTC Vive设备也支持实验者采用坐姿完成此实验。
ii. 关闭gravity效果的透明度为50%标准圆球standardball,该圆球尺寸与标准圆球完全一致,位于(0.927,1.06,-0.539),碰撞体为球体,位于圆球中心点,半径为球体的五分之一,即0.02米。一旦实验圆球的圆心进入该碰撞体,则视为实验者已经做好准备可以开始实验。
iii. 关闭gravity效果的透明度为50%标准圆柱fizzmodel。由于不使用gravity,该圆柱能够在场景开始运作后仍保持稳定的位置不发生变动。位置为(-0.3,1.45,-0.765),半径0.1米(横截面与标准蓝色圆球保持一致),长度为0.54米,实验者不需走动即可将手柄从其开端移动到其末端,不设置碰撞体。该标准圆柱的开端与末尾各附着了一个黑色平面,一旦实验圆球触碰到开端平面,则数据开始记录;触碰到末端平面,则数据停止记录。开端平面的坐标为(-1.14,1.45,-0.757),末端平面坐标为(0.54,1.45,-0.757)。
iv. 黑色正方形标准物Pointingmodel。此标准物共五个,每一个的中心处都绘制了一个白色的圆点。正方形标准物的边长为0.1m,碰撞体积与其等大;白色圆点作为瞄准提示物,半径为0.03m,不设置碰撞体积。Pointingmodel的边长的设置能让最远端的PM恰好能被实验者的激光所碰触,不至因距离过远而射线脱靶。
c) 数据采集
本次实验的数据记录由Unity的碰撞体机制实现。该机制允许编程人员给每个物品设计一个“物理边框”,碰撞该边框,则视为与该物体交互,否则即使视觉上手柄已与该物体碰撞,也无法进行交互。所以,实验者手上握持的手柄模型其实并不能很好地完成精确碰撞的工作。在本次实验中的几个直接碰撞的手柄上都绑定了一个蓝色的圆球,直径为0.1m,称为实验物testballleft。
在实验手柄上绑定的手柄上附着了三个实验采集数据所用的程序。其中用于静止直接接触实验的是positionstatic,用于直线交互的是positionfix,用于费茨定律验证的是fizzlaw该程序能够记录手柄的三维坐标和时间戳,以逗号分开,一行记录一个时间点的数据。(x,y,z,time)。频率为10Hz,时间戳单位为ms。根据此时间戳,可以推出每一个实验者数据采集的时间。
d) 输入输出参数
在静止直接触碰实验和直线运动实验中不需按动任何键,仅需握持后触碰标准物即可。在最后一个静止射线触碰实验中,需要按Touchpad才能发出射线。
二、 实验过程
实验者首先被要求站定在实验室中某一固定点,然后握持手柄,确认手柄与头盔可以正常显示后再进行实验。在三个实验中实验者站定的位置一致,通过改动CameraRig来进行调整。实验分为弯臂和直臂握持,此时实验者每完成一次实验数据采集都需彻底放下手臂,再举起手臂固定为规定姿势进行下一次数据采集。
每名实验者每次数据采集的次数如下:
a) 费茨定律验证实验:每个ID采3次,共6个ID。
b) 静止直接接触实验:固定5s为采集一次数据,采10次。
c) 静止射线接触实验:固定5s为采集一次数据,每个Pointingmodel采3次,共15次。
d) 直线交互实验:采7次。
三、 实验者数据
实验者一:女,168cm
实验者二:女,156cm
实验者三:女,165cm
实验者四:方舟,女,163cm
实验者五:男,175cm
实验者六:男,170cm
实验者七:男,176cm
实验者八:男,172cm
实验者九:男,183cm
实验者十:雷宗木,男,175cm
四、 文件夹数据分类层次
记录数据的文件夹以data+n的编号命名,n代表一名实验者,编号与上述编号相同。每个文件夹中都有三个子文件夹,fizzdata内是该实验者的费茨定律验证实验数据;linedata是该实验者直线交互实验数据;pointdata是该实验者的静止直接接触实验数据。因静止射线选择实验为后续补充,故单独占一文件夹,其名为射线数据。
五、 matlab程序介绍
a) cdistant内为静止直接接触实验分析程序。
b) linedataanalysis内为直线交互实验分析程序。
c) raycalculate内为射线交互实验分析程序。
d) fizzcalculate内为费茨定律验证实验的计算ID的程序。
e) fizzprove内为费茨定律验证实验的拟合程序。