沉浸式技术,诸如虚拟现实和增强现实,已经为数据的展示、交互、探索提供了一种新型有效的形式。人们对沉浸式可视化与可视分析的应用产生了越来越多的需求,但目前为沉浸式环境构建应用程序和原型可视化设计仍然具有挑战性。现在大部分的沉浸式可视化应用都是依赖于Unity 3D环境编写的,多数编程人员还在编写底层代码进行数据解析、物体摆放和可视化映射等操作;同时,设计者需要在沉浸式环境中查看可视化,这导致迭代设计的效率十分低下。这篇文章[1]提出了DXR(Data visualization for eXtend Reality),一个开源的沉浸式可视化快速构建工具。该工具由大量的预制件和脚本包组成,如图1,能够为构建和重用三维可视化设计提供高级接口,用户可使用类似Vega-Lite的语法快速编写可视化映射,支持文本编辑器和内置原位GUI,并支持用户自定义marks和channels以满足更复杂的可视化设计。

图1,DXR支持快速的沉浸式可视化原型设计。(a) 展示一个三维散点图,右侧是内置GUI,可以设置数据来源和可视化映射;(b, c) 说明了映射可视化的语法规范;(d, e) 表示用户自定义marks对系统自带形状的替换;(f, g, h, i) 为应用案例。
图2简单说明了DXR的构成。DXR中的一个可视化是由GameObject预制件——vis-prefab表达的。它可以被添加到Unity场景中,并可以通过属性编辑器或者脚本进行编辑。vis-prefab从可视化说明文档——vis-specs中读取可视化映射。vis-specs是一个JSON文件,如图1(b),内含指向相关数据的URL及编码可视化的标记与通道。当数据或映射发生改变时,可视化结果也会实时进行重新渲染。为了满足不同专业水平的用户使用,DXR采取了分层的编辑策略。对于非编程人员,他们可以通过简单的预制件拖拽和文档绑定,并通过GUI进行属性映射得到一个可视化结果;有一定经验的开发者可以通过脚本添加更细节的映射关系,并可以自定义标记预制件;进阶开发者可以通过派生类为marks类添加更多自定义属性和更复杂的表现样式。

图2,DXR的构成。用户在vis-specs中对数据和可视化映射进行编辑,从而利用预制件进行vis-prefab的渲染。
DXR的工作流程分为四步,如图3,依次为数据映射说明,缺失属性推断,可视化场景构建和可视化位置摆放。数据映射的语法规范是类似Vega-Lite的交互式图形的语法,它在可视化编码上灵活易学,可以提高迭代设计的效率。我们把DXR中的可视化称作dxrvis,由data, mark, encodings, interactions组成,这些组成部分由对应的vis-specs进行声明。DXR采用的data是由行列构成的表格数据,mark表示编码每个数据的图形符号(预制件物体,需要放置于特定的文件夹中,使用时系统直接根据其名字进行搜索),encodings描述mark与数据的映射关系,interactions包括filter&linking和手势交互。encodings涵盖了channel, field, data-type, value, scale和guide。DXR自带了一系列三维可视化中常用的channels,包括x, y, z, width, height, depth, color, opacity, size, length, xrotation, yrotation, zrotation, xdirection, ydirection, and zdirection。field表示该channel编码的数据特征,data-type表示数据是数量型,名义型还是序数型变量。scale表示数据和坐标轴的映射关系,guide描述了坐标轴和图例的特性。

图3,说明了DXR的工作流程。
为了避免用户多次查看文档,DXR会帮助用户推断缺失的属性并以默认值填充。在vis-specs补充完整之后,系统会开始进行可视化场景的创建,首先对数据进行解析并建立相应的数据结构,进而读取mark对应的Unity GameObject,为每条数据记录对应的标记进行初始化,并依赖可视化映射原则进行重新赋值,改变标记的形态和位置。最后再生成坐标轴,图例,过滤器等等内容,共同组成一个vis-prefab。其坐标原点有一个红色的控制按钮,用户通过“点击红色按钮——再次点击放置”的操作改变视图在空间中的位置,从而实现自由控制视图位置。

图4,说明了如何在DXR代码中控制交互。左图表示已经可视化出来的属性,右图表示没有可视化出来的属性。
DXR支持的交互有两类,一是视图间的传统交互,二是基于人体姿势的交互。DXR支持视图间通过vis-specs的声明进行交互式查询过滤和连接。过滤分为阈值过滤和选择过滤两种,如图4,在代码中,被可视化出来的属性通过“filter”字段进行控制,未被可视化出来的属性通过“interaction”字段进行控制。DXR支持用户凝视数据点时展示属性tooltip和多种手势交互(如缩放,旋转等),其他用户追踪手势的设备也同样可以兼容。
图1(a)展示了该系统的原位图形用户界面(In-situ GUI)。在初始系统设计中,用户只能通过编辑代码修改vis-specs文件,但沉浸式环境和编程环境的反复切换增加了迭代设计的负担,同时增加了非编程人员的使用难度。为了解决这些问题,系统支持运行原位图形界面,用户通过下拉菜单的选择即可改变映射关系,这些操作会直接修改vis-specs文件,并实时更新可视化效果。使用原位图形界面,设计者可以一直保持在沉浸式环境中调试不同marks和channels的组合直到完成设计,原型设计可以快速复用,从而大大加快了开发进程。为了支持更复杂的可视化效果,系统支持用户自定义图形标记。用户将自己设计的prefab放入指定marks文件夹,即可以名字为关键词进行调用。如图5(b, d),用户使用书的形状代替barchart的传统标记,用书的高度编码数量。图5(c, e)中通过继承系统中的marks基类,可以支持更复杂的标记属性,如火焰粒子系统,直接用火势动画的强度编码森林大火的严重程度。

图5,DXR中除了自带的图形标记,还支持用户自定义标记形状,更复杂地,还支持修改marks类从而添加自定义属性。
该工具可以满足沉浸式信息可视化,地理空间可视化,嵌入式数据可视化,沉浸式可视分析工作站,沉浸式体育数据分析等等应用,文章中给出了大量相应设计案例,此处不再赘述。在性能测试方面,当数据量增加时,除在HoloLens中由于其GPU限制而表现能力较差之外,VR环境下基本满足一般规模的沉浸式可视化需求。这篇工作为沉浸式可视化开发提供了一个良构快捷的工具,可以在沉浸式可视化开发中直接使用。但因为目前版本较为初级,有很多可视化类型并未支持(如graph, tree等),在日后的工作中,尚可继续完善。
[1] Sicat R, Li J, Choi J, et al. DXR: A Toolkit for Building Immersive Data Visualizations[J]. IEEE transactions on visualization and computer graphics, 2018.
评论关闭。