基于虚拟场景的对象移动方法、装置及电子设备与流程

文档序号:33466373发布日期:2023-03-15 06:46阅读:30来源:国知局
基于虚拟场景的对象移动方法、装置及电子设备与流程

1.本公开涉及计算机技术领域,尤其涉及一种基于虚拟场景的对象移动方法、装置及电子设备。


背景技术:

2.2.5d(2.5维)游戏能够提供介于2d(2维)平面和3d(3维)立体世界之间的一种游戏效果。2.5d也称伪3d,其利用2d图形来呈现3d的虚拟场景,从而能够避免处理3d图形耗费的大量计算资源,还能够实现比2d更加逼真的立体效果。
3.根据游戏情节的设置,虚拟场景通常会包括可移动区域和不可移动区域,例如,不可移动区域可能是虚拟场景中障碍物占据的区域。在一些2.5d游戏中,为了保证虚拟对象在虚拟参见中的移动过程与游戏情节相符,会采用2d-sdf(signed distance field,有符号距离场)技术来存储虚拟场景在二维平面上的移动信息,例如,存储虚拟场景对应二维平面上各个二维坐标,以使虚拟对象在虚拟场景中的移动范围限制在可移动区域。
4.但是,上述技术方案所仅支持虚拟对象在二维平面中的移动,而无法实现虚拟对象在立体空间中的移动,例如,虚拟对象在一个立体的楼梯中上下移动,使得用户的游戏体验受到影响。


技术实现要素:

5.本公开提供一种基于虚拟场景的对象移动方法、装置及电子设备,能够实现虚拟对象在三维空间中的移动效果,提升用户的游戏体验。本公开的技术方案如下:
6.根据本公开实施例的第一方面,提供一种基于虚拟场景的对象移动方法,该方法包括:
7.确定虚拟场景中的至少一个可达三维位置,该可达三维位置为该虚拟场景中的虚拟对象可到达的位置;
8.从该可达三维位置的至少一个搜索方向上的至少一个不可达三维位置中,确定该可达三维位置的目标三维位置,该不可达三维位置为放置有障碍物的位置,该目标三维位置与该可达三维位置之间的距离满足目标距离条件;
9.响应于控制该虚拟对象向目标方向移动的控制操作,基于该至少一个可达三维位置与该目标三维位置之间的距离,确定该虚拟对象在该虚拟场景中的移动路径,该移动路径用于绕开该目标方向上的目标三维位置所放置的障碍物。
10.在一种可能实施方式中,该从该可达三维位置的至少一个搜索方向上的至少一个不可达三维位置中,确定该可达三维位置的目标三维位置,包括:
11.对于任一该可达三维位置的至少一个搜索方向,获取该搜索方向上与该可达三维位置之间的高度差不大于目标高度差的至少一个不可达三维位置;
12.从获取到的该至少一个不可达三维位置中,确定在该至少一个搜索方向上与该可达三维位置之间的距离最小的该目标三维位置。
13.在一种可能实施方式中,该响应于控制该虚拟对象向目标方向移动的控制操作,基于该至少一个可达三维位置与该目标三维位置之间的距离,确定该虚拟对象在该虚拟场景中的移动路径,包括:
14.响应于该控制操作,从该虚拟场景中的至少一个可达三维位置中,确定该虚拟对象当前所在的三维区域内的至少一个第一三维位置;
15.基于该至少一个第一三维位置与对应的目标三维位置之间的距离,以及,该目标方向上的至少一个目标三维位置所放置的障碍物的碰撞范围,确定该移动路径,该移动路径包括的可达三维位置位于该碰撞范围之外。
16.在一种可能实施方式中,该基于该至少一个第一三维位置与对应的目标三维位置之间的距离,以及,该目标方向上的至少一个目标三维位置所放置的障碍物的碰撞范围,确定该移动路径,包括:
17.基于该至少一个第一三维位置与对应的目标三维位置之间的距离,确定该目标方向上与该目标三维位置之间的距离大于该碰撞范围尺寸的至少一个第二三维位置;
18.基于所确定的至少一个第二三维位置,生成该移动路径。
19.在一种可能实施方式中,该方法还包括:
20.若该目标三维位置所放置的障碍物为虚拟场景中的动态障碍物,根据该虚拟场景中放置移动后的该动态障碍物的不可达三维坐标,确定针对移动后的该动态障碍物的至少一个可达三维位置;
21.该基于该至少一个第一三维位置与对应的目标三维位置之间的距离,确定该目标方向上与该目标三维位置之间的距离大于该碰撞范围尺寸的至少一个第二三维位置,包括:
22.基于该至少一个第一三维位置与对应的目标三维位置之间的距离,从针对该移动后的动态障碍物的至少一个可达三维位置中,确定该目标方向上与该目标三维位置之间的距离大于该碰撞范围尺寸的至少一个第二三维位置。
23.在一种可能实施方式中,该确定该虚拟对象在该虚拟场景中的移动路径之前,该方法还包括:
24.存储该至少一个不可达三维位置对应的障碍物效果参数,该交互效果参数指示该虚拟对象与该不可达三维位置所放置的障碍物之间的交互效果。
25.根据本公开实施例的第二方面,提供一种基于虚拟场景的对象移动装置,该装置包括:
26.确定单元,被配置为执行确定虚拟场景中的至少一个可达三维位置,该可达三维位置为该虚拟场景中的虚拟对象可到达的位置;
27.搜索单元,被配置为执行从该可达三维位置的至少一个搜索方向上的至少一个不可达三维位置中,确定该可达三维位置的目标三维位置,该不可达三维位置为放置有障碍物的位置,该目标三维位置与该可达三维位置之间的距离满足目标距离条件;
28.移动路径确定单元,被配置为执行响应于控制该虚拟对象向目标方向移动的控制操作,基于该至少一个可达三维位置与该目标三维位置之间的距离,确定该虚拟对象在该虚拟场景中的移动路径,该移动路径用于绕开该目标方向上的目标三维位置所放置的障碍物。
29.在一种可能实施方式中,该确定单元被配置为执行:
30.对于任一该可达三维位置的至少一个搜索方向,获取该搜索方向上与该可达三维位置之间的高度差不大于目标高度差的至少一个不可达三维位置;
31.从获取到的该至少一个不可达三维位置中,确定在该至少一个搜索方向上与该可达三维位置之间的距离最小的该目标三维位置。
32.在一种可能实施方式中,该移动路径确定单元被配置为执行:
33.响应于该控制操作,从该虚拟场景中的至少一个可达三维位置中,确定该虚拟对象当前所在的三维区域内的至少一个第一三维位置;
34.基于该至少一个第一三维位置与对应的目标三维位置之间的距离,以及,该目标方向上的至少一个目标三维位置所放置的障碍物的碰撞范围,确定该移动路径,该移动路径包括的可达三维位置位于该碰撞范围之外。
35.在一种可能实施方式中,该移动路径确定单元被配置为执行:
36.基于该至少一个第一三维位置与对应的目标三维位置之间的距离,确定该目标方向上与该目标三维位置之间的距离大于该碰撞范围尺寸的至少一个第二三维位置;
37.基于所确定的至少一个第二三维位置,生成该移动路径。
38.在一种可能实施方式中,该装置还包括:
39.动态确定单元,被配置为执行若该目标三维位置所放置的障碍物为虚拟场景中的动态障碍物,根据该虚拟场景中放置移动后的该动态障碍物的不可达三维坐标,确定针对移动后的该动态障碍物的至少一个可达三维位置;该移动路径确定单元被配置为执行:基于该至少一个第一三维位置与对应的目标三维位置之间的距离,从针对该移动后的动态障碍物的至少一个可达三维位置中,确定该目标方向上与该目标三维位置之间的距离大于该碰撞范围尺寸的至少一个第二三维位置。
40.在一种可能实施方式中,该装置还包括:
41.参数存储单元,被配置为执行存储该至少一个不可达三维位置对应的障碍物效果参数,该交互效果参数指示该虚拟对象与该不可达三维位置所放置的障碍物之间的交互效果。
42.根据本公开实施例的第三方面,提供一种电子设备,该电子设备包括:
43.一个或多个处理器;
44.用于存储该处理器可执行程序代码的存储器;
45.其中,该处理器被配置为执行该程序代码,以实现上述第一方面提供的基于虚拟场景的对象移动方法。
46.根据本公开实施例的第四方面,提供一种计算机可读存储介质,该计算机可读存储介质包括:当该计算机可读存储介质中的程序代码由电子设备的处理器执行时,使得该电子设备能够执行上述第一方面提供的基于虚拟场景的对象移动方法。
47.根据本公开实施例的第五方面,提供一种计算机程序产品,包括一条或多条指令,该一条或多条指令由电子设备的一个或多个处理器执行,使得该电子设备能够执行上述第一方面提供的基于虚拟场景的对象移动方法。
48.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
49.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
50.图1是根据一示例性实施例示出的一种实施环境的示意图;
51.图2是根据一示例性实施例示出的一种基于虚拟场景的对象移动方法的流程图;
52.图3是根据一示例性实施例示出的一种基于虚拟场景的对象移动方法的流程图;
53.图4是根据一示例性实施例示出的一种搜索目标三维位置的示意图;
54.图5是根据一示例性实施例示出的一种第一三维位置的示意图;
55.图6是根据一示例性实施例示出的一种计算动态障碍物的sdf距离的示意图;
56.图7是根据一示例性实施例示出的一种确定滑行方向的示意图;
57.图8是根据一示例性实施例示出的一种基于虚拟场景的对象移动装置的框图;
58.图9是根据一示例性实施例示出的一种服务器的框图。
具体实施方式
59.为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
60.需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
61.需要说明的是,本公开所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本公开中涉及到的用户账号都是在充分授权的情况下获取的。
62.首先,对本技术涉及的术语进行简单介绍。
63.虚拟场景:是指应用程序在终端上运行时显示(或提供)的虚拟环境。该虚拟场景可以是对真实世界的仿真环境,也可以是半仿真半虚构的环境,还可以是纯虚构的环境。该虚拟场景可以是2维虚拟场景、2.5维虚拟场景和3维虚拟场景中的任意一种,下述实施例将以虚拟场景是2.5维虚拟场景为例进行来说明,但本技术对此不加以限定。
64.虚拟对象:是指在虚拟场景中的可活动对象。该可活动对象可以是虚拟物品、虚拟人物、虚拟动物、动漫人物等。可选的,每个虚拟对象在虚拟场景中具有自身的形状和体积,占据虚拟场景中的一部分空间。可选地,用户能够控制虚拟对象在虚拟场景中移动。
65.bfs(breadth first search,宽度优先搜索):一种图搜索算法,从搜索位置往外拓展搜索,以与搜索位置的距离进行排序。
66.sdf(signeddistance field,有符号距离场):存储每个点到模型表面的最近距离,即将模型划出一个表面,在模型表面外侧的点数值大于0,在模型表面内侧的点数值小
于0。
67.图1是根据一示例性实施例示出的一种实施环境的示意图,参见图1,该实施环境包括:服务器101和终端102。
68.其中,终端102用于显示虚拟场景。在一些实施例中,终端102运行应用程序,显示虚拟场景,并响应于用户对虚拟场景中虚拟对象的控制操作,显示虚拟对象在虚拟场景中移动。
69.其中,服务器101用于执行本公开提供的基于虚拟场景的对象移动方法。在一些实施例中,服务器101用于为终端102中运行的应用程序提供后台服务,示例性地,服务器101根据终端102中用户对虚拟对象的控制操作,确定虚拟场景中虚拟对象的移动路径,以使终端102能够显示该虚拟对象响应于用户的控制操作在虚拟场景中移动。
70.在一些实施例中,在实现本公开提供的基于虚拟场景的对象移动方法时,可以由服务器101承担主要计算工作,终端102承担次要计算工作;或者,服务器101承担次要计算工作,终端102承担主要计算工作;或者,服务器101和终端102之间采用分布式计算架构进行协同计算。
71.其中,服务器101与终端102可以通过有线或无线通信方式进行直接或间接的连接,本公开实施例对此不作限定。可选地,上述服务器101和终端102的数量可以更多或更少,本公开实施例对此不加以限定。
72.在一些实施例中。服务器101可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式文件系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(content delivery network,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器。当然,服务器101还可以包括其他功能服务器,以便提供更全面且多样化的服务。
73.在一些实施例中,终端102可以为智能手机、智能手表、台式电脑、手提电脑、虚拟现实终端、增强现实终端、无线终端、和膝上型便携计算机等设备中的至少一种,终端102具有通信功能,可以接入互联网,终端102可以泛指多个终端中的一个,本实施例仅以终端102来举例说明。
74.接下来结合一些实施例对本公开提供的基于虚拟场景的对象移动方法进行介绍。图2是根据一示例性实施例示出的一种基于虚拟场景的对象移动方法的流程图,如图2所示,该方法由上述服务器执行,包括以下步骤201至步骤204。
75.在步骤201中,服务器确定虚拟场景中的至少一个可达三维位置,该可达三维位置为该虚拟场景中的虚拟对象可到达的位置。
76.在本公开实施例中,虚拟场景为三维场景,相应地,虚拟场景包括多个三维位置。在一些实施例中,该三维位置可以用虚拟场景中的空间坐标表示,例如,(x,y,z),其中,y为该三维位置相对于二维平面(例如地面)的高度,x和z指示该三维位置投影到该二维平面(例如地面)上的二维位置。
77.在一些实施例中,该虚拟场景是一个平面投影存在重叠的三维空间,也即是,虚拟场景中多个三维位置在地面上的投影存在重叠,例如,虚拟场景中设置有旋转楼梯,用于放置旋转楼梯的各个三维位置之间在地面上的投影存在重叠。
78.在本公开实施例中,该虚拟场景中的多个三维位置包括可达三维位置和不可达三
维位置。其中,该可达三维位置为该虚拟场景中的虚拟对象可到达的位置,例如,虚拟场景的地面上可行走的位置,或者,虚拟场景中允许虚拟对象攀爬的楼梯(包括多个连续的台阶)。其中,该不可达三维位置为放置有障碍物的位置,该障碍物能够对虚拟对象的移动造成影响,例如,虚拟对象在移动过程中无法穿过只能绕过的石头、墙壁或柱子。
79.在本公开实施例中,该虚拟场景相当于被栅格化,从而能够用多个离散的三维位置来表示该虚拟场景,基于此,虚拟对象在虚拟场景中的移动过程可以被简化为一个可达三维位置到另一个可达三维位置的路径规划过程。
80.在步骤202中,服务器从该可达三维位置的至少一个搜索方向上的至少一个不可达三维位置中,确定该可达三维位置的目标三维位置,该不可达三维位置为放置有障碍物的位置,该目标三维位置与该可达三维位置之间的距离满足目标距离条件。
81.在本公开实施例中,服务器以一个可达三维位置为搜索出发位置,向多个搜索方向搜索到至少一个不可达三维位置,从该至少一个不可达三维位置中,确定出与该可达三维位置之间的距离满足目标距离条件的该目标三维位置。
82.在一些实施例中,该目标距离条件是指:该不可达三维位置与该可达三维位置之间的距离最小。
83.在步骤203中,服务器响应于控制该虚拟对象向目标方向移动的控制操作,基于该至少一个可达三维位置与该目标三维位置之间的距离,确定该虚拟对象在该虚拟场景中的移动路径,该移动路径用于绕开该目标方向上的目标三维位置所放置的障碍物。
84.其中,该控制操作可以由运行应用程序的终端向该服务器发送,该应用程序运行以显示该虚拟场景。在一些实施例中,该目标方向能够由终端根据用户操作确定,例如,终端响应于用户在触摸屏上的滑动操作,确定将控制该虚拟对象向虚拟场景中的哪个方向移动(也即是目标方向);又例如,终端响应于鼠标或键盘等外设的输入信号,确定该控制操作对应的目标方向。
85.其中,通过从多个搜索方向上进行搜索,能够从该可达三维位置在多个搜索方向上与虚拟场景中的不可达三维位置之间的距离,进而确定出满足目标距离条件的距离,以得到目标三维位置。由于不可达三维位置为放置有障碍物的位置,因此,服务器根据该至少一个可达三维位置与目标三维位置之间的距离,即可确定出向目标方向移动的过程中可能会阻挡该虚拟对象的障碍物的位置,从而确定出能够精准绕开该障碍物的移动路径。
86.本公开实施例提供的技术方案,能够针对虚拟对象在三维的虚拟场景中的移动过程,确定出能够精准绕开障碍物的移动路径,从而实现虚拟对象在三维空间中的真实移动效果,提升用户的游戏体验。
87.上述图2所示仅为本公开的基本流程,下面对本公开提供的方案进行进一步阐述。图3是根据一示例性实施例示出的一种基于虚拟场景的对象移动方法的流程图,如图3所示,该方法由上述服务器执行,包括以下步骤301至步骤305。
88.在步骤301中,服务器确定虚拟场景中的至少一个可达三维位置,该可达三维位置为该虚拟场景中的虚拟对象可到达的位置。
89.本步骤参考步骤201。
90.在一些实施例中,虚拟场景中的三维位置能够用空间坐标表示。服务器能够获取该虚拟场景对应的空间坐标集合,进而从该空间坐标集合中,确定出至少一个可达空间坐
标(也即是可达三维位置)。
91.在一些实施例中,该空间坐标集合可以是字典(dictionary),字典是一种以键值对的形式存储任意类型数据的数据结构,其中,键可以是要描述的对象,值可以是该对象的一种属性。对于本公开涉及的空间坐标而言,键值对的键可以表示空间坐标,键值对的值可以指示该空间坐标是否可达。例如,用于存储虚拟场景中空间坐标的字典initmap,字典initmap中的字典对象以键值对“dict<vector3,bool>”表示,其中,键“vector3”表示空间坐标;值“bool”指示空间坐标是否可达:“bool”为“true”(真)表示该空间坐标是可达空间坐标,“bool”为“false”(假)表示该空间坐标是放置有障碍物的不可达空间坐标。
92.上述“bool”是有两种逻辑状态的布尔变量,用于以逻辑判断的形式指示空间坐标是否可达,在另一些实施例中,也可以使用其他类型的变量来指示空间坐标是否可达,例如,值为整型变量“int”,值为0指示空间坐标可达,值为1指示空间坐标不可达。
93.在一些实施例中,服务器将该至少一个可达三维位置对应的可达空间坐标存储为可达坐标集合。在一些实施例中,该可达坐标集合可以是字典。例如,用于存储至少一个可达空间坐标的字典sdfmap,字典sdfmap中一个字典对象以键值对“dict<vector3,float>”表示,其中,键“vector3”表示可达空间坐标,值“float”能够用于存储该可达空间坐标的属性信息,例如,后续步骤中确定出的与目标三维位置之间的距离。上述“initmap”和“sdfmap”是字典对象的名称,其中,“initmap”为初始化地图(initial map)的简写,“sdfmap”为有符号距离场地图(signed distance field map)的简写,后续不作赘述。
94.在另一些实施例中,还可以以其他数据结构来存储上述空间坐标,例如,数组对象,本公开对此不做限定。
95.在一些实施例中,能够根据虚拟场景中障碍物和可行走区域的布置,来得到上述空间坐标的键值对中用于指示可达和不可达的值。在一些实施例中,服务器获取该虚拟场景的障碍物布置图像,根据该障碍物布置图像中像素点的位置以及像素值,确定该虚拟场景中放置有障碍物的位置,其中,像素值的大小可以指示三维位置的高度,像素值越大则表示该位置的障碍物越高;若一个像素点的像素值为0,则表示该像素点对应的位置未放置有障碍物,虚拟对象可以到达该位置(可以行走)。
96.在另一些实施例中,上述空间坐标集合中未存储的空间坐标则对应于虚拟场景中既不可达也未放置有障碍物的三维位置,例如,虚拟场景的边界位置等,此类既不可达也未放置有障碍物的三维位置在确定移动路径的过程中也会被视为不可达位置。
97.在步骤302中,服务器对于任一该可达三维位置的至少一个搜索方向,获取该搜索方向上与该可达三维位置之间的高度差不大于目标高度差的至少一个不可达三维位置。
98.在一些实施例中,服务器以一个可达三维位置(x,y,z)为搜索出发位置,根据虚拟场景中的地面(平面xoz)确定搜索方向,例如,搜索方向可以是相对(x,y,z)的前向(x+n,z)、后向(x-n,z)、左向(x,z+n)和右向(x,z-n)等方向,其中,n为虚拟场景的单位长度,或者,单位长度的整数倍,例如,单位长度为1,n可以为1、2或3等。基于此,即可从一个可达三维位置为中心向外逐个位置进行搜索。在另一些实施例中,服务器能够以虚拟场景中的边界位置或任意固定位置开始进行搜索,本技术对此不作限定。
99.上述对搜索方向的介绍过程仅为示例性的,在一些实施例中,搜索方向还可以包括更多方向,例如,左前方、右前方、左后方和右后方,以实现精度更高的搜索,从而减少对
象移动的卡顿情况,本公开对此不做限定。
100.在一些实施例中,该目标高度差指示该虚拟场景中虚拟对象在高度方向上所能移动的最远距离,例如,该目标高度差为1,则在一个搜索方向上可以搜索到与该可达三维位置之间的高度差为0和1的三个三维位置,高度差为1的两个三维位置包括:在高度方向上比可达三维位置高1和比可达三维位置低1的三维位置。在一些实施例中,服务器可以按照高度差从上到下依次搜索,例如,依次搜索y+1、y和y-1三个高度。
101.在一些实施例中,服务器能够基于步骤301中所提及的字典initmap,通过读取搜索到的空间坐标在键值对中的值,来判断搜索到的三维位置是否为不可达三维位置,从而得到该搜索方向上与该可达三维位置之间的高度差不大于目标高度差的至少一个不可达三维位置。
102.本公开实施例提供了一种搜索目标三维位置的示意图。参见图4,图4是根据一示例性实施例示出的一种搜索目标三维位置的示意图,其中,可达三维位置以空间坐标(x,y,z)表示,搜索方向为(x+n,z)且目标高度差是1;其中,黑色区域指示不可达空间坐标、白色区域指示可达空间坐标,条纹阴影区域指示既不可达也为放置有障碍物的空间坐标。
103.参见图4中(a)部分,在一些情况下,服务器会搜索到可达空间坐标:服务器针对(x+n,z)方向进行搜索,在(x+1,z)方向上搜索到高度差为1的空间坐标(x+1,y+1,z),通过读取该空间坐标(x+1,y,z)在字典initmap中的值为“true”,确定该(x+1,y,z)是可达空间坐标。
104.参见图4中(b)部分,在另一些情况下,服务器会搜索到所需的不可达空间坐标:服务器针对(x+n,z)方向进行搜索,在(x+1,z)方向上依次搜索到高度差为1的空间坐标(x+1,y+1,z)和(x+1,y-1,z),通过读取该空间坐标(x+1,y+1,z)在字典initmap中的值为“false”,确定该(x+1,y+1,z)是不可达空间坐标,并且,通过读取该空间坐标(x+1,y-1,z)在字典initmap中的值为“true”,也可以确定该(x+1,y-1,z)是可达空间坐标。
105.参见图4中(c)部分,在另一些情况下,服务器搜索不到可达空间坐标和不可达空间坐标:服务器针对(x+n,z)方向进行搜索,在(x+1,z)方向上依次搜索到高度差为1的空间坐标(x+1,y+1,z)和(x+1,y-1,z),但在字典initmap中查询不到,则确定该(x+1,y+1,z)和(x+1,y-1,z)是既不可达也为放置有障碍物的空间坐标,在这种情况下,也将该(x+1,y+1,z)和(x+1,y-1,z)视为不可达空间坐标。
106.通过上述技术方案,能够将搜索方向延伸到高度方向上,从而搜索到高度方向上可能存在的障碍物,进而为后续实现三维空间中的移动效果提供支持。
107.在步骤303中,服务器从获取到的该至少一个不可达三维位置中,确定在该至少一个搜索方向上与该可达三维位置之间的距离最小的目标三维位置,该目标三维位置与该可达三维位置之间的距离满足目标距离条件。
108.其中,该目标距离条件也即是指:该不可达三维位置与该可达三维位置之间的距离最小。因此,通过上述步骤301至步骤303即可从多个搜索方向上,搜索到虚拟场景中距离该可达三维位置最近的一个不可达三维位置,也即是该目标三维位置。
109.在一些实施例中,上述目标三维位置与可达三维位置之间的距离也可以称为该可达三维位置的sdf距离,该sdf距离指示了该可达三维位置与最近一个不可达三维位置之间的距离。
110.在一些实施例中,服务器从获取到的多个不可达三维位置中确定出目标三维位置的过程可以通过下述公式(1)实现,公式(1)中以空间坐标的形式表示三维位置。
[0111][0112]
公式(1)中,sdfmap是上述存储有可达空间坐标的可达坐标集合;min是取最小值的函数;initpos是任一可达空间坐标(x,y,z);(x1,y1,z1)是搜索到的任一不可达空间坐标。
[0113]
在一些实施例中,三维位置以空间坐标的形式表示,服务器能够将该目标三维位置与该可达三维位置之间的距离,存储至可达坐标集合中,以便于后续确定移动路径的过程中,直接读取该距离。例如,可达坐标集合以字典sdfmap的形式存储,字典sdfmap中一个字典对象以键值对“dict<vector3,float>”表示,其中,键“vector3”表示可达空间坐标,服务器将可达空间坐标与其对应目标三维位置之间的距离存储为值“float”。
[0114]
通过上述技术方案,将搜索到的高度方向上最近的不可达三维位置以距离的形式存储,在后续确定移动路径的过程中,可以高效地读取,提升了移动路径的确定效率。
[0115]
上述步骤302至步骤303所执行的过程是步骤202所执行过程的一种可能实现方式。在另一些实施例中,服务器执行上述步骤202的过程中,可以采用bfs(breadth firstsearch,宽度优先搜索)算法,从一个搜索方向上逐渐向外拓展搜索,将从而将各个搜索方向上搜索到的多个不可达三维位置与该可达三维位置之间的距离进行排序,最后从该搜索到的多个不可达三维位置中,得到在多个搜索方向上距离最近的该目标三维位置。
[0116]
在步骤304中,服务器响应于控制该虚拟对象向目标方向移动的控制操作,从该虚拟场景中的至少一个可达三维位置中,确定该虚拟对象当前所在的三维区域内的至少一个第一三维位置。
[0117]
在一些实施例中,该控制操作可以由运行应用程序的终端确定并向该服务器发送与控制目标对象移动的相关信息,例如,目标方向。在一些实施例中,该目标方向能够由终端根据用户操作确定,例如,终端响应于用户在触摸屏上的滑动操作,确定将控制该虚拟对象向虚拟场景中的哪个方向移动(也即是目标方向);又例如,终端响应于鼠标或键盘等外设的输入信号,确定该控制操作对应的目标方向。
[0118]
在本公开实施例中,虚拟场景以多个三维位置来离散表示,而虚拟对象的移动被视为一个连续的过程,因此,需要根据虚拟对象当前所在的三维区域内的至少一个可达三维位置,来确定虚拟对象将要移动至的下一个可达三维位置。
[0119]
通过上述技术方案,利用该虚拟场景被栅格化的原理,根据虚拟对象所在三维区域内的可达三维坐标,即可确定虚拟对象将要移动至的下一个可达三维位置,提升了确定移动路径的灵活性。
[0120]
在步骤305中,服务器基于该至少一个第一三维位置与对应的目标三维位置之间的距离,以及,该目标方向上的至少一个目标三维位置所放置的障碍物的碰撞范围,确定该虚拟对象在虚拟场景中的移动路径,该移动路径包括的可达三维位置位于该碰撞范围之外。
[0121]
其中,该碰撞范围指示以放置有该障碍物的该目标三维位置为中心,会与该障碍物发生碰撞的空间范围。
[0122]
在本公开实施例中,服务器根据该至少一个第一三维位置与对应目标三维位置之间的距离,能够确定该虚拟对象当前所在三维位置与最近不可达三维位置之间的距离,进而根据该障碍物的碰撞范围,确定出保证该虚拟对象不与该目标方向上的障碍物发生碰撞的移动路径,实现虚拟对象在三维空间中的真实移动效果,提升用户的游戏体验。
[0123]
在一些实施例中,本步骤305能够通过下述步骤1和步骤2实现。
[0124]
步骤1、服务器基于该至少一个第一三维位置与对应的目标三维位置之间的距离,确定该目标方向上与该目标三维位置之间的距离大于该碰撞范围尺寸的第二三维位置。
[0125]
在一些实施例中,该碰撞范围的尺寸以障碍物在虚拟场景的地面中的(平面xoz)碰撞半径r指示。
[0126]
在一些实施例中,该至少一个第一三维位置与对应的目标三维位置之间的距离通过前述步骤301至步骤303确定并存储。服务器能够从对应的字典sdfmap中读取该第一三维位置对应的sdf距离,从而确定虚拟对象当前所在三维区域中任一三维位置的sdf距离。
[0127]
本公开实施例提供了一种第一三维位置的示意图。参见图5,图5是根据一示例性实施例示出的一种第一三维位置的示意图,其中,虚拟对象当前所在三维区域内的多个第一三维位置包括(0,0,1)、(1,0,1)、(0,0,0)和(1,0,0),(x,0,z)为虚拟对象当前所在三维区域中任一三维位置。在一些实施例中,服务器可以基于双线性过滤法,估算该三维区域中任一三维位置对应的sdf距离,原理参见公式(2)。
[0128]
(
[0129]
公式(2)中,φ(x,y,z)是虚拟对象当前所在三维区域中任一三维坐标(x,y,z)对应的sdf距离;φ表示第一三维位置与其目标三维位置(也即是距离其最近的不可达三维位置)之间的距离,也即是,在虚拟场景中的sdf距离。
[0130]
在一些实施例中,服务器对比任一三维位置的sdf距离φ(x,y,z)与碰撞范围的尺寸r;若φ(x,y,z)小于r,则该任一三维位置与已经进入了碰撞范围,不能用于作为虚拟对象移动路径上的三维位置;若φ(x,y,z)大于r,则该任一三维位置与未进入碰撞范围,也即是,虚拟对象可以移动至该三维坐标,因此将其确定为第二三维位置,该第二三维位置为虚拟对象的移动路径上的三维位置。
[0131]
步骤2、服务器基于所确定的至少一个第二三维位置,生成该移动路径。
[0132]
在一些实施例中,服务器在确定出第一个第二三维位置之后,根据所确定出的第一个第二三维位置在该目标方向上的顺序,即可生成该移动路径。
[0133]
在一些实施例中,服务器根据所确定出的一个第二三维位置的和碰撞半径r,可以确定出安全移动距离“φ(x,y,z)-r”,在沿着目标方向确定下一个第二三维位置时,保证相对于前一个第二三维位置相对于障碍物的移动距离不超过该安全距离,就可以保证不碰撞到障碍物。基于此,重复上述过程,直到“φ(x,y,z)-r”小于等于0,或者,确定出的第二三维位置为一个可达三维位置,即完成了生成从一个可达三维位置到另一个可达三维位置的移动路径的过程。
[0134]
在一些实施例中,该障碍物为虚拟场景中的动态障碍物,例如,虚拟场景中一些技能释放或者场景元素带来的动态障碍物。因此,用于放置该动态障碍物的不可达坐标在实时变化。
[0135]
在一些实施例中,若该目标三维位置所放置的障碍物为虚拟场景中的动态障碍
物,服务器根据该虚拟场景中放置移动后的该动态障碍物的不可达三维坐标,确定针对移动后的该动态障碍物的至少一个可达三维位置。基于此,在针对动态障碍物执行上述步骤2时,服务器则能够基于该至少一个第一三维位置与对应的目标三维位置之间的距离,从针对该移动后的动态障碍物的至少一个可达三维位置中,确定该目标方向上与该目标三维位置之间的距离大于该碰撞范围尺寸的至少一个第二三维位置。
[0136]
在一些实施例中,针对上述障碍物为虚拟场景中的动态障碍物的情况,若重新计算整个虚拟场景中的可达三维坐标的sdf距离,则会耗费过多计算资源。在一些实施例中,考虑到在动态障碍物移动之后,可以通过将该可达三维位置原来的sdf距离与其到新的动态障碍物之间的距离进行对比,来得到针对该动态障碍物的新的可达三维位置以及该新的可达三维坐标的sdf距离,从而实现动态障碍物在三维空间中的真实移动效果,并节省计算资源。在一些实施例中,针对动态障碍物,可以借用csg(constructive solid geometry,体素构造表示法)运算规则,生成针对该动态障碍物的可达坐标集合。
[0137]
其中,csg运算规则参见下述公式(3)至公式(5):
[0138]
交集:φ
a∩b
=max(φa,φb)
ꢀꢀꢀ
(3)
[0139]
并集:φ
a∪b
=min(φa,φb)
ꢀꢀꢀ
(4)
[0140]
补集:
[0141]
其中,a可以为该动态障碍物移动前,虚拟场景中各个可达三维位置的集合;b可以为该动态障碍物移动后,虚拟场景中可达三维坐标的集合;c是全集,相当于该虚拟场景中全部的三维位置;φ表示可达三维位置与距离其最近的不可达三维位置之间的距离,也即是,在虚拟场景中的sdf距离。
[0142]
图6是根据一示例性实施例示出的一种计算动态障碍物的sdf距离的示意图,参见图6,其中,障碍物c1的碰撞范围为圆形,碰撞半径为r,当前待确定sdf距离的三维空间坐标为x;障碍物c2的碰撞范围为矩形,则可以通过下述公式(6)至公式(8),确定该三维空间坐标x的sdf距离。
[0143]
φ(x)=||x-c1||-r
ꢀꢀꢀ
(6)
[0144]
d=|(x-c2)r(-θ)|-b
ꢀꢀꢀ
(7)
[0145]
φ(x)=min(max(d
x
,dy),0)+||max(d,0)||
ꢀꢀꢀ
(8)
[0146]
公式(6)至公式(8)中,x为待确定sdf距离的三维空间坐标;c1为放置该圆形碰撞范围的动态障碍物的不可达三维坐标;r为障碍物c1的碰撞半径;c2为放置该矩形碰撞范围的动态障碍物的不可达三维坐标;r(-θ)是坐标系旋转计算,即表示将(x-c2)旋转θ到以矩形水平方向为x轴,矩形垂直方向为y轴的矩形坐标系中进行计算;d
x
是将矩形水平方向x轴上的b2作为b带入该公式(7)得到;dy是将矩形垂直方向y轴上的b1作为b带入该公式(7)得到;φ表示可达三维位置与距离其最近的不可达三维位置之间的距离,也即是,在虚拟场景中的sdf距离。
[0147]
在一些实施例中,在针对动态障碍物执行上述步骤2的过程中,如果“φ(x,y,z)-r”小于等于0,则表明与动态障碍物发生碰撞,则无法继续移动,在这种情况下,可以返回上一个确定出的第二三维位置,实现碰撞回弹的效果,并基于上述逻辑重新确定移动路径。在一些实施例中,当与动态障碍物发生碰撞后,可以基于距离最近的可达三维位置与当前发生碰撞的三维位置,得到虚拟对象与该动态障碍物的碰撞表面的法线,以及,当前发生碰撞
的三维位置和最近可达三维位置之间的距离,并基于该法线和距离实现上述碰撞回弹的效果。
[0148]
在另一些实施例中,当虚拟对象在摇杆移动过程中碰到障碍物,可以绕障碍物滑行。在这种示例下,服务器响应于控制该虚拟对象向目标方向移动的控制操作,能够确定出绕障碍物进行滑动的移动路径。在这种示例下,服务器根据该目标方向上的至少一个目标三维位置所放置的障碍物,确定虚拟对象与该障碍物的碰撞表面的法线;从而根据该目标方向和该法线,按照下述公式(9),确定出滑行方向。
[0149]
图7是根据一示例性实施例示出的一种确定滑行方向的示意图,参见图7以及公式(9),其中,υ

是滑行方向,υ是目标方向,是虚拟对象与该障碍物的碰撞表面的法线。
[0150][0151]
在一些实施例中,服务器按照与步骤1同理的过程,确定该滑行方向上与该目标三维位置之间的距离大于该碰撞范围尺寸的第三三维位置,从而按照与步骤2同理的过程,生成滑行移动路径。
[0152]
在一些实施例中,可以利用虚拟对象在与该障碍物发生碰撞前所处的可达三维位置的梯度(gradient),确定该虚拟对象与该障碍物的碰撞表面的法线。由于虚拟场景中各个可达三维坐标的sdf是纯量场。由于在纯量场上某一点的梯度指向纯量场增长最快的方向,因此可以利用某一点的sdf距离的梯度作为碰撞法线。可选地,服务器可以通过有限差分法求出虚拟对象在与该障碍物发生碰撞前所处的可达三维位置的梯度。有限差分法原理参见下述公式(10)。
[0153][0154]
公式(10)中。梯度运算;δ是拉普拉斯(laplace)运算;φ(x,y)是可达三维位置对应的二维坐标。
[0155]
在另一些实施例中,服务器存储不可达三维位置对应的障碍物效果参数,该障碍物效果参数指示虚拟对象与不可达三维位置所放置的障碍物之间的交互效果。示例性地,该障碍物效果参数可以指示障碍物的材质等信息,服务器能够在虚拟对象沿移动路径或滑动路径移动的过程中,显示虚拟对象与障碍物之间的丰富交互效果。
[0156]
通过上述技术方案,能够实现三维空间中绕障碍物滑动的效果,从而大大提升了用户的游戏体验。
[0157]
通过上述技术方案,能够针对虚拟对象在三维虚拟场景中的移动过程,确定出能够精准绕开障碍物的移动路径,从而实现虚拟对象在三维空间中的真实移动效果,提升用户的游戏体验。
[0158]
并且,解决了在平面投影存在重叠的立体空间中无法使用sdf技术的问题,增加了三维空间中的场景交互效果,使得虚拟对象能够与三维空间发生碰撞,增强了虚拟对象在虚拟场景中进行移动和交互的三维感,游戏效果更加丰富,用户的游戏体验大大提升。
[0159]
图8是根据一示例性实施例示出的一种基于虚拟场景的对象移动装置的框图。参照图8,该装置包括:确定单元801,被配置为执行确定虚拟场景中的至少一个可达三维位置,该可达三维位置为该虚拟场景中的虚拟对象可到达的位置;
[0160]
搜索单元802,被配置为执行从该可达三维位置的至少一个搜索方向上的至少一
个不可达三维位置中,确定该可达三维位置的目标三维位置,该不可达三维位置为放置有障碍物的位置,该目标三维位置与该可达三维位置之间的距离满足目标距离条件;
[0161]
移动路径确定单元803,被配置为执行响应于控制该虚拟对象向目标方向移动的控制操作,基于该至少一个可达三维位置与该目标三维位置之间的距离,确定该虚拟对象在该虚拟场景中的移动路径,该移动路径用于绕开该目标方向上的目标三维位置所放置的障碍物。
[0162]
在一种可能实施方式中,该确定单元801被配置为执行:
[0163]
对于任一该可达三维位置的至少一个搜索方向,获取该搜索方向上与该可达三维位置之间的高度差不大于目标高度差的至少一个不可达三维位置;
[0164]
从获取到的该至少一个不可达三维位置中,确定在该至少一个搜索方向上与该可达三维位置之间的距离最小的该目标三维位置。
[0165]
在一种可能实施方式中,该移动路径确定单元803被配置为执行:
[0166]
响应于该控制操作,从该虚拟场景中的至少一个可达三维位置中,确定该虚拟对象当前所在的三维区域内的至少一个第一三维位置;
[0167]
基于该至少一个第一三维位置与对应的目标三维位置之间的距离,以及,该目标方向上的至少一个目标三维位置所放置的障碍物的碰撞范围,确定该移动路径,该移动路径包括的可达三维位置位于该碰撞范围之外。
[0168]
在一种可能实施方式中,该移动路径确定单元803被配置为执行:
[0169]
基于该至少一个第一三维位置与对应的目标三维位置之间的距离,确定该目标方向上与该目标三维位置之间的距离大于该碰撞范围尺寸的至少一个第二三维位置;
[0170]
基于所确定的至少一个第二三维位置,生成该移动路径。
[0171]
在一种可能实施方式中,该装置还包括:
[0172]
动态确定单元,被配置为执行若该目标三维位置所放置的障碍物为虚拟场景中的动态障碍物,根据该虚拟场景中放置移动后的该动态障碍物的不可达三维坐标,确定针对移动后的该动态障碍物的至少一个可达三维位置;该移动路径确定单元803被配置为执行:基于该至少一个第一三维位置与对应的目标三维位置之间的距离,从针对该移动后的动态障碍物的至少一个可达三维位置中,确定该目标方向上与该目标三维位置之间的距离大于该碰撞范围尺寸的至少一个第二三维位置。
[0173]
在一种可能实施方式中,该装置还包括:
[0174]
参数存储单元,被配置为执行存储该至少一个不可达三维位置对应的障碍物效果参数,该交互效果参数指示该虚拟对象与该不可达三维位置所放置的障碍物之间的交互效果。
[0175]
通过上述技术方案,能够针对虚拟对象在三维虚拟场景中的移动过程,确定出能够精准绕开障碍物的移动路径,从而实现虚拟对象在三维空间中的真实移动效果,提升用户的游戏体验。并且,解决了在平面投影存在重叠的立体空间中无法使用sdf技术的问题,增加了三维空间中的场景交互效果,使得虚拟对象能够与三维空间发生碰撞,增强了虚拟对象在虚拟场景中进行移动和交互的三维感,游戏效果更加丰富,用户的游戏体验大大提升。
[0176]
需要说明的是:上述实施例提供的基于虚拟场景的对象移动装置在执行相应步骤
时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的基于虚拟场景的对象移动装置与基于虚拟场景的对象移动方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0177]
在本公开实施例中,还提供了一种电子设备,该电子设备包括处理器和存储器,该存储器用于存储至少一条计算机程序,该至少一段计算机程序由该处理器加载并执行以实现上述的基于虚拟场景的对象移动方法。以该电子设备为服务器为例,图9是根据一示例性实施例示出的一种服务器的框图,该服务器900可因配置或性能不同而产生比较大的差异,可以包括一个或多个处理器(central processing units,cpu)901和一个或多个的存储器902,其中,该一个或多个存储器902中存储有至少一条程序代码,该至少一条程序代码由该一个或多个处理器901加载并执行以实现上述各个方法实施例提供的基于虚拟场景的对象移动方法中服务器执行的过程。当然,该服务器900还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器900还可以包括其他用于实现设备功能的部件,在此不做赘述。
[0178]
在示例性实施例中,还提供了一种包括程序代码的计算机可读存储介质,例如包括程序代码的存储器902,上述程序代码可由服务器900的处理器901执行以完成上述基于虚拟场景的对象移动方法。可选地,计算机可读存储介质可以是只读内存(read-only memory,rom)、随机存取存储器(random access memory,ram)、只读光盘(compact-disc read-only memory,cd-rom)、磁带、软盘和光数据存储设备等。
[0179]
在示例性实施例中,还提供了一种计算机程序产品,包括一条或多条指令,该一条或多条指令由服务器的一个或多个处理器执行,使得该服务器能够执行上述基于虚拟场景的对象移动方法。
[0180]
在一些实施例中,本公开实施例所涉及的计算机程序可被部署在一个计算机设备上执行,或者在位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行,分布在多个地点且通过通信网络互连的多个计算机设备可以组成区块链系统。
[0181]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
[0182]
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1