欢迎来到专业的优谦范文网平台! 工作总结 工作计划 心得体会 述职报告 思想汇报 事迹材料 疫情防控 共同富裕
当前位置:首页 > 范文大全 > 公文范文 > 正文

一种基于视线数据可视化的虚拟现实教学系统

时间:2023-09-23 11:35:03 来源:网友投稿

朱天乐 姜忠鼎

(复旦大学上海市数据科学重点实验室 上海 201203) (复旦大学软件学院 上海 201203)

20世纪90年代以来,随着信息技术的不断发展,E-Learning(网络化学习)这一新兴教学模式在教育领域迅速发展。E-Learning模式通过互联网储存、利用、更新、分配和分享教学内容或信息,并使用标准化的网络技术传送给位于网络终端的学生。然而,E-Learning模式存在着知识碎片化、退课率高等问题。研究者们针对这一问题进行反思,提出了混合式学习(Blended learning)这一教学理念,将传统课堂教学方式和E-Learning的优势结合起来,在发挥教师引导与监督作用的同时,体现学生作为学习过程主体的主动性、积极性和创造性。

凭借强烈的沉浸式体验,虚拟现实技术在混合式学习领域有着广泛应用。目前,虚拟现实教学系统根据场景来源的不同可以分为两类。第一类是基于全景视频的虚拟现实教学系统,这类系统使用全景视频或全景照片构建虚拟现实教学场景。随着全景相机的普及,一些研究者使用这种方式构建虚拟现实教学场景,构建临床医学教学应用[1-2]。针对通用教学场景,Mckenzie等[3]通过探究360°视频对学生临场感和教学体验的影响,为教师提供了一套360°全景视频教学资源制作方法。

第二类虚拟现实教学系统通过三维数字建模构建教学场景。这类系统可以帮助学生更直观地看到真实世界中难以见到的场景与环境,身临其境地感受到传统教学手段难以表达的抽象信息,解决教学中学生想象力不足的问题。Giza 3D[4]是一个运行在沉浸式显示环境的虚拟现实教学系统,通过对吉萨金字塔进行三维重建,在课堂上带领学生在金字塔内部漫游。针对通用的教室教学场景,Sharma等[5]提出了一款多人在线虚拟现实教学系统。系统基于教室的动态3D模型,用户以虚拟化身的形式进入虚拟教室,进行师生互动。为评估虚拟现实教学的教学效果,Liou等[6]设计了一个集成了3D交互式虚拟现实数字信息内容的虚拟现实学习环境,通过对照实验验证了虚拟现实教学系统对用户学习动机的积极影响。

然而,现有的研究还存在一些问题。现有的虚拟现实教学系统[1-2,6]大多采用电子问卷的形式,调查学生对于知识的掌握状况。这种评估方式存在一定的滞后性,无法实时反映课堂的教学情况。同时,使用电子问卷只能间接评估学生上课认真程度,无法直观地反映学生在课堂上的注意力情况。因此,为了充分发挥教师在教学过程中的引导与监督作用,虚拟现实教学系统需要一种更直观且实时性更强的评估手段。

眼球追踪技术[7]是一种通过红外设备或图像采集设备,获取、建模和模拟眼球运动信息的科学应用技术。近年来,眼球追踪技术被广泛应用于VR应用中。Pettersson等[8]设计了运行在VR环境下的瑞文渐进实验,利用眼球追踪技术捕捉用户的视线轨迹并生成可视化分析报告。Banire等[9]利用眼球追踪技术捕捉自闭症儿童在VR教室中的关注点分布,研究教室环境对自闭症儿童注意力的影响。在虚拟现实教学领域,Soler等[10]针对基于VR的交互式学习环境设计了一套基于眼球追踪数据的学习体验评估理论模型。Wang等[11]通过分析学生在VR环境中调试程序时的关注区域,从而改善程序设计课程的教学体验。然而,目前少有研究针对通用虚拟现实教室教学场景进行实时注意力可视化评估。

基于上述讨论,本文设计并实现一套基于视线数据可视化的虚拟现实教学系统,使用眼球追踪设备采集用户视线数据,实时处理并生成可视化结果。可视化结果直观地反映学生观看区域与视线轨迹,供教师实时评估课堂教学情况,从而发挥虚拟现实教学中教师对学生的引导与监督作用。针对学生用户对课件的整体关注情况,本文提出一种全体用户实时关注区域可视化方法,设计空间聚类和数据统计两种方法生成可视化结果。教师可以根据自己的需要,在两种可视化方法之间进行切换。针对学生用户关注区域随时间变化情况,本文提出一种用户有效关注区域轨迹可视化方法,设计一种基于密度的在线聚类算法有效过滤用户的无效关注点数据。

基于视线数据可视化的虚拟现实教学系统主要分为多媒体内容呈现和视线数据可视化两个模块。多媒体内容呈现模块使用了复旦大学交互式图形学实验室的已有研究成果[12],使用一台外部推流服务器和一台流转发服务器,将多媒体内容以流媒体的形式发送给各个客户端。

视线数据可视化模块使用眼球追踪设备采集用户视线数据,实时处理并生成可视化结果。针对学生用户对课件的整体关注情况,本文提出一种全体用户实时关注区域可视化方法,设计空间聚类和数据统计两种方法生成可视化结果。教师可以根据自己的需要,在两种可视化方法之间进行切换。针对学生用户关注区域随时间变化情况,本文提出一种用户有效关注区域轨迹可视化方法,设计一种基于密度的在线聚类算法有效过滤用户的无效关注点数据。

视线数据可视化模块结构如图1所示,学生客户端从眼球追踪设备获取用户视线信息,并通过转发服务器发送给可视化服务器。可视化服务器根据用户关注点数据生成可视化结果,再经由转发服务器发送给教师客户端,由教师客户端呈现给教师用户。

图1 视线数据可视化系统连接示意图

在教学过程中,学生是否认真观看教学课件,在教学课件上感兴趣的是哪一块内容,是教师希望实时了解的。为满足这一需求,需要对全体用户实时关注区域进行可视化呈现。全体用户实时关注区域可视化方法需要解决两个问题:用户的关注点集中在哪里;用户的关注点在整张课件上是如何分布的。

本文提出一种全体实时关注区域可视化方法,利用层级化六边形网络划分课件区域,并在网格基础上生成可视化结果。针对用户关注点集中区域,本文设计一种基于空间聚类的可视化方法,通过空间聚类对零散的关注点进行集中呈现。针对用户关注点分布问题,本文设计一种基于数据统计的可视化方法,根据关注点分布的统计学规律进行可视化呈现。教师可以根据自己的需要,在两种可视化方法之间进行切换。全体用户实时关注区域可视化方法主要分为生成正六边形网络、更新正六边形网络、更新基于空间聚类的可视化结果、更新基于数据统计的可视化结果四个步骤,核心流程示意如下:

map←CreateMap(lowest_layer,aspect)

while b_running do

vision_list←GetVisionListFromNetwork()

for vision_data in vision_list do

UpdateMap(vision_data)

end for

UpdateClusterResult(elem_threshold,cluster_threshold)

UpdateStatisticsResult(cov_threshold)

end while

2.1 正六边形单元网络生成

综合考虑实用度、美观度等因素,本文采用层级化正六边形网格对课件区域进行空间划分。正六边形网络采用六边形坐标系[13]描述,如图2所示。

图2 六边形坐标系示意图

在层级化网络中,一个高层级正六边形单元被划分为7个低层级的正六边形单元和12个低层级的正三角形单元,如图3所示。一个高层级正三角形单元被划分为1个低层级的正六边形单元和3个低层级的正三角形单元,如图4所示。

图3 高层级正六边形划分示例

图4 高层级正三角形划分示例

在更新整个多层级网络时,首先将原始视线数据转换到六边形坐标系,并加入到对应的底层单元中。然后,自底向上进行迭代,直到最顶层网络更新完成。更新正六边形网络的核心流程示意如下:

function UpdateMap(old_pos,new_pos)

old_elem←FindElemByPos(lowest_layer,old_pos)

old_elem.point_count←old_elem.point_count-1

//更新old_elem的统计信息

UpdateElemData(ole_elem)

//自底向上逐级更新统计信息

while ole_elem <> root_elem do

old_elem←old_elem.parent

UpdateElemData(old_elem)

end while

new_elem←FindElemByPos(lowest_layer,new_pos)

new_elem.point_count←new_elem.point_count+1

UpdateElemData(new_elem)

while new_elem <> root_elem do

new_elem←new_elem.parent

UpdateElemData(new_elem)

end while

end function

2.2 基于空间聚类的可视化方法

在实际教学场景中,教师需要实时了解学生关注点集中在课件的哪片区域。为满足这一需求,需要对散乱的关注点进行集中的呈现,这首先需要对关注点进行空间聚类。本文设计一种基于空间聚类的可视化方法,对用户关注点数据进行空间聚类并根据聚类结果生成可视化元素。

基于空间聚类的可视化方法主要分为空间聚类与可视化元素生成两个步骤。由于课件区域已经被划分为层级化正六边形网格,基于空间聚类的可视化方法使用了STING[14]聚类算法这一基于网格的聚类算法进行空间聚类。在可视化元素的选择上,综合考虑美观性、通用性等因素,以及教师用户需要快速读取关注人数的需求,基于空间聚类的可视化方法使用了钟表这一圆形元素来呈现一片区域内的关注点数量。

STING算法的聚类过程主要分为标记相关单元和连接相关单元两个步骤。首先,逐层级搜索包含关注点数量point_count不少于阈值elem_threshold的单元,将这些单元标记为相关单元。然后,根据选定的层级layer,利用深度优先搜索算法,将result_list[layer]中相邻的相关单元连接成一个簇。设簇中单元包含的关注点数量总和为point_sum,若满足point_sum>cluster_threshold,则将该簇视为一个合法的簇。

空间聚类结果由参数elem_threshold和cluster_threshold控制。elem_threshold的值越大,参与聚类的相关单元越少,越难生成簇。cluster_threshold的值越大,合法的簇需要包含的关注点越多,越难生成簇。

最后,根据空间聚类结果生成钟表可视化元素。钟表的半径R由簇包含的正六边形网格面积S以及预设的参数Rbase和Rscale计算得到:

(1)

可视化元素之间可能出现重叠,也可能有可视化元素不完全在屏幕边界内,此时使用碰撞避让算法对可视化元素的位置进行调整。

(2)

图5 调整重叠的可视化元素

此外,如果出现钟表元素不完全在屏幕边界内的情况,则沿X轴和Y轴移动钟表元素,直到钟表元素完全在屏幕边界内。持续迭代调整可视化元素的位置,直到不存在重叠或是超出屏幕边界的情况,或是达到迭代次数上限。此时生成的即为最终的可视化结果。

2.3 基于数据统计的可视化方法

在实际教学场景中,学生用户的关注点在课件上是如何分布的,也是教师希望实时了解的内容。为满足这一需求,需要根据关注点分布的统计学规律进行可视化呈现。本文设计一种基于数据统计的可视化方法,利用一片区域内关注点密度的离散系数[15]描述该区域用户关注点分布情况。离散系数越小,说明该单元内关注点分布越均匀。

根据预设的离散系数阈值,基于数据统计的可视化方法从层级化网络中筛选出若干个不重叠的网格单元,并根据这些网格单元生成可视化结果。在保证密度离散系数不超过阈值的前提下,基于数据统计的可视化方法选取更高层级的网格单元进行可视化呈现,以保证可视化结果的简洁。在可视化元素的选择上,基于数据统计的可视化方法也使用圆形钟表元素进行可视化呈现。

评估指标数据的建立则需要根据花溪红岩水库的实际变量和评估计算关系式,通过数据管理体系中的数据结构划分,分解评估数据结构。

(3)

(4)

(5)

基于数据统计的可视化方法分为搜索目标单元和更新可视化结果两个步骤。首先,利用深度优先搜索算法对层级化单元网络进行遍历,查询单元的离散密度系数。如果一个单元的离散密度系数小于阈值cov_threshold,则使用该单元的数据生成可视化结果。算法的核心流程示意如下:

function SearchElems(elem,new_list,cov_threshold)

if elem.count>0

if elem.cov

new_list.Add(elem)

else

for subelem in elem.full_cover_list do

SearchElems(subelem,new_list,

cov_threshold)

end if

end if

end function

接着,通过对比本次更新获得的待处理六边形单元列表new_list和上次更新时获得的钟表可视化元素列表old_clock_list对应的六边形单元列表old_list,对可视化结果进行更新。对于new_list中元素elem,如果old_list中存在单元bigger_elem覆盖elem,则elem对应的时钟元素是由bigger_elem对应时钟元素分裂而来的。如果old_list中存在元素smaller_elem被elem覆盖,则elem对应时钟元素由smaller_elem对应时钟元素融合而来。算法的核心流程示意如下:

function UpdateClockElems(new_list,old_clock_list)

new_clock_list←CreateNewList()

for new_elem in new_list do

new_clock←CreateNewClock()

for old_clock in old_clock_list do

old_elem←old_clock.elem

//如果当前六边形单元对应的clock已存在,则更新该clock

if old_elem=new_elem then

new_clock←old_clock

//如果已有clock对应的六边形单元覆盖当前六边形单元,则

//当前六边形单元对应的clock由该已有clock分裂而来

else if old_elem.Cover(new_elem) then

Split(old_clock,new_clock)

//如果当前六边形单元覆盖已有clock对应的六边形单元,则

//当前六边形单元对应clock由这些被覆盖的clock融合而来

else if new_elem.Cover(old_elem) then

Compose(old_clock,new_clock)

end if

end for

new_clock_list.Add(new_clock)

end for

old_clock_list←new_clock_list

end function

在实际教学场景中,教师除了需要了解全班同学的整体注意力情况,还需要了解单个用户关注的区域是如何随时间变化的。为满足这一需求,需要关注点数据流中对时间上连续且空间上接近的关注点进行集中呈现。

本文提出一种用户有效关注区域轨迹可视化方法,将一定时间窗口内包含一定数量关注点的空间区域视为一个有效关注区域,并针对该区域进行可视化呈现。本文设计一种基于密度的在线聚类算法生成有效关注区域序列,并使用实心圆作为最终呈现的可视化元素,通过颜色反映区域包含的关注点数量多少,通过透明度反映该关注区域距离当前时刻的时间长短。

3.1 基于密度的在线聚类算法

DBSCAN(基于密度的聚类算法)[16]是一种基于高密度连接区域的经典离线聚类算法。针对在线数据流,Aliperti等[17]在DBSCAN的基础上提出了SF-DBSCAN算法,通过模糊的聚类边界快速演化聚类。Reddy等[18]提出了一种StreamSW算法,在在线阶段利用滑动窗口模型保存流数据的概要,并在离线阶段使用DBSCAN算法进行聚类。

不同于SF-DBSCAN等在线聚类算法,本文系统所需的簇需要在时间序列上具有连续性。另外,不同于以StreamSW为代表的另一类算法,本文系统的聚类过程需要在线进行。针对上述需求,本文基于DBSCAN设计一种在线聚类算法,利用当前时间窗口的数据集质心作为聚类的核心对象。针对序列D=(x1,x2,…,xn)和给定的参数(,min_pts),参照DBSCAN算法定义的术语,本文使用了如下术语:

质心:对于序列F=(x1,x2,…,xn),F中数据点空间位置的平均值称为F的质心,即xc=Σxi/N(F)。

密度直达:对于序列F=(x1,x2,…,xn-1,xn),假设F的子序列G=(x1,x2,…,xn-1)的质心为xc,若xn处于xc的-邻域中,则称xn对xn-1密度直达。

密度可达:对于序列G=(x1,x2,…,xn,xn+1,…,xm),若对于任意xi(i∈[n,m-1]),满足xi+1到xi密度直达,则称xm到xn密度可达。

密度连通:对于序列G=(x1,x2,…,xn),若xn到x1密度可达,则称G是一个密度连通序列。

簇:如果一个密度连通序列G包含的空间点数量不少于阈值min_pts,则G中的空间点构成一个簇。

根据上述术语,基于密度的在线聚类算法核心步骤示意如下:

function UpdateTrailResult(trail,epsilon,min_pts)

while trail.pending <> EMPTY do

point←trail.pending.PopHead()

if |point-trail.cur.center|

trail.cur.Add(point)

else

trail.backup.Add(point)

end if

if trail.backup.count>=min_pts then

if trail.cur.count>=min_pts then

CreateCluster(trail.cur)

end if

Clear(trail.cur)

trail.pending.PushHead(trail.backup)

end if

end while

end function

通过持续运行该算法,可以获取时间上有序的簇序列,序列中每个簇代表一个用户有效关注区域。算法通过参数epsilon和min_pts控制生成簇的结果。参数epsilon代表用户有效关注区域的半径,该参数数值越大,越容易生成合法的簇,且簇中包含关注点坐标分布范围更广。min_pts代表构成一个用户有效区域的最小关注点数量,该参数数值越小,越容易生成合法的簇。

3.2 有效关注区域轨迹可视化结果生成

在使用基于密度的在线聚类算法生成的簇序列中,每个簇包含以下信息:

数据点数量N:该簇包含的数据点的数量。

质心xc:该簇的质心位置。

时间戳Tlatest:该簇中最新数据点对应的时间戳。

半径R:在数值上等于该簇中距离质心最远的数据点到质心的距离。

根据簇包含的信息生成圆形的可视化元素,圆心位置为xc,圆的半径为R。然后,利用簇的时间戳Tlatest、程序当前时间戳Tcur和一个预设的最大留存时间Tmax,设置该可视化元素的透明度α:

(6)

最后,根据数据点数量N,使用热力图法设置可视化元素的颜色。绘制直线连接时序上相邻的可视化元素,即可生成最终的可视化结果。

4.1 实验环境

本文实验运行环境由1名教师、2名真实学生和30名模拟学生组成。教师和真实学生用户佩戴HTC Vive Pro Eye虚拟现实头盔,头盔内置有眼球追踪模块。模拟学生节点向服务器发送30组录制好的学生视线数据,用来模拟多用户使用情况。此外,系统运行需要的多媒体服务器、可视化服务器和转发服务器分别运行在两台计算机上。表1列出了本文实验系统使用的所有计算机节点硬件配置与具体用途。这些计算机节点运行在千兆有线局域网中。

表1 实验计算机硬件配置表

4.2 实验结果

首先我们分别对教师端和真实学生客户端的运行帧率进行测试。测试结果如图6所示,教师端的平均帧率为87.1帧/s,学生客端的平均帧率为88.5帧/s。两者的画面帧率基本可以满足虚拟现实应用的需求。

图6 实验场景运行帧率统计

接着,我们测试教师端呈现可视化结果的整体效果。在虚拟现实教室场景教师讲台斜上方悬浮着一块虚拟屏幕,供教师查看与操作课件,如图7所示。面板底部有一条进度条,显示有多少学生正在观看课件。

图7 教师端可视化结果呈现

接下来,我们对全体用户实时关注区域可视化方法进行实验。实验使用的正六边形层级网格一共分为4层,其中:第1层是顶层;第4层是底层。实验使用录制好的30组模拟数据作为学生视线数据源。

首先,我们对基于空间聚类的可视化方法进行实验。在实验中,使用不同颜色对属于不同簇的网格进行着色。实验分为三种情形,三种情形中使用的关注点数据相同,使用的控制参数如表2所示。

表2 基于空间聚类的可视化方法实验参数表

实验情形1的运行结果如图8所示。可以发现,屏幕中央含有关注点的单元被识别成了一个簇,生成一个圆形钟表元素。

与实验情形1相比,实验情形2中elem_threshold的值从1增加到了2,表示只有至少包含2个关注点的网格能参与聚类。实验情形2的运行结果如图9所示,可以发现,屏幕中央的钟表元素一分为二,且两侧网格着色不同。此外,图8中只包含1个关注点的着色网格在图9中未着色,这说明这些网格未参与聚类。

图9 基于空间聚类的可视化方法实验情形2运行结果

与实验情形2相比,实验情形3中cluster_threshold的值从4增加到5,这表示只有包含至少5个关注点的簇才是合法的簇。实验情形3的运行结果如图10所示,可以发现,图9左侧网格着色和钟表元素消失了,右侧网格着色和钟表元素无变化。

图10 基于空间聚类的可视化方法实验情形3运行结果

分析对比基于空间聚类的可视化方法三种实验情形的运行结果,可以发现基于空间聚类的可视化方法能够根据参数elem_threshold和cluster_threshold正确地生成可视化结果。

接着,我们对基于数据统计的可视化方法进行实验。实验分为三种情形,三种情形中用户关注点在第4层级正六边形网格的分布情况如表3所示。除此之外,三种实验情形的控制参数cov_threshold分别为1.0、1.0和1.5。

表3 基于数据统计的可视化方法实验情形第4层级

通过对比可以发现,在三种情形中,用户关注点均在第3层级坐标(0,0,0)的大正六边形网格覆盖范围内。与此同时,情形2和情形3使用的关注点数据相同,情形1和情形2使用的关注点数据不同。经过计算可得,实验情形1中大正六边形的密度标准差σ=2.49,密度离散系数cv=0.75,小于预设的离散系数阈值cov_threshold,因此生成的可视化结果为一个合并的大时钟如图11所示。

图11 基于数据统计的可视化方法实验情形1运行结果

与此同时,实验情形2中大正六边形的密度标准差σ=4.35,密度离散系数cv=1.30,大于预设的离散系数阈值cov_threshold,因此生成的可视化结果为分裂的六个小时钟如图12所示。

图12 基于数据统计的可视化方法实验情形2运行结果

实验情形3中关注点分布与实验情形2相同,大正六边形的密度标准差σ=4.35,密度离散系数cv=1.30。但是,由于实验情形3中离散系数阈值cov_threshold从1.0增大到1.5,这导致大正六边形的密度离散系数cv小于离散系数阈值,生成的结果又变回一个合并的大时钟如图13所示。

图13 基于数据统计的可视化方法实验情形3运行结果

分析对比基于数据统计的可视化方法三种实验情形的运行结果,可以发现基于数据统计的可视化方法能够根据参数cov_threshold正确地生成可视化结果。

接着,我们对用户有效关注区域轨迹可视化方法进行测试,实验使用真实用户实时视线作为数据源。单用户有效关注区域可视化结果如图14所示。可以发现,出现越早的可视化元素透明度越高,出现超过一定时间后消失。

图14 单用户有效关注区域轨迹可视化结果

最后,我们对系统的实时性进行了测试。首先,学生端向服务器发送关注点数据,此时记录时间戳t1。服务器收到后,更新数据并生成可视化结果,将可视化结果以1 920×1 080分辨率的图片形式发送给客户端。客户端接收图片并渲染到虚拟教室场景中,此时记录时间戳t2。取时间间隔dt=t2-t1作为关注点显示延迟的参考值。将上述过程循环运行1 000次,并对1 000个关注点显示延迟数据进行分析,统计结果如图15所示,延迟最大为124.0 ms,平均延迟为76.3 ms。这一延迟可以满足系统的实时性需求。

图15 关注点变化显示延迟折线图

实验结果表明,本文视线数据可视化模块可以直观地反映学生用户的观看情况,且关注点变化显示延迟可以满足系统实时性的需求。

本文设计并实现一套基于视线数据可视化的虚拟现实教学系统,使用眼球追踪设备采集用户视线数据,实时处理并生成可视化结果。可视化结果直观地反映学生观看区域与视线轨迹,供教师实时评估课堂教学情况,从而发挥虚拟现实教学中教师对学生的引导与监督作用。针对学生用户对课件的整体关注情况,本文提出一种全体用户实时关注区域可视化方法,设计空间聚类和数据统计两种方法生成可视化结果。教师可以根据自己的需要,在两种可视化方法之间进行切换。针对学生用户关注区域随时间变化情况,本文提出一种用户有效关注区域轨迹可视化方法,设计一种基于密度的在线聚类算法有效过滤用户的无效关注点数据。实验结果表明,系统具有良好的可用性,能够直观实时地反映用户的观看情况。未来我们将把更多类型数据接入到后台分析系统中,并设计更多种类的可视化算法,从而更加全面地反映课堂教学情况。

猜你喜欢关注点六边形虚拟现实冬奥关注点新体育(2022年2期)2022-02-09知识快餐店 到处都是六边形小哥白尼(趣味科学)(2021年6期)2021-11-02寻找关注点 提高复习效率——以初中教学中“0”为关注点为例甘肃教育(2020年14期)2020-09-11下半年尿素市场四大关注点今日农业(2019年12期)2019-08-13如何分析一组数据的集中和分散——数据分析的两个关注点中学生数理化·七年级数学人教版(2019年6期)2019-06-25创意六边形无限翻童话世界(2018年32期)2018-12-03怎样剪拼学生导报·高中版(2017年23期)2017-09-10怎样剪拼学生导报·初中版(2017年23期)2017-09-10REALITY BITES汉语世界(2017年3期)2017-06-05风口上的虚拟现实商周刊(2017年24期)2017-02-02

推荐访问:虚拟现实 可视化 视线