本页用于展示这一项目的细节,说明其出发点、设计以及效果,而非实现教程。实现教程与控制代码将在未来发布(可能由于学校要求,而不得不在毕业后发布)。
注:由于目前hololens设备并不在身边,暂时无法提供实际部署照片
注2:由于时间仓促,加之作者水平有限,本页内容尚有可完善之处,将在2022.3~2023.3期间重制
概述
这是STC(Space-time-cube,时空立方体)的实现。这一概念在1990s左右被提出,用于描绘一组轨迹,即物体在二维地理空间上的位置,随时间的变化。
位置信息表示在XOZ平面上,Y轴为时间信息;时间沿Y轴正方向增大。
本系统使用unity制作。收集了IEEE VAST CHALLENGE 2018数据集,以及MSRA geoLife 1.3数据集(实际并未使用)作为地理信息数据源。
图为使用cube作为体素的效果。
总体设计
参考资料:
[1] I. Kveladze and M.-J. Kraak, “What do we know about the space-time cube from cartographic and usability perspective,” Autocarto, no. September, pp. 16–18, 2012.
[2] J. A. W. Filho, W. Stuerzlinger, and L. Nedel, “Evaluating an Immersive Space-Time Cube Geovisualization for Intuitive Trajectory Data Exploration,” IEEE Trans. Vis. Comput. Graph., vol. 26, no. 1, pp. 514–524, 2020, doi: 10.1109/TVCG.2019.2934415.
[3] J. Wagner, W. Stuerzlinger, and L. Nedel, “The Effect of Exploration Mode and Frame of Reference in Immersive Analytics,” IEEE Trans. Vis. Comput. Graph., vol. 2626, no. c, 2021, doi: 10.1109/TVCG.2021.3060666.
[4] S. Y. Ssin, J. A. Walsh, R. T. Smith, A. Cunninqham, and B. H. Thomas, “GeoGate: Correlating geo-temporal datasets using an augmented reality space-time cube and tangible interactions,” 26th IEEE Conf. Virtual Real. 3D User Interfaces, VR 2019 - Proc., pp. 210–219, 2019, doi: 10.1109/VR.2019.8797812.
[5] U. Demšar and K. Virrantaus, “Space-time density of trajectories: Exploring spatio-temporal patterns in movement data,” Int. J. Geogr. Inf. Sci., vol. 24, no. 10, pp. 1527–1542, 2010, doi: 10.1080/13658816.2010.511223.
——需求分析——
需求可以概括为:
- 显示一组物体的运动轨迹,从而能确定目标物体在何时处于何位置;
- 物体运动轨迹可交互,以观察某一时刻或位置的详细信息;
- 提供查询机制,以寻找感兴趣物体,以及搜索物体之间的关系;
- 提供自定义标记机制,以在地图上添加标签,或修改配色;
详细设计
——视觉设计——
一个基础的问题是,如何呈现一个地理平面?
我们选择将一幅地图,按照virtualDesk隐喻,将其初始位置设定为平铺在XOZ平面上。
STC最主要的可视化问题,即如何表达其“位置”。根据上一阶段的定义,我们为物体在每一时刻上所处的位置制作了体素,来反映当前位置。为保持连贯性,强化“连续运动”的印象,每个体素之间会被连接起来。
不同物体默认分配不同颜色。
——交互设计——
我们计划让这幅“3D地图”能够被使用者在近距离或远距离交互,以查阅他们想要的信息。例如:
- 选择某一条轨迹,并虚化其他轨迹;
- 选择某一条轨迹,并保留与此轨迹接在一定距离内的其他轨迹;
- 为轨迹增加自定义注释,或修改颜色;
其中,选择操作应该通过手指接触虚拟物体(近距离操作)或远程点选。在未来,可能添加对语音选择的支持;
输出端目前只有视觉反馈,在未来可能添加语音反馈的支持。
实现
——视觉设计实现——
读取运动物体的坐标信息,按时间顺序绘制体素,经过坐标校正,与Unity场景中的地图校正对齐,即可。
这个部分并不是重点。
——交互设计实现——
对于MRTK工具包提供的操作方法而言,一个关键的前提是:可被接触或远距离接触交互物体需要有碰撞体积。 因此,上一阶段所涉及的体素,将不得不具有碰撞盒。
一个非常简单的方法是,直接使用unity预制的立方体,作为体素。但数据量过大时,大量具有独立碰撞盒的物体将无可争议地导致hololens卡顿。
一个相对困难的方法是,只将“体素”视为概念。使用mesh绘制整条轨迹,而物体运动位置作为mesh的控制点。对于绘制完成的mesh网格,为其整体添加一个碰撞体积,在响应交互行为时再具体计算交互对象。这确实能减少计算开销,但也使得交互的实现变得困难。
使用立方体体素
由于每个cube都默认具有碰撞体,我们只需要将交互响应脚本贴附到体素上就可以了。
使用mesh网格
由于整个网格只有一个碰撞体,如何保证精确地与目标对象交互成为了挑战。
一个可能的解决方法是,由于位置信息是按照时间顺序排列的,可以记录交互位置的Y轴(时间轴),按照物体总轨迹在Y轴的投影,获取具体交互的位置索引,返回数据中查询到详细信息。
但这一方法需要保证时间间隔足够长,否则在平面上短距离的横向位移将会被误判。
图为使用mesh的效果。
辅助交互手段
上一小节主要解决了“如何实现与轨迹交互”的问题,本节主要介绍辅助工具,如可拖拽进度条等。
(待更新)
——性能优化——
参见“交互设计实现”一节。
该程序的主要性能问题在于:如何取得交互体验(精确度、多样性)与设备性能的平衡。
应用
在新冠疫情期间,STC被用于解释‘时空密接’等概念,并进行时空关系分析。
If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !