掌桥专利:专业的专利平台
掌桥专利
首页

一种三维场景中漫游快速实现方法及系统

文献发布时间:2023-06-19 16:11:11



技术领域

本发明涉及三维虚拟技术领域,特别地涉及一种三维场景中漫游快速实现方法及系统。

背景技术

在具有三维场景的软件应用中,漫游已经成为了必不可少的功能,是对三维场景中地形地貌、模型、路网等空间要素最为直观的表现方式。按照漫游视角的不同通常将其分为第一人称和第三人称两种,第一人称为用户提供沉浸式体验,第三人称则让用户可以从控制者的视角进行操作。同时支持两种视角的漫游控制器,可以很好的增加用户的体验,但是开发并维护两种漫游控制器又会增加开发工作量,同时两种漫游控制器之间的切换和效果同步也会使事情变得复杂。

发明内容

有鉴于此,本发明提出一种三维场景中漫游快速实现方法及系统,在一个漫游控制器内,首先完成对目标对象模型和相机对象的控制;然后依次完成第一人称相机和第三人称相机的漫游功能,并在应用时,根据需要进行人称切换和效果同步。

本发明第一方面提供一种三维场景中漫游快速实现方法,该方法包括:设置漫游控制器的目标对象模型、相机对象及参数;绑定所述漫游控制器的交互事件;基于所述交互事件及所述漫游控制器的参数,计算所述目标对象模型及所述相机对象的朝向;根据所述目标对象模型及所述相机对象的朝向,计算所述目标对象模型及所述相机对象的位置。

进一步的,分别设置漫游控制器的目标对象模型和目标对象模型的本地旋转四元数、以及相机对象和相机对象的本地旋转四元数。

进一步的,所述漫游控制器的参数包括漫游控制器的移动速度、偏移速度、俯仰速度、第三人称相机的相机距离、累计偏移角变化量及累计俯仰角变化量。

进一步的,所述绑定所述漫游控制器的交互事件的步骤包括:绑定所述漫游控制器的鼠标事件,获取所述鼠标的移动间隔,包括X轴向移动间隔和Y轴向移动间隔;绑定所述漫游控制器的键盘事件,并将所述键盘的热键分别绑定到所述漫游控制器的前进、后退、左移和右移标志。

进一步的,所述计算所述目标对象模型及所述相机对象的朝向的步骤包括:根据所述鼠标的移动间隔,计算所述漫游控制器的新的偏移角和新的俯仰角;根据所述漫游控制器的新的偏移角,计算所述目标对象模型的朝向;根据所述漫游控制器的新的偏移角和新的俯仰角,计算所述相机对象的朝向。

进一步的,所述计算所述目标对象模型的朝向的步骤包括:根据所述漫游控制器的新的偏移角,计算目标对象模型偏移旋转变化的四元数;将目标对象模型偏移旋转变化的四元数与所述目标对象模型的本体旋转四元数相乘,得到所述目标对象模型的最新朝向。

进一步的,所述计算所述相机对象的朝向的步骤包括:根据所述漫游控制器的新的偏移角,计算所述相机对象偏移旋转变化的四元数;根据所述漫游控制器的新的俯仰角,计算所述相机对象俯仰旋转变化的四元数;将所述相机对象偏移旋转变化的四元数、所述相机对象俯仰旋转变化的四元数与所述相机对象的本体旋转四元数相乘,得到所述相机对象的最新朝向。

进一步的,所述计算所述目标对象模型及所述相机对象的位置的步骤包括:计算所述目标对象模型的移动距离和右方向,并对所述目标对象模型的朝向和右方向进行标准化;根据所述目标对象模型的朝向和右方向,计算所述目标对象模型的位置;将所述相机对象的位置设置为所述目标对象模型的位置;根据所述相机对象的朝向、所述目标对象模型的位置以及所述第三人称相机的相机距离,修正第三人称相机位置。

进一步的,所述计算所述目标对象模型的移动距离和右方向的步骤包括:根据所述目标对象模型的移动速度以及时间间隔,计算所述目标对象模型的移动距离;自定义上方向向量,根据所述上方向向量和所述目标对象模型的朝向,计算所述目标对象模型的右方向;将所述目标对象模型的朝向和右方向进行标准化。

本发明第二方面提供一种三维场景中漫游快速实现系统,该系统包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如上所述三维场景中漫游快速实现方法的步骤。

上述的三维场景中漫游快速实现方法,可以在一套控制逻辑下同时完成第一人称相机和第三人称相机的控制,确保参数同步和效果统一,开发工作量小且便于系统的维护。该方法还使得第三人称相机位置在第一人称相机位置的基础上进行简单的位置修正即可得到,极大的方便了第一人称相机和第三人称相机的切换工作。

附图说明

为了说明而非限制的目的,现在将根据本发明的优选实施例,特别是参考附图来描述本发明,其中:

图1是本发明一实施例提供的三维场景中漫游快速实现方法的流程图;

图2是本发明另一实施例提供的三维场景中漫游快速实现系统的示意图。

具体实施方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施例对本发明进行详细描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。

图1是本发明一实施例提供的三维场景中漫游快速实现方法的流程图。该三维场景中漫游快速实现方法在一个漫游控制器内,首先完成对目标对象模型和相机对象的控制;然后依次完成第一人称相机和第三人称相机的漫游功能,并在应用时,根据需要进行人称切换和效果同步。

请参阅图1,该三维场景中漫游快速实现方法包括以下步骤:

S100,设置漫游控制器的目标对象模型、相机对象及参数。

本实施例中,步骤S100中设置漫游控制器的目标对象模型、相机对象及参数的具体实现方式如下:

S101,设置漫游控制器操纵的目标对象模型。

首先,设置漫游控制器操纵的目标对象模型,该目标对象模型用于在三维场景中表示玩家本体。

设置目标对象模型时,同时设置目标对象模型的本地旋转四元数playerLocalQuat。

S102,设置漫游控制器操纵的相机对象。

接着,设置漫游控制器操纵的相机对象,并将相机对象的本地旋转四元数设置为目标对象模型父节点的旋转四元数。

S103,设置漫游控制器的参数。

本实施例中,漫游控制器的参数包括漫游控制器的移动速度、偏移速度、俯仰速度、第三人称相机的相机距离、累计偏移角变化量及累计俯仰角变化量。其中,设置漫游控制器的移动速度为moveSpeed;设置漫游控制器的偏移速度为yawSpeed;设置漫游控制器的俯仰速度为pitchSpeed;设置漫游控制器的第三人称相机的相机距离为cameraDis;设置漫游控制器的累计偏移角变化量为yaw,默认设为0;设置漫游控制器的累计俯仰角变化量为pitch,默认为0。

S200,将漫游控制器绑定交互事件。

本实施例中,交互事件包括鼠标事件和键盘事件。

具体的,步骤S200中将漫游控制器绑定交互事件的具体实现方式如下:

S201,绑定鼠标事件,获取鼠标的移动间隔。

漫游控制器绑定鼠标事件,当鼠标键下且拖动时,实时记录每两帧之间鼠标在屏幕上移动的距离间隔,包括X轴向移动间隔和Y轴向移动间隔。其中,X轴向移动间隔为DeltaX,Y轴向移动间隔为DelataY。

S202,绑定键盘事件。

漫游控制器绑定键盘事件,将指定热键WSAD分别绑定到漫游控制器的前进、后退、左移和右移标志。当指定热键按下时,将对应标志参数置为True;当指定热键抬起时,将对应标志参数置为False。

S300,控制目标对象模型及相机对象的朝向。

S301,根据鼠标的移动间隔,计算漫游控制器的新的偏移角和新的俯仰角。

本实施例中,根据鼠标的X轴向移动间隔计算漫游控制器的新的偏移角,计算方法如下:

yaw′=yaw+deltaX*yawSpeed

式中,yaw′为漫游控制器的新的偏移角,yaw为漫游控制器的累计偏移角变化量,deltaX为鼠标的X轴向移动间隔,yawSpeed为漫游控制器的偏移速度。

本实施例中,根据鼠标的Y轴向移动间隔计算漫游控制器的新的俯仰角,计算方法如下:

pitch′=pitch+deltaY*pitchSpeed

式中,pitch′为漫游控制器的新的俯仰角,pitch为漫游控制器的累计俯仰角变化量,deltaY为鼠标的Y轴向移动间隔,pitchSpeed为漫游控制器的俯仰速度。

S302,根据漫游控制器的新的偏移角,处理目标对象模型。

本实施例中,处理目标对象模型包括旋转目标对象模型,旋转目标对象模型只需要处理目标对象模型的偏移方向。其中,目标对象模型的偏移方向的计算方法如下:

S302-1,根据漫游控制器的新的偏移角yaw′,计算目标对象模型偏移旋转变化的四元数deltaQuat。计算方法如下:

theta=yaw′/2

deltaQuat=[0,sin(theta),0,cos(theta)]

S302-2,将目标对象模型偏移旋转变化的四元数deltaQuat与目标对象模型的本体旋转四元数playerLocalQuat相乘,得到目标对象模型的偏移旋转四元数Player.Quat。计算方法如下:

Player.Quat=multiply(playerLocalQuat, deltaQuat)

S302-3,将目标对象模型的偏移旋转四元数Player.Quat作为目标对象模型的最新朝向赋值给目标对象模型。

S303,根据漫游控制器的新的偏移角和新的俯仰角,处理相机对象。

本实施例中,处理相机对象包括处理相机对象的偏移方向和俯仰方向。其中,相机对象的偏移方向和俯仰方向的计算方法如下:

S303-1,根据漫游控制器的新的偏移角yaw′,计算相机对象偏移旋转变化的四元数yawQuat。

theta=yaw′/2

yawQuat=[0,sin(theta),0,cos(theta)]

S303-2,根据漫游控制器的新的俯仰角pitch′,计算相机对象俯仰旋转变化的四元数pitchQuat。

theta=pitch′/2

pitchQuat=[0,sin(theta),0,cos(theta)]

S303-3,将相机对象偏移旋转变化的四元数yawQuat、相机对象俯仰旋转变化的四元数pitchQuat与相机对象的本体旋转四元数相乘,得到相机对象的最新朝向Camera.Quat,并赋值给相机对象。

但是步骤S301已经计算了目标对象模型的偏移旋转四元数,为了优化性能,直接将目标对象模型的偏移旋转四元数Player.Quat乘以相机对象俯仰旋转变化的四元数pitchQuat即可得到相机对象的最新朝向。计算方法如下:

Camera.Quat=multiply(Player.Quat, pitchQuat)。

S400,控制目标对象模型及相机对象的位置移动。

步骤S400的具体实现如下:

S401,计算目标对象模型的移动距离和右方向,并对目标对象模型的朝向和右方向进行标准化。

以目标对象模型为玩家为例,当玩家移动时,根据每帧之间时间间隔deltaTime和玩家的移动速度计算得到玩家的移动距离,计算方法如下:

distance=deltaTime*moveSpeed

式中,distance为玩家的移动距离;deltaTime为时间间隔;moveSpeed为玩家的移动速度。

自定义上方向向量yaxis,根据自定义的上方向向量和玩家当前的朝向playerForward,计算得到玩家的右方向playerRight,计算方法如下:

yaxis=[0,1,0];

playerRight=cross(playerForward,yaxis)。

最后,将玩家的朝向和右方向进行标准化,具体方法如下:

playerForward=normalizeVector(playerForward);

playerRight=normalizeVector(playerRight)。

S402,根据目标对象模型的朝向和右方向,计算目标对象模型的位置。

以目标对象模型为玩家为例,根据玩家移动状态,计算得到玩家的移动位移向量disVector,具体如下:

当玩家前进时:

disVector=playerForward*distance

当玩家后退时:

disVector=-playerForward*distance

当玩家右移时:

disVector=playerRight*distance

当玩家左移时:

disVector=-playerRight*distance

式中,playerForward为玩家的朝向;distance为玩家的移动距离;playerRight为玩家的右方向。

然后,根据玩家的移动位移向量disVector更新玩家的位置,方法如下:

player.pos=player.pos+disVector

式中,player.pos为玩家的位置。

S403,设置相机对象的位置。

将相机对象的位置设置为目标对象模型的位置。

S500,修正第三人称相机位置。

当相机为第三人称相机时,根据相机的朝向cameraForward、目标对象模型的位置player.pos和第三人称相机距离cameraDis计算得到正确的第三人称相机位置,计算方法如下:

Camera.pos = player.pos - cameraDis * cameraForward。

式中,Camera.pos为第三人称相机位置。

上述的三维场景中漫游快速实现方法,可以在一套控制逻辑下同时完成第一人称相机和第三人称相机的控制,确保参数同步和效果统一,开发工作量小且便于系统的维护。本实施例利用同一套控制逻辑,实现对目标对象模型及相机对象的控制,并依次完成第一人称相机和第三人称相机的漫游功能,同时根据需要实现效果同步和自由切换。

上述的三维场景中漫游快速实现方法,使得第三人称相机位置只是在第一人称相机位置的基础上进行简单的位置修正得到了,极大的方便了第一人称相机和第三人称相机的切换工作。

相应于上面的方法实施例,参见图2,图2为本发明另一实施例所提供的三维场景中漫游快速实现系统的示意图,该系统100可以包括:

存储器101,用于存储计算机程序;

处理器102,用于执行上述存储器101存储的计算机程序时可实现如下步骤:

设置漫游控制器的目标对象模型、相机对象及参数;绑定所述漫游控制器的交互事件;基于所述交互事件及所述漫游控制器的参数,计算所述目标对象模型及所述相机对象的朝向;根据所述目标对象模型及所述相机对象的朝向,计算所述目标对象模型及所述相机对象的位置。

上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

相关技术
  • 一种三维场景中漫游快速实现方法及系统
  • 三维场景在线全景展示、沉浸式漫游、人机互动的实现方法及系统
技术分类

06120114730051