一种海量空间数据下Web端第一人称视角漫游方法技术

技术编号:37229734 阅读:14 留言:0更新日期:2023-04-20 23:12
本发明专利技术公开了一种海量空间数据下Web端第一人称视角漫游方法。它包括如下步骤,步骤一:进行第一人称视角漫游初始化设置;步骤二:进行第一人称视角漫游,开始监听漫游操作并循环动态更新相机姿态与位置;步骤三:按下结束命令,关闭鼠标、键盘这些事件响应,关闭漫游循环逻辑,结束第一人称视角漫游过程。本发明专利技术克服了传统方法不能实现逼真、实时、高效的第一人称视角漫游的缺陷;具有能实现逼真、实时、高效的第一人称视角漫游的优点。的第一人称视角漫游的优点。的第一人称视角漫游的优点。

【技术实现步骤摘要】
一种海量空间数据下Web端第一人称视角漫游方法


[0001]本专利技术涉及三维可视化与空间漫游
,具体地说它是一种海量空间数据下Web端第一人称视角漫游方法。更具体地说它是一种支持三维空间数据、运行于Web端环境下,考虑物理碰撞、重力、跳跃等因素的第一人称视角漫游方法。

技术介绍

[0002]随着3DGIS、BIM及虚拟现实技术的不断发展,其应用领域越来越广泛,三维虚拟空间场景为用户提供了效果逼真、直观形象的虚拟环境。三维场景漫游作为三维空间可视与用户交互的重要组成部分,提供了观察者视角的步行或飞行漫游,实现场景的交互式快速浏览与细节查看。按照观察视角的不同,三维场景漫游可分为第一人称视角和第三人称视角漫游。其中,第一人称视角漫游通过观察者视角浏览三维虚拟场景,具有更直观、沉浸感更强的漫游体验,可观察到场景中细致入微的细节,应用更为广泛。
[0003]在三维场景的第一人称漫游过程中,为了逼真的模拟人在三维场景中的交互动态,需要考虑碰撞检测、重力下坠、跳跃、爬坡等因素,其中涉及大量的数据读取、计算机图形运算与逻辑判断,需要消耗相当的硬件资源,容易引起渲染与可视化过程的卡顿。常规的第一人称视角漫游功能,多应用于资源调用和响应效率更高的桌面端,其利用复杂的模型包围盒碰撞检测与物理模拟引擎进行实现,通常三维场景较小或空间数据量有限,以保证运行效率。而在使用越来越广泛的Web三维应用中,尤其在GIS+BIM大范围多尺度可视化
,三维场景复杂且数据海量,由于Web端较低的资源调用效率以及轻量化硬件设备的限制,采用传统方法不能实现逼真、实时、高效的第一人称视角漫游。
[0004]因此,开发一种海量空间数据下Web端第一人称视角漫游方法很有必要。

技术实现思路

[0005]本专利技术的目的是为了提供一种海量空间数据下Web端第一人称视角漫游方法,为一种支持大空间数据量,运行于Web环境下的高效第一人称视角漫游方法;本专利技术充分考虑碰撞、重力、跳跃、加减速等诸多因素,在突破Web端自身运行效率低、响应速度慢的限制的同时,能实现逼真、实时、高效流畅的第一人称视角的步行漫游与飞行漫游。
[0006]为了实现上述目的,本专利技术的技术方案为:一种海量空间数据下Web端第一人称视角漫游方法,其特征在于:包括如下步骤,
[0007]步骤一:进行第一人称视角漫游初始化设置;
[0008]步骤二:进行第一人称视角漫游,开始监听漫游操作并循环动态更新相机姿态与位置;
[0009]步骤三:按下结束命令,关闭鼠标、键盘等事件响应,关闭漫游循环逻辑,结束第一人称视角漫游过程。
[0010]在上述技术方案中,在步骤一中,进行第一人称视角漫游初始化设置包括漫游参数设置、交互式操作项设置;
[0011]具体包括以下子步骤:
[0012]步骤1.1,进行漫游参数初始化设置,包括通用漫游参数设置以及步行、飞行两种不同模式下的专用参数设置,分别进行设定;
[0013]步骤1.2,进行交互式操作项初始化设置,包括鼠标和键盘操作项初始化设置,用以指定漫游时的交互操作具体按键。
[0014]在上述技术方案中,在步骤一中,通用漫游参数设置有最大最小俯仰角maxPitch和minPitch、碰撞检测距离容差collisionToler和鼠标操作灵敏度poseSens;
[0015]飞行漫游参数设置包括飞行位移基础速度flyBaseSpeed、飞行位移加速度flyAcceler和飞行位移极速flyMaxSpeed;
[0016]步行漫游参数设置包括人员高度personHeight、人员视线高度eyeHeight、步行水平位移基础速度walkBaseSpeed、步行水平位移加速度walkAcceler、步行水平位移极速walkMaxSpeed、重力垂直位移加速度gravityAcceler和跳跃垂直位移初速度jumpSpeed。
[0017]在上述技术方案中,在步骤一中,指定漫游时的交互操作具体按键中具体的鼠标操作项为:鼠标水平、垂直滑动控制视线方位角和俯仰角;键盘操作项为:按下W键、S键、A键和D键控制视点前进、后退、左移和右移,Shift键加速,Q键、E键降低或抬升视点高度,T键开启或关闭碰撞检测,Space键步行模式时跳跃,F键切花飞行和步行漫游模式。
[0018]在上述技术方案中,在步骤二中,进行第一人称视角漫游,开启漫游鼠标、键盘等操作监听开始监听漫游操作并循环动态更新相机姿态与位置,记录所有鼠标与键盘漫游操作状态;循环进行后续相机姿态、位置动态变化的漫游过程;
[0019]具体包括以下子步骤:
[0020]步骤2.1,开启漫游鼠标、键盘等操作监听,记录所有鼠标与键盘漫游操作状态,包括以下子步骤:
[0021]步骤2.1.1,浏览器进入PointerLock模式,鼠标光标消失,使得鼠标可不受屏幕范围影响实现无限滑动;然后开启鼠标滑动(mousemove)事件监听,当鼠标滑动时,可获取鼠标滑动变换量movement,其中鼠标横向位移量为movement.movementX,纵向位移量为movement.movementY;
[0022]步骤2.1.2,开启键盘按下(keydown)和松开(keyup)事件监听,当按下或松开W、S、A、D、Q、E、Shift等操作键后,同步设定变量wPress、sPress、aPress、dPress、qPress、ePress、shiftPress为1或者0;按下T之后变量collisionTest=!collisionTest,用以切换漫游时是否进行碰撞检测(初始化collisionTest=true);按下Space之后,如果当前为步行模式,且人员处于地面时,则起跳(设置垂直向上初速度为verticalSpeed=jumpSpeed);按下F之后变量walkMode=!walkMode,用以切换步行漫游和飞行漫游模式(初始化walkMode=true);
[0023]步骤2.2,在开启漫游操作监听之后,不断循环进行后续漫游过程,循环可在每一个渲染帧进行,也可以根据固定间隔时间deltaTime进行;在每一个后漫游循环中,检测一次鼠标和键盘操作情况,并据此对相机进行一次更新,不断循环此过程,则可实现平滑的三维场景漫游。
[0024]在上述技术方案中,实现平滑的三维场景漫游,具体包括以下子步骤:
[0025]步骤2.2.1,在每一次漫游循环过程一开始,根据漫游操作更新漫游速度值,并生
成由鼠标、键盘操作以及重力加速度等引起的相机变化量(注:步行漫游模式时才考虑重力加速度,飞行漫游类似于无人机悬停,因此不考虑重力影响);引起的相机变化量具体分为:由鼠标滑动引起的相机姿态变化、由键盘操作和重力加速度引起的相机位置变化;
[0026]步骤2.2.2,对步骤2.2.1上一步骤生成的相机姿态变化量、位置变化量进行判断,并据此生成新的相机姿态值和相机位置值;
[0027]步本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种海量空间数据下Web端第一人称视角漫游方法,其特征在于:包括如下步骤,步骤一:进行第一人称视角漫游初始化设置;步骤二:进行第一人称视角漫游,开始监听漫游操作并循环动态更新相机姿态与位置;步骤三:按下结束命令,关闭鼠标、键盘这些事件响应,关闭漫游循环逻辑,结束第一人称视角漫游过程。2.根据权利要求1所述的海量空间数据下Web端第一人称视角漫游方法,其特征在于:在步骤一中,进行第一人称视角漫游初始化设置包括漫游参数设置、交互式操作项设置;具体包括以下子步骤:步骤1.1,进行漫游参数初始化设置,包括通用漫游参数设置以及步行、飞行两种不同模式下的专用参数设置,分别进行设定;步骤1.2,进行交互式操作项初始化设置,包括鼠标和键盘操作项初始化设置,用以指定漫游时的交互操作具体按键。3.根据权利要求2所述的海量空间数据下Web端第一人称视角漫游方法,其特征在于:在步骤一中,通用漫游参数设置有最大最小俯仰角maxPitch和minPitch、碰撞检测距离容差collisionToler和鼠标操作灵敏度poseSens;飞行漫游参数设置包括飞行位移基础速度flyBaseSpeed、飞行位移加速度flyAcceler和飞行位移极速flyMaxSpeed;步行漫游参数设置包括人员高度personHeight、人员视线高度eyeHeight、步行水平位移基础速度walkBaseSpeed、步行水平位移加速度walkAcceler、步行水平位移极速walkMaxSpeed、重力垂直位移加速度gravityAcceler和跳跃垂直位移初速度jumpSpeed。4.根据权利要求3所述的海量空间数据下Web端第一人称视角漫游方法,其特征在于:在步骤一中,指定漫游时的交互操作具体按键中具体的鼠标操作项为:鼠标水平、垂直滑动控制视线方位角和俯仰角;键盘操作项为:按下W键、S键、A键和D键控制视点前进、后退、左移和右移,Shift键加速,Q键、E键降低或抬升视点高度,T键开启或关闭碰撞检测,Space键步行模式时跳跃,F键切花飞行和步行漫游模式。5.根据权利要求4所述的海量空间数据下Web端第一人称视角漫游方法,其特征在于:在步骤二中,进行第一人称视角漫游,开启漫游鼠标、键盘这些操作监听开始监听漫游操作并循环动态更新相机姿态与位置;循环进行后续相机姿态、位置动态变化的漫游过程;具体包括以下子步骤:步骤2.1,开启漫游鼠标、键盘这些操作监听,记录所有鼠标与键盘漫游操作状态,包括以下子步骤:步骤2.1.1,浏览器进入PointerLock模式,鼠标光标消失,使得鼠标不受屏幕范围影响实现无限滑动;然后开启鼠标滑动事件监听,当鼠标滑动时,获取鼠标滑动变换量movement,其中鼠标横向位移量为movement.movementX,纵向位移量为movement.movementY;步骤2.1.2,开启键盘按下和松开事件监听,当按下或松开W、S、A、D、Q、E、Shift这些操作键后,同步设定变量wPress、sPress、aPress、dPress、qPress、ePress、shiftPress为1或者0;按下T之后变量collisionTest=!collisionTest,用以切换漫游时是否进行碰撞检测;按下Space之后,如果当前为步行模式,且人员处于地面时,则起跳;按下F之后变量
walkMode=!walkMode,用以切换步行漫游和飞行漫游模式;步骤2.2,在开启漫游操作监听之后,不断循环进行后续漫游过程,循环在每一个渲染帧进行,或根据固定间隔时间deltaTime进行;在每一个后漫游循环中,检测一次鼠标和键盘操作情况,并据此对相机进行一次更新,不断循环此过程,则实现平滑的三维场景漫游。6.根据权利要求5所述的海量空间数据下Web端第一人称视角漫游方法,其特征在于:实现平滑的三维场景漫游,具体包括以下子步骤:步骤2.2.1,在每一次漫游循环过程一开始,根据漫游操作更新漫游速度值,并生成由鼠标、键盘操作以及重力加速度这些引起的相机变化量;引起的相机变化量具体分为:由鼠标滑动引起的相机姿态变化、由键盘操作和重力加速度引起的相机位置变化;步骤2.2.2,对步骤2.2.1上一步骤生成的相机姿态变化量、位置变化量进行判断,并据此生成新的相机姿态值和相机位置值;步骤2.2.3,根据步骤2.2.2中所产生的新的相机姿态与相机位置,对相机参数进行设置,实现相机姿态与位置的更新;然后回到步骤2.2.1,进行下一个循环的漫游过程;不断重复即步骤2.2.1至步骤2.2.3,则不断进行平滑、高效的第一人称视角飞行与步行漫游。7.根据权利要求6所述的海量空间数据下Web端第一人称视角漫游方法,其特征在于:在步骤2.2.1中,生成引起的相机变化量,包括以下子步骤:步骤2.2.1.1,在该漫游循环内,根据键盘Shift、Space操作按键状态以及重力加速度对漫游速度参数进行动态更新;如果是飞行漫游模式,进入步骤2.2.1.1.1;如果是步行漫游模式,进入步骤2.2.1.1.2:步骤2.2.1.1.1,更新飞行漫游位移速度,实现Shift按键渐进式加速,漫游速度更新计算公式如下式(1)、式(2)所示;其中,flyAcceler为飞行漫游加速度;deltaTime为循环间隔时间;flyBctseSpeed为飞行漫游基础位移速度;flyMaxSpeed为飞行漫游最大速度;flySpeed是更新后的飞行漫游位移速度:flySpeed是更新后的飞行漫游位移速度:步骤2.2.1.1.2,更新步行漫游水平位移速度,实现Shift按键渐进式加速;更新飞行漫游垂直位移速度,实现重力下坠、跳跃;步行水平位移速度计算公式具体如下式(3)、式(4)所示;其中,walkAcceler为飞行漫游加速度;deltaTime为循环间隔时间;walkBaseSpeed为飞行漫游基础位移速度;watlkMaxSpeed为飞行漫游最大速度;hSpeed是更新后的步行漫游水平位移速度:
步行垂直位移速度计算公式如下式(5)所示;其中,vSpeed为步行漫游垂直位移速度,当和地面或者顶面发生碰撞时,直接赋为0;当处于地面时,且按下了Space按键,则赋值为跳跃初速度jumpSpeed;其他情况则进行重力加速计算,gravi...

【专利技术属性】
技术研发人员:张航张力马瑞李双平刘成堃李经天吴学宇郭雯
申请(专利权)人:长江空间信息技术工程有限公司武汉
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1