一种虚拟场景生成方法、装置、计算机设备及存储介质与流程

文档序号:32259772发布日期:2022-11-19 11:31阅读:36来源:国知局
一种虚拟场景生成方法、装置、计算机设备及存储介质与流程

1.本公开涉及游戏技术领域,具体而言,涉及一种虚拟场景生成方法、装置、计算机设备及存储介质。


背景技术:

2.开放世界(open world)是电子游戏关卡设计的一种,玩家可以自由地在虚拟世界漫游,并可自由选择完成游戏任务的时间点和方式。目前,由计算机生成的开放虚拟场景的算法中,存在表现力与多样性较差的问题。


技术实现要素:

3.本公开实施例至少提供一种虚拟场景生成方法、装置、计算机设备及存储介质。
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.一种可选的实施方式中,所述城镇有多个;所述第二目标对象还包括:联通不同城镇的第二道路;
51.所述基于所述位置信息,在所述第二区域中构建所述第二目标对象,还包括:
52.基于所述第一道路对应的第二目标子区域在所述第二区域中的第二位置信息,进行第二子区域的宽度优先搜索,直至在搜索过程中确定的属于第二道路的第三目标区域能够联通所有城镇,并基于在搜索过程中确定的第三目标区域在所述第二区域中的第三位置信息,构建所述第二道路。
53.一种可选的实施方式中,构建的建筑物包括:建筑物模型、以及在建筑物内划分的多个房间中每个房间的房间模型;所述房间模型中,包括多个家具模型;
54.所述基于所述第一位置信息、以及所述建筑物的入口所在的位置、以及所述建筑物对应的形状信息,构建所述建筑物,包括:
55.基于所述第一位置信息,确定所述建筑物的形状信息;所述形状信息包括:所述建
筑物的多条俯视轮廓线、以及各条俯视轮廓线分别对应的尺寸信息;多条所述俯视轮廓线围成的空间包括所述建筑物的室内空间;
56.基于所述建筑物的入口所在的位置,将由多条俯视轮廓线围成的空间划分为多个房间,并针对每个房间,根据该房间对应房间的房间类型,生成该房间对应的家具摆放方式;
57.基于所述建筑物对应的形状信息、以及各个房间分别在所述空间内的位置,生成建筑物模型;以及针对所述建筑物中的每个房间,根据该房间对应的家具摆放方式,生成房间模型。
58.一种可选的实施方式中,所述基于所述建筑物的入口所在的位置,将由多条俯视轮廓线围成的空间划分为多个房间,包括:
59.基于所述入口所在的位置,在所述俯视轮廓线中确定属于入口的第一子轮廓线,以及,基于各条俯视轮廓线的尺寸信息,确定属于窗户所在的第二子轮廓线;
60.基于所述第一子轮廓线所在的位置、以及所述第二字子轮廓线所在的位置,将由多条俯视轮廓线围成的空间划分为多个子空间;
61.从多个子空间中,确定多个种子空间,并利用热度图评分计算每个种子空间所属的房间分别对应的房间类型;
62.对多个种子空间分别进行房间扩展处理,确定多个房间分别对应的第一子空间;属于任一房间的第一子空间构成的空间尺寸,大于该任一房间对应的最小尺寸阈值;
63.基于所述入口所在的位置、以及各个房间对应的第一子空间分别在所述空间中的位置,确定连接所述入口、和所述多个房间的走廊所在的第二子空间;
64.基于多个子空间中除第一子空间和第二子空间外的其他子空间所在的位置、以及各个房间分别对应的第一子空间所在的位置,从所述其他子空间中,确定各个房间分别对应的第三子空间;
65.基于各个房间对应的第一子空间和第三子空间、以及对应房间类型,构成对应房间。
66.一种可选的实施方式中,所述获取目标地图,包括:
67.获取用于生成初始地图的第三场景参数、以及用于生成陆地区域的第四场景参数;所述第三场景参数包括下述至少一种:所述初始地图的尺寸信息、以及预设的比例尺;所述第四场景参数包括下述至少一种:陆地的数量、以及陆地的面积;
68.基于所述第三场景参数,创建初始地图;
69.基于所述第四场景参数,在所述初始地图中确定属于陆地的目标区域,得到所述目标地图。
70.一种可选的实施方式中,所述基于第四场景参数,在所述初始地图中确定属于陆地的目标区域,包括:
71.基于所述第四场景参数,从所述初始地图包括的多个子区域中确定第三种子区域;
72.基于所述第三种子区域在所述初始地图中的位置信息,对所述第三种子区域进行生长扩张处理,得到属于陆地的多个子区域;属于陆地的多个子区域构成所述目标区域。
73.一种可选的实施方式中,所述基于所述第三种子区域在所述初始地图中的位置信
息,对所述第三种子区域进行生长扩张处理,得到属于陆地的多个子区域,包括:
74.在多个迭代周期的每个迭代周期中,执行:
75.基于当前迭代周期已经被确定为属于陆地的子区域在所述初始地图中的位置信息,确定当前迭代周期的备选种子区域;其中,所述备选种子区域与任一子所述属于陆地的子区域位置相邻;其中,所述子区域中包括所述第三种子区域;
76.从所述备选种子区域中,随机确定预设数量的选定种子区域,并将所述选定种子区域确定为属于陆地的子区域;
77.响应于未满足预设迭代停止条件,进入下一迭代周期。
78.一种可选的实施方式中,所述预设迭代停止条件包括下述至少一种:
79.迭代周期数达到预设迭代周期数阈值;
80.确定当前迭代周期的备选种子区域失败。
81.第二方面,本公开实施例还提供一种虚拟场景生成装置,所述装置包括:
82.获取模块,用于获取目标地图,并获取用于生成丘陵地形的第一场景参数;所述目标地图包括属于陆地的多个子区域;所述第一场景参数包括下述至少一种:所述目标地图的地形起伏程度、最大高度、以及丘陵的数量;
83.高度确定模块,用于基于所述第一场景参数,在所述目标地图中为属于陆地的多个子区域确定噪声数据;所述噪声数据用于表征所述属于陆地的多个子区域分别对应的高度信息;
84.第一区域确定模块,基于所述噪声数据、以及预设的噪声阈值,从所述属于陆地的多个子区域中,确定属于丘陵地形的第一子区域;
85.第一场景构建模块,用于为多个所述第一子区域分别确定对应的第一高度信息,并利用所述第一高度信息,构建丘陵地形对应的第一虚拟场景。
86.一种可选的实施方式中,所述第一区域确定模块在基于所述噪声数据、以及预设的噪声阈值,从所述属于陆地的多个子区域中,确定属于丘陵地形的第一子区域时,用于:
87.针对属于陆地的多个子区域中的每个子区域,将该子区域对应的噪声值和所述噪声阈值进行比对;
88.响应于所述噪声数据大于所述噪声阈值,将该子区域确定为所述第一子区域。
89.一种可选的实施方式中,所述第一场景构建模块在为多个所述第一子区域分别确定对应的第一高度信息时,用于:
90.基于所述第一区域中的多个所述第一子区域分别在所述目标地图中的位置确定多个网格,并为所述网格中位于所述第一区域内的第一网格顶点确定第二高度信息;每个所述网格中包括至少一个所述第一子区域;
91.基于所述第一网格顶点的第二高度信息,确定多个所述第一子区域分别对应的第一高度信息。
92.一种可选的实施方式中,所述第一场景构建模块在基于所述第一区域中的多个所述第一子区域分别在所述目标地图中的位置确定多个网格,并为所述网格中位于所述第一区域内的第一网格顶点确定高度信息时,还用于:
93.基于所述第一区域中的多个第一子区域分别在所述目标地图中的位置,确定所述第一区域的外接矩形;
94.将所述外接矩形划分为多个网格,并对多个所述网格中位于所述第一区域内的第一网格顶点进行高度的随机采样,得到各个所述第一网格顶点分别对应的第二高度信息。
95.一种可选的实施方式中,所述第一场景构建模块在基于所述第一网格顶点的第二高度信息,确定多个所述第一子区域分别对应的第一高度信息时,还用于:
96.针对每个网格,基于属于该网格的第一网格顶点分别对应的第二高度信息,对属于该网格中的各个第一子区域进行高度插值处理,得到属于该网格的各个第一子区域分别对应的第一高度信息。
97.一种可选的实施方式中,所述第一区域确定模块在从所述属于陆地的多个子区域中,确定属于丘陵地形的第一子区域后,所述装置还包括第一模型构建模块,用于:
98.基于所述第一子区域分别对应的第一高度信息,在所述第一区域中确定第一目标对象对应的目标第一子区域;
99.基于所述目标第一子区域在所述第一区域中的位置信息,在所述第一区域中构建所述第一目标对象。
100.一种可选的实施方式中,所述第一模型构建模块在基于所述第一子区域分别对应的第一高度信息,在所述第一区域中确定第一目标对象对应的目标第一子区域时,用于:
101.基于所述第一子区域分别对应的第一高度信息,从所述第一子区域中确定属于所述第一目标对象的第一种子区域;
102.执行下述多个迭代周期:
103.确定当前迭代周期的当前目标第一子区域;所述当前目标第一子区域包括:所述第一种子区域、或前一迭代周期确定的新的目标第一子区域;
104.基于所述当前目标第一子区域在所述第一区域中的位置,从所述第一区域中,确定与所述当前目标第一子区域相邻的备选子区域;
105.响应于任一备选子区域的第一高度信息、小于所述当前目标第一子区域的第一高度信息,且该任一备选子区域的第一高度信息是在所有第一备选子区域分别对应的第一高度信息中的最小值,将该任一备选子区域确定为新的目标第一子区域;
106.响应于所有备选子区域的第一高度信息均大于所述当前目标第一子区域的第一高度信息,结束迭代;
107.将所述第一种子区域、和多个迭代周期分别确定的新的第一目标子区域均作为与所述第一目标对象对应的目标第一子区域。
108.一种可选的实施方式中,所述装置还包括第二场景构建模块,用于:
109.基于所述噪声数据、以及预设的噪声阈值,从所述属于陆地的多个子区域中,确定属于平原地形的第二子区域:
110.确定第二目标对象在多个第二子区域构成的第二区域中的位置信息,并基于所述位置信息,在所述第二子区域中构建所述第二目标对象,生成所述平原地形对应的第二虚拟场景。
111.一种可选的实施方式中,所述第二场景构建模块在确定第二目标对象在多个第二子区域构成的第二区域中的位置信息时,用于:
112.获取用于生成城镇区域的第二场景参数;其中,所述第二场景参数包括下述至少一种:所述第二目标对象的面积、以及所第二目标对象的数量;
113.基于所述第二场景参数,对所述第二区域进行泊松分布采样,得到所述第二目标对象对应的第二子区域在所述第二区域中的位置信息。
114.一种可选的实施方式中,所述第二场景构建模块在确定第二目标对象对应的第二子区域在所述第二区域中的位置信息时,还用于:
115.在所述第二区域的多个第二子区域中,确定第二种子区域,并基于所述第二种子区域在所述第二区域中的位置信息,对所述第二种子区域进行生长扩张处理,得到所述第二目标对象对应的第二子区域在所述第二区域中的位置信息。
116.一种可选的实施方式中,所述第二场景构建模块在所述基于所述位置信息,在所述第二区域中构建所述第二目标对象时,所述装置还包括第二模型构建模块,用于:
117.获取用于生成建筑物的第二场景参数;所述第二场景参数包括下述至少一种:与所述建筑物对应的形状信息、与所述建筑物对应的数量信息、以及与所述建筑物对应的密度信息;
118.基于所述第二场景参数、以及所述位置信息,从所述第二目标对象对应的第二子区域中,确定属于所述建筑物的第一目标子区域在所述第二区域中的第一位置信息、以及所述建筑物的入口所在的位置;
119.基于所述第一位置信息、以及所述建筑物的入口所在的位置、以及所述建筑物对应的形状信息,构建所述建筑物。
120.一种可选的实施方式中,所述第二场景构建模块在基于所述位置信息,在所述第二区域中构建所述第二目标对象时,所述第二模型构建模块,用于:
121.基于所述建筑物的入口所在的位置,确定所述建筑物的入口之间的联通关系;利用所述联通关系、属于所述建筑物的第一目标子区域在所述第二区域中的第一位置信息,确定属于所述第一道路的第二目标子区域在所述第二区域中的第二位置信息;
122.基于所述第二目标子区域在所述第二区域中的第二位置信息,构建所述第一道路。
123.一种可选的实施方式中,所述第二场景构建模块在基于所述位置信息,在所述第二区域中构建所述第二目标对象时,所述第二模型构建模块,还用于:
124.基于所述第一道路对应的第二目标子区域在所述第二区域中的第二位置信息,进行第二子区域的宽度优先搜索,直至在搜索过程中确定的属于第二道路的第三目标区域能够联通所有城镇,并基于在搜索过程中确定的第三目标区域在所述第二区域中的第三位置信息,构建所述第二道路。
125.一种可选的实施方式中,所述第二模型构建模块在基于所述第一位置信息、以及所述建筑物的入口所在的位置、以及所述建筑物对应的形状信息,构建所述建筑物时,还用于:
126.基于所述第一位置信息,确定所述建筑物的形状信息;所述形状信息包括:所述建筑物的多条俯视轮廓线、以及各条俯视轮廓线分别对应的尺寸信息;多条所述俯视轮廓线围成的空间包括所述建筑物的室内空间;
127.基于所述建筑物的入口所在的位置,将由多条俯视轮廓线围成的空间划分为多个房间,并针对每个房间,根据该房间对应房间的房间类型,生成该房间对应的家具摆放方式;
128.基于所述建筑物对应的形状信息、以及各个房间分别在所述空间内的位置,生成建筑物模型;以及针对所述建筑物中的每个房间,根据该房间对应的家具摆放方式,生成房间模型。
129.一种可选的实施方式中,所述第二模型构建模块在基于所述建筑物的入口所在的位置,将由多条俯视轮廓线围成的空间划分为多个房间时,还用于:
130.基于所述入口所在的位置,在所述俯视轮廓线中确定属于入口的第一子轮廓线,以及,基于各条俯视轮廓线的尺寸信息,确定属于窗户所在的第二子轮廓线;
131.基于所述第一子轮廓线所在的位置、以及所述第二字子轮廓线所在的位置,将由多条俯视轮廓线围成的空间划分为多个子空间;
132.从多个子空间中,确定多个种子空间,并利用热度图评分计算每个种子空间所属的房间分别对应的房间类型;
133.对多个种子空间分别进行房间扩展处理,确定多个房间分别对应的第一子空间;属于任一房间的第一子空间构成的空间尺寸,大于该任一房间对应的最小尺寸阈值;
134.基于所述入口所在的位置、以及各个房间对应的第一子空间分别在所述空间中的位置,确定连接所述入口、和所述多个房间的走廊所在的第二子空间;
135.基于多个子空间中除第一子空间和第二子空间外的其他子空间所在的位置、以及各个房间分别对应的第一子空间所在的位置,从所述其他子空间中,确定各个房间分别对应的第三子空间;
136.基于各个房间对应的第一子空间和第三子空间、以及对应房间类型,构成对应房间。
137.一种可选的实施方式中,所述装置还包括地图构建模块,用于:
138.获取用于生成初始地图的第三场景参数、以及用于生成陆地区域的第四场景参数;所述第三场景参数包括下述至少一种:所述初始地图的尺寸信息、以及预设的比例尺;所述第四场景参数包括下述至少一种:陆地的数量、以及陆地的面积;
139.基于所述第三场景参数,创建初始地图;
140.基于所述第四场景参数,在所述初始地图中确定属于陆地的目标区域,得到所述目标地图。
141.一种可选的实施方式中,所述地图构建模块在基于第四场景参数,在所述初始地图中确定属于陆地的目标区域时,所述装置还包括:第二区域确定模块,用于:
142.基于所述第四场景参数,从所述初始地图包括的多个子区域中确定第三种子区域;
143.基于所述第三种子区域在所述初始地图中的位置信息,对所述第三种子区域进行生长扩张处理,得到属于陆地的多个子区域;属于陆地的多个子区域构成所述目标区域。
144.一种可选的实施方式中,所述第二区域确定模块在基于所述第三种子区域在所述初始地图中的位置信息,对所述第三种子区域进行生长扩张处理,得到属于陆地的多个子区域时,具体用于:
145.在多个迭代周期的每个迭代周期中,执行:
146.基于当前迭代周期已经被确定为属于陆地的子区域在所述初始地图中的位置信息,确定当前迭代周期的备选种子区域;其中,所述备选种子区域与任一子所述属于陆地的
子区域位置相邻;其中,所述子区域中包括所述第三种子区域;
147.从所述备选种子区域中,随机确定预设数量的选定种子区域,并将所述选定种子区域确定为属于陆地的子区域;
148.响应于未满足预设迭代停止条件,进入下一迭代周期。
149.第三方面,本公开可选实现方式还提供一种计算机设备,处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
150.第四方面,本公开可选实现方式还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
151.本公开实施例提供的虚拟场景生成方法,根据用户输入的第一场景参数、确定属于陆地的多个子区域的噪声数据,根据每一个子区域所对应的噪声数据,确定属于丘陵地形的第一子区域,并确定属于丘陵地形的第一子区域的第一高度信息,对每一个第一子区域的第一高度信息,进行渲染得到与丘陵地形对应的第一虚拟场景。在该过程中,用户仅需要输入有限的场景参数,就可以随机生成和第一场景参数相匹配的第一虚拟场景,生成效率高。
152.另外,在生成第一虚拟场景时,由于在构建与丘陵地区对应的第一虚拟场景时,为属于陆地的多个子区域确定噪声数据,以根据噪声数据确定第一子区域的过程,以及为属于丘陵地形的多个第一子区域所确定第一高度信息的过程,都具有随机性,即使输入相同的参数,也能够生成重复性低、表现多样的第一虚拟场景。
153.为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
154.为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
155.图1示出了本公开实施例所提供的一种虚拟场景生成方法的流程图;
156.图2示出了本公开实施例所提供的一种根据区域生长算法生成目标地图的流程图;
157.图3示出了本公开实施例所提供的一种基于噪声数据生成目标地图的示例图;
158.图4示出了本公开实施例所提供的一种确定第一子区域的第一高度信息的具体示例图;
159.图5示出了本公开实施例所提供的一种河流模型生成的具体示例图;
160.图6示出了本公开实施例所提供的一种将由多条俯视轮廓线围成的空间划分为多个子空间的具体示例图;
161.图7a示出了本公开实施例所提供的一种在多个子空间中确定种子空间的具体示例图;
162.图7b示出了本公开实施例所提供的一种基于对种子空间进行扩展处理得到房间的具体示例图;
163.图8a示出了本公开实施例所提供的一种生成第一道路的具体示例图之一;
164.图8b示出了本公开实施例所提供的一种生成第一道路的具体示例图之二;
165.图9示出了本公开实施例所提供的一种生成第二道路的具体示例图;
166.图10示出了本公开实施例所提供的一种虚拟场景生成装置的示意图;
167.图11示出了本公开实施例所提供的一种计算机设备的示意图。
具体实施方式
168.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
169.经研究发现,基于程序生成内容(procedural content generation,pcg)可以用于快速生成三维虚拟场景,或辅助设计师进行开放虚拟场景的设计。pcg的生成质量评估有以下5个维度:可靠性:生成的内容总能符合预期需求,不存在无解或者缺陷(bug)。可控性:应当将场景样式的主要参数暴露给用户,让用户可以通过调参生成特征不同的场景,例如植被的覆盖率、水体覆盖率、地形的平坦程度。表现力与多样性:即使给定同样的参数,也应当能够生成重复性低、表现多样、有差异性的地图。创造力和可信度:不能让人一眼就看出来是程序生成的。速度与效率:不同的应用场景(离线/在线)有不同的效率要求。目前由计算机生成的开放虚拟场景算法中,可以根据主人公的冒险故事环境生成原野、城堡、地牢等角色扮演游戏地图,并将它们镶嵌在一个大的二维平面上,形成虚拟游戏场景。在生成时,是通过对预设素材进行拼接的方式实现的,这种虚拟场景的生成方式存在表现力与多样性较差的缺点。
170.基于上述研究,本公开提供一种虚拟场景生成方法,用户可以通过输入有限的场景参数,就可以生成具有不同特征的虚拟场景,生成效率高。并且,由于生成算法具有随机性,即使输入相同的参数,也能够生成重复性低、表现多样的目标虚拟场景。
171.针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
172.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
173.为便于对本实施例进行理解,首先对本公开实施例所公开的一种虚拟场景生成方法进行详细介绍,本公开实施例所提供的虚拟场景生成方法的执行主体一般为具有一定计
算能力的计算机设备,在一些可能的实现方式中,该虚拟场景生成方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
174.需要说明的是,本公开实施例提供的虚拟场景生成方法可以应用在多种类型的游戏中,例如可以应用在第三人称视角射击游戏、第一人称视角射击游戏、角色扮演游戏、动作游戏、策略类游戏、格斗游戏、体育竞技类游戏、冒险游戏等,在此不做具体限制。另外,虚拟场景生成方法还可以用于其他场景下,例如增强现实场景、元宇宙场景等,本公开实施例不做限定。
175.以将本公开实施例中的虚拟场景应用于游戏场景为例,构建的虚拟场景为游戏世界的环境,其中可以包括虚拟建筑、虚拟植物、虚拟道具等。
176.下面对本公开实施例提供的虚拟场景生成方法加以说明。
177.参见图1所示的一种虚拟场景生成方法的流程图,所述方法包括步骤s101~s104,其中:
178.s101:获取目标地图,并获取用于生成丘陵地形的第一场景参数;所述目标地图包括属于陆地的多个子区域;所述第一场景参数包括下述至少一种:所述目标地图的地形起伏程度、最大高度、以及丘陵的数量;
179.s102:基于所述第一场景参数,在所述目标地图中为属于陆地的多个子区域确定噪声数据;所述噪声数据用于表征所述属于陆地的多个子区域分别对应的高度信息。
180.s103:基于所述噪声数据、以及预设的噪声阈值,从所述属于陆地的多个子区域中,确定属于丘陵地形的第一子区域。
181.s104:为多个所述第一子区域分别确定对应的第一高度信息,并利用所述第一高度信息,构建丘陵地形对应的第一虚拟场景。
182.本公开实施例通过在获取目标地图后,根据用户输入的第一场景参数、确定属于陆地的多个子区域的噪声数据,根据每一个子区域所对应的噪声数据,确定属于丘陵地形的第一子区域,并确定属于丘陵地形的第一子区域的第一高度信息,对每一个第一子区域的第一高度信息,进行渲染得到与丘陵地形对应的第一虚拟场景。在该过程中,用户仅需要输入有限的场景参数,就可以随机生成和第一场景参数相匹配的第一虚拟场景,生成效率高。
183.另外,在生成第一虚拟场景时,由于在构建与丘陵地区对应的第一虚拟场景时,为属于陆地的多个子区域确定噪声数据,以根据噪声数据确定第一子区域的过程,以及为属于丘陵地形的多个第一子区域所确定第一高度信息的过程,都具有随机性,即使输入相同的参数,也能够生成重复性低、表现多样的第一虚拟场景。
184.下面针对上述s101~s104分别加以详细说明。
185.针对上述s101,在本公开实施例中,提供一种获取目标地图的具体方式,包括:
186.获取用于生成初始地图的第三场景参数、以及用于生成陆地区域的第四场景参数;所述第三场景参数包括下述至少一种:所述初始地图的尺寸信息、以及预设的比例尺;所述第四场景参数包括下述至少一种:陆地的数量、以及陆地的面积;基于所述第三场景参数,创建初始地图;基于所述第四场景参数,在所述初始地图中确定属于陆地的目标区域,得到所述目标地图。
187.示例性的,该第三场景参数、以及第四场景参数例如可以是用户在生成目标地图
时,通过预设的输入设备输入的。
188.其中,初始地图包括多个子区域,每一个子区域都具有初始特征信息,该初始特征信息用于表征子区域的初始地形特征,其中,初始地形特征包括海洋、以及陆地。每一个子区域的初始地形特征可以在海洋和陆地之间变更。
189.示例性的,初始地图例如可以由200
×
200个子区域组成,每一个子区域具有相同的面积。在根据第三场景参数中包括的初始地图的尺寸信息、以及预设的比例尺生成的初始地图中,将每一个子区域的初始地形特征都设置为海洋,再根据第四场景参数指示的陆地的数量以及陆地的面积,在子区域中,确定属于陆地的子区域,并将确定属于陆地的子区域的初始地形特征更改为陆地。
190.具体的,基于所述第四场景参数,从所述初始地图包括的多个子区域中确定第三种子区域;基于所述第三种子区域在所述初始地图中的位置信息,对所述第三种子区域进行生长扩张处理,得到属于陆地的多个子区域;属于陆地的多个子区域构成所述目标区域。
191.示例性的,用户可以输入第四场景参数;例如生成的陆地的数量为n,终端设备响应于接收到用户输入的第四场景参数,从中读取陆地的数量n;然后在初始地图中随机选取n个或属于海洋的子区域作为第三种子区域(根据陆地数量确定),并将其初始地形特征变更为属于陆地;然后采用区域生长算法,从第三种子区域开始生长扩张,每次生长扩张,随机在与属于陆地的子区域相邻的属于海洋的子区域中选取一个,使其变更为属于陆地的子区域。根据第四场景参数中陆地面积的信息,当属于陆地的多个子区域的面积达到第四场景参数中包含的陆地面积时,或当属于陆地的子区域周围没有相邻的属于海洋的子区域时,停止生长扩张,生成由属于陆地的多个子区域构成的目标区域。
192.参见图2所示的一种根据区域生长算法生成目标地图的流程图,包括:
193.s201:基于所述第三种子区域在所述初始地图中的位置信息,对所述第三种子区域进行生长扩张处理。
194.s202:在多个迭代周期的每个迭代周期中,执行:
195.s2021:基于当前迭代周期已经被确定为属于陆地的子区域在所述初始地图中的位置信息,确定当前迭代周期的备选种子区域;其中,所述备选种子区域与任一子所述属于陆地的子区域位置相邻;其中,所述子区域中包括所述第三种子区域;
196.s2022:从所述备选种子区域中,随机确定预设数量的选定种子区域,并将所述选定种子区域确定为属于陆地的子区域;
197.s2023:判断当前迭代周期是否满足预设迭代停止条件。如果否,则跳转至s2021;如果是,则跳转至s203。
198.其中,预设迭代停止条件包括下述条件a~b中至少一种:
199.条件a:迭代周期数达到预设迭代周期数阈值。
200.示例性的,可以根据第四场景参数中获取属于陆地的目标区域面积的信息,确定预设迭代周期数阈值,例如,根据属于陆地的子区域面积的大小确定生成属于陆地的目标区域由多少子区域组成,从而确定预设迭代周期数阈值,当迭代周期达到预设迭代周期数阈值时,迭代停止。
201.条件b:确定当前迭代周期的备选种子区域失败。
202.示例性的,备选种子区域可以是属于海洋的子区域,当属于陆地的子区域周围没
有属于海洋的子区域时,则确定当前迭代周期的备选种子区域失败,此时迭代停止。
203.s203:将当前迭代周期生成的属于陆地的多个子区域确定为目标区域,并得到目标地图。
204.示例性的,目标地图中可以包括有多个属于陆地的目标区域,每个属于陆地的目标区域之间可以由属于海洋的子区域隔开,也即,生成多个岛屿;也可以包括有1个属于陆地的目标区域,属于陆地的目标区域填充整个初始地图,也即,生成一个大陆,或属于陆地的目标区域被属于海洋的子区域包围、半包围在其中,具体根据区域生长算法随机生成,在此不做限制。
205.在生成目标地图后,目标地图中的各个子区域的初始地形特征也被确定,此时的目标地图包括属于陆地的多个子区域、和/或属于海洋的多个子区域。
206.针对上述s102,在目标地图中的属于陆地的多个子区域中,还可以进一步的对陆地区域的地形进行划分,使其具有与真实世界类似的地形特征。
207.此处,可以根据属于陆地的多个子区域的高度信息在陆地区域确定用于生成丘陵地形的第一区域、以及用于生成平原地形的第二区域。
208.示例性的,可以使用随机噪声数据表征属于陆地的多个子区域的高度信息,例如,噪声数据例如可以采用柏林噪声(perlin noise)。在为与陆地的多个子区域确定噪声数据时,例如可以随机确定一组柏林噪声数据,一组柏林噪声数据中包括多个0~1之间的噪声值;然后为各个子区域分别施加一个噪声值。各个子区域对应的噪声值,用于表征该子区域对应的高度信息。
209.另外,除了使用柏林噪声外,噪声数据也可以采用其他噪声生成,例如,值噪声(value noise)、单形噪声(simplex noise)等,生成变化幅度较为缓和的噪声数据,从而避免多个子区域中的某个子区域发生高度的突变,导致生成地形失败。所选用的噪声数据可以根据实际需要进行选择,在此不做限制。
210.针对上述s103,确定一个预设的噪声阈值,该预设的噪声阈值可以用于判断属于陆地的多个子区域的高度信息是否符合第一区域的地形特征。
211.在本公开提供的一个实施例中,针对属于陆地的多个子区域中的每个子区域,将该子区域对应的噪声值和所述噪声阈值进行比对;响应于所述噪声数据大于所述噪声阈值,将该子区域确定为所述第一子区域。
212.示例性的,将属于陆地的各个子区域分别对应的噪声值及预设的噪声阈值进行比对;若某个子区域对应的噪声值大于该预设的噪声阈值,则表征该子区域属于具有一定高度特征的,也即,属于丘陵地形的第一子区域。
213.另外,在将各个子区域对应的噪声值和噪声阈值进行比对时,还可以是:在噪声值大于或者等于噪声阈值时,表征该子区域属于具有一定高度特征的第一子区域。
214.多个第一子区域构成了用于生成丘陵地形的第一区域。
215.示例性的,预设的噪声阈值可以选取0~1之间的任意值,通过噪声阈值的大小,可以控制生成的第一区域和第二区域之间的面积比;在噪声数据已经确定的情况下,噪声阈值越大,则第一区域和第二区域之间的面积比越小;噪声阈值越小,则第一区域和第二区域之间的面积比对越大。
216.例如,预设的噪声阈值选取为0.5,则判断所有属于陆地的子区域对应的高度信
息,将高于0.5的高度信息对应的属于陆地的子区域确定为第一子区域;将小于0.5的高度信息对应的属于陆地的子区域确定为第二子区域。
217.参见图3所示的一种基于噪声数据生成目标地图的示例图;以预设的噪声阈值为0.5为例,在该示例中,不同深度的子区域对应的噪声数据不同。其中,a1~a6区域为高度特征较为明显的丘陵地形,其噪声阈值例如可以是在0.7-0.9之间,b1~b6区域也可以表示为丘陵地形,其噪声阈值例如可以是在0.5-0.7之间,剩下的区域则可以表示为高度特征不明显的平原地形,其噪声阈值例如在0.1-0.4之间。这里给出的噪声阈值的范围只是举例表征不同区域的高度特征。
218.针对上述s104,在分别确定了属于丘陵地形的多个第一子区域的第一高度信息后,可以根据各个第一子区域不同的第一高度信息,对第一子区域进行画面渲染,在目标地图中的属于陆地的多个子区域中,构建出高低起伏的,具有丘陵地形特征的第一虚拟场景。
219.在本公开提供的一个具体实施例中,基于所述第一区域中的多个所述第一子区域分别在所述目标地图中的位置确定多个网格,并为所述网格中位于所述第一区域内的第一网格顶点确定第二高度信息;每个所述网格中包括至少一个所述第一子区域;基于所述第一网格顶点的第二高度信息,确定多个所述第一子区域分别对应的第一高度信息。
220.示例性的,利用随机采样算法在一定的高度值的取值范围内,随机确定网格中位于第一区域内的第一网格顶点的第二高度信息。
221.在具体实施中,基于所述第一区域中的多个第一子区域分别在所述目标地图中的位置,确定所述第一区域的外接矩形;将所述外接矩形划分为多个网格,并对多个所述网格中位于所述第一区域内的第一网格顶点进行高度的随机采样,得到各个所述第一网格顶点分别对应的第二高度信息。
222.示例性的,参见图4所示的一种确定第一子区域的第一高度信息的具体示例图,设定一个网格的最大边长阈值,利用最小外接矩形将不规则的第一区域框在其中,根据外接矩形的长边或者宽边进行等半分割,直到长边和宽边都小于该最大边长阈值,得到多个单位矩形,即,多个网格。其中,每个网格中包括了多个第一子区域;另外,若网格位于和第二区域相邻的位置,则在网格中还可能包括多个第二子区域。然后,可以对网格的四个顶点中位于第一区域内的第一网格顶点的高度进行随机采样,例如,顶点d1不在第一区域m1内(也即第二网格顶点),则认为高度为0,顶点d2在第一区域m1内(也即第一网格顶点),则将网格顶点的高度值随机确定在第二场景参数中包含的最大地形高度对应的高度值和最小地形高度对应的高度值之间,其中,最大地形高度和最小地形高度可以根据实际应用提前设置。
223.在本公开的一个实施例中,针对每个网格,基于属于该网格的第一网格顶点分别对应的第二高度信息,对属于该网格中的各个第一子区域进行高度插值处理,得到属于该网格的各个第一子区域分别对应的第一高度信息。
224.其中,针对每个网格,基于属于该网格的第一网格顶点分别对应的第二高度信息,对属于该网格中的各个第一子区域进行高度插值处理,得到属于该网格的各个第一子区域分别对应的第一高度信息。
225.示例性的,对第一子区域可以进行双三次插值处理,这样得到的地形较为平滑,更接近现实场景地形。例如,若想得到坡度较为平缓的地形,则可以在相邻的两个第一网格顶点间,只进行一次高度插值处理,这样会生成坡度较为平缓的地形;若想得到坡度较为陡峭
的地形,则可以在相邻的两个第一网格顶点间,进行多次高度插值处理,这样会生成坡度较为陡峭的地形。
226.另外,由于部分网格中既包括了第一子区域,又包括了第二子区域,也即该网格中包括了位于第二区域内的第二网格顶点,该第二网格顶点的高度例如可以视为预设值(例如0,表征与该第二网格顶点对应的高度为0),因此,在利用第一网格顶点分别对应的第二高度信息,对属于该网格中的各个第一子区域进行高度插值处理时,例如可以基于第二网格顶点的预设高度值、以及为第一网格顶点确定的第一高度信息,进行高度插值处理,得到属于该网格的各个第一子区域分别对应的第一高度信息。
227.在确定了第一高度信息后,即可以根据第一高度信息构建丘陵地形对应的第一虚拟场景。
228.在另一实施例中,还可以基于所述第一子区域分别对应的第一高度信息,在所述第一区域中确定第一目标对象对应的目标第一子区域;基于所述目标第一子区域在所述第一区域中的位置信息,在所述第一区域中构建所述第一目标对象。
229.此处,若在所述第一区域中构建所述第一目标对象,所述第一场景参数至少还包括:第一目标对象的数量、以及宽度。
230.示例性的,在属于丘陵地形的多个第一子区域中随机选取一个或多个与第一目标对象对应的目标第一子区域,作为河流的起点,获取目标第一子区域在第一虚拟场景中的位置信息、以及与目标第一子区域相邻的第一子区域的位置信息,其中,位置信息包括目标第一子区域和第一子区域的高度值;每次搜索随机在与目标子区域相邻的多个第一子区域中选取一个高度值低于该目标第一子区域的第一子区域,使其变更为新的目标第一子区域,作为河流流向的区域。若新的目标第一子区域周围存在第二子区域时,可以选择第二子区域作为新的目标第一子区域,即,河流区域从丘陵流到了平原。当新的目标第一子区域周围没有高度值低于自身的第一子区域与第二子区域时、或当周围存在属于海洋的子区域时,停止搜索。
231.例如,当河流区域周围存在属于海洋的子区域时,选取属于海洋的子区域,作为河流终点。
232.参见图5所示的一种河流模型生成的具体示例图,包括:
233.s501:基于所述第一子区域分别对应的第一高度信息,从所述第一子区域中确定属于所述第一目标对象的第一种子区域;
234.s502:执行下述多个迭代周期:
235.s5021:确定当前迭代周期的当前目标第一子区域;所述当前目标第一子区域包括:所述第一种子区域、或前一迭代周期确定的新的目标第一子区域;
236.s5022:基于所述当前目标第一子区域在所述第一区域中的位置,从所述第一区域中,确定与所述当前目标第一子区域相邻的备选子区域;
237.s5023:响应于任一备选子区域的第一高度信息、小于所述当前目标第一子区域的第一高度信息,且该任一备选子区域的第一高度信息是在所有第一备选子区域分别对应的第一高度信息中的最小值,将该任一备选子区域确定为新的目标第一子区域;
238.s5024:判断所有备选子区域的第一高度信息是否均大于当前目标第一子区域的第一高度信息,如果否,则跳转至s5021;如果是则跳转至s503;
239.s503:将所述第一种子区域、和多个迭代周期分别确定的新的第一目标子区域均作为与所述第一目标对象对应的目标第一子区域。
240.另外,迭代的停止条件还可以是:确定的备选子区域中有至少一个备选子区域属于其他水系,如其他的河流、或者海洋所在的子区域。
241.在确定了属于河流的目标第一子区域后,对所述目标第一子区域进行渲染,在目标地图中生成与属于河流的目标第一子区域对应的河流模型。
242.另外,在生成了丘陵地形对应的第一虚拟场景后,本公开实施例还提供一种生成平原地形对应的第二虚拟场景的具体方式,至少包括下述s11~s12步骤:
243.s11:基于所述噪声数据、以及预设的噪声阈值,从所述属于陆地的多个子区域中,确定属于平原地形的第二子区域。
244.示例性的,将属于陆地的各个子区域分别对应的噪声值及预设的噪声阈值进行比对;若某个子区域对应的噪声值小于该预设的噪声阈值,则表征该子区域高度特征不明显,也即,属于平原地形的第二子区域。
245.另外,在将各个子区域对应的噪声值和噪声阈值进行比对时,还可以是:在噪声值小于或者等于噪声阈值时,表征该子区域属于平原地形的第二子区域。
246.多个第二子区域构成了用于生成平原地形的第二区域。
247.s12:确定第二目标对象在多个第二子区域构成的第二区域中的位置信息,并基于所述位置信息,在所述第二子区域中构建所述第二目标对象,生成所述平原地形对应的第二虚拟场景。
248.具体的,本公开实施例提供下述m1或m2中任一种方式,确定第二目标对象对应的第二子区域在所述第二区域中的位置信息。
249.m1:获取用于生成城镇区域的第二场景参数;其中,所述第二场景参数包括下述至少一种:所述第二目标对象的面积、以及所述第二目标对象的数量;基于所述第二场景参数,对所述第二区域进行泊松分布采样,得到所述第二目标对象对应的第二子区域在所述第二区域中的位置信息。
250.示例性的,第二目标对象可以为平原地形上的城镇,根据第二场景参数获取第二目标对象的面积,生成与第二目标对象的面积大小相等的城镇区域;根据第二场景参数获取生成第二目标对象的数量,并利用泊松分布确定每个第二目标对象在第二区域中的位置信息。
251.例如,城镇区域可以为圆形或者矩形等形状,通过泊松分布在第二区域采样出与第二场景参数中第二目标对象对应的城镇的数量,在本公开提供的一个具体实施例中,确定城镇区域在第二区域中符合预设条件的位置,预设条件包括:两个城镇区域不能重叠;城镇区域不能超出第二区域所在的范围。例如,在第二区域中随机确定一个20
×
20个第二子区域大小的城镇区域,需保证该城镇区域不能超出第二区域,且不能与已经确定的城镇区域重叠,若在第二区域中没有能放置下20
×
20个第二子区域大小的城镇区域,且又没有达到第二场景参数中要求的第二目标对象对应的城镇的数量时,可以缩小城镇区域的面积,如确定一个10
×
15个第二子区域大小的城镇区域,同样需满足预设条件,直至符合第二场景参数中要求的第二目标对象对应的城镇的数量,或第二区域中没有可以满足最小城镇区域的位置。
252.m2:在所述第二区域的多个第二子区域中,确定第二种子区域,并基于所述第二种子区域在所述第二区域中的位置信息,对所述第二种子区域进行生长扩张处理,得到所述第二目标对象对应的第二子区域在所述第二区域中的位置信息。
253.示例性的,可以在第二场景参数中获取第二目标对象的数量的信息,在第二区域中采用泊松分布随机生成与第二目标对象的数量对应的第二种子区域,采用区域生长算法,从第二种子区域开始生长扩张,每次生长扩张随机从与第二种子区域相邻的第二子区域中选取一个确定为属于第二目标对象的第二子区域,根据第二场景参数中包括的第二目标对象的面积的信息,当属于第二目标对象的多个第二子区域的面积达到第二场景参数中包含的第二目标对象的面积时,停止生长扩张,得到第二目标对象对应的第二子区域在第二区域中的位置信息。
254.第二目标对象例如包括城镇;在所述城镇内存在建筑物。
255.在本公开提供的一个具体的实施例中,获取用于生成建筑物的第二场景参数;所述第二场景参数包括下述至少一种:与所述建筑物对应的形状信息、与所述建筑物对应的数量信息、以及与所述建筑物对应的密度信息;基于所述第二场景参数、以及所述位置信息,从所述第二目标对象对应的第二子区域中,确定属于所述建筑物的第一目标子区域在所述第二区域中的第一位置信息、以及所述建筑物的入口所在的位置;基于所述第一位置信息、以及所述建筑物的入口所在的位置、以及所述建筑物对应的形状信息,构建所述建筑物。
256.示例性的,可以根据城镇区域的大小,确定建筑物的层数以及类型,例如,在一个30
×
40个第二子区域大小的大型城镇中,对应的生成的建筑物的层数可以超过6层,城镇中可以包括有超市、体育场、居民区等类型建筑,若在一个20
×
15个第二子区域大小的小型城镇中,对应的生成的建筑物的层数可以在6层以下,城镇中可以有居民区、超市、平房等类型建筑;若在一个5
×
5个第二子区域大小的迷你城镇中,对应的生成的建筑物一般在1层左右,可以是单一的加油站、小木屋、岗亭等类型建筑。
257.另外,确定建筑物的入口位置信息,各个建筑物的入口位置不能被其他建筑物遮挡。
258.构建的建筑物包括:建筑物模型、以及在建筑物内划分的多个房间中每个房间的房间模型;在所述房间模型中,包括多个家具模型。
259.基于第一位置信息,确定建筑物的形状信息;形状信息包括:建筑物的多条俯视轮廓线、以及各条俯视轮廓线分别对应的尺寸信息;多条俯视轮廓线围成的空间包括建筑物的室内空间。
260.构建建筑物的内部构造至少包括下述s21~s23步骤:
261.s21:基于所述第一位置信息,确定所述建筑物的形状信息;所述形状信息包括:所述建筑物的多条俯视轮廓线、以及各条俯视轮廓线分别对应的尺寸信息;多条所述俯视轮廓线围成的空间包括所述建筑物的室内空间。
262.示例性的,以l形建筑物为例,基于入口所在的位置,在俯视轮廓线中确定属于入口的第一子轮廓线,以及,基于各条俯视轮廓线的尺寸信息,确定属于窗户所在的第二子轮廓线。
263.基于第一子轮廓线所在的位置、以及第二子轮廓线所在的位置,将由多条俯视轮
廓线围成的空间划分为多个子空间。
264.具体的,基于所述建筑物的入口位置,将由多条俯视轮廓线围成的空间划分为多个子空间至少包括下述s211~s212步骤:
265.s211:基于所述入口所在的位置,在所述俯视轮廓线中确定属于入口的第一子轮廓线,以及,基于各条俯视轮廓线的尺寸信息,确定属于窗户所在的第二子轮廓线。
266.s212:基于所述第一子轮廓线所在的位置、以及所述第二字子轮廓线所在的位置,将由多条俯视轮廓线围成的空间划分为多个子空间。
267.示例性的,参见图6所示的一种将由多条俯视轮廓线围成的空间划分为多个子空间的具体示例图,确定子空间的最大边长,根据窗户f1和门f2所在的位置,利用第一子轮廓线l1纵向分割该房间,使得窗户位于两条第一子轮廓线中间位置,利用第二子轮廓线l2对半的垂直分割第一子轮廓线,横向分割该房间,直到第一子轮廓线和第二子轮廓线划分出的子空间的每条边长都小于最大边长时,停止分割。
268.划分得到的多个子空间的面积可以相同,也可以不同。
269.s22:基于所述建筑物的入口所在的位置,将由多条俯视轮廓线围成的空间划分为多个房间,并针对每个房间,根据该房间对应房间的房间类型,生成该房间对应的家具摆放方式。
270.其中,将由多条俯视轮廓线围成的空间划分为多个房间至少包括下述s221~s225步骤:
271.s221:从多个子空间中,确定多个种子空间,并利用热度图评分计算每个种子空间所属的房间分别对应的房间类型。
272.s222:对多个种子空间分别进行房间扩展处理,确定多个房间分别对应的第一子空间;属于任一房间的第一子空间构成的空间尺寸,大于该任一房间对应的最小尺寸阈值。
273.s223:基于所述入口所在的位置、以及各个房间对应的第一子空间分别在所述空间中的位置,确定连接所述入口、和所述多个房间的走廊所在的第二子空间。
274.s224:基于多个子空间中除第一子空间和第二子空间外的其他子空间所在的位置、以及各个房间分别对应的第一子空间所在的位置,从所述其他子空间中,确定各个房间分别对应的第三子空间。
275.s225:基于各个房间对应的第一子空间和第三子空间、以及对应房间类型,构成对应房间。
276.示例性的,参见图7a所示的一种在多个子空间中确定种子空间的具体示例图,采样k个子空间作为k个房间类型对应的种子空间,利用热度图对种子空间进行评分,得到种子空间属于不同房间类型的概率。例如,k1~k4子空间有窗户的房间更适合成为厨房、客厅或卧室;距离门近的房间更适合社交,更适合成为客厅或餐厅;距离门远的房间更适合做卧室等。利用上述评分方式,对图7a中的子空间进行房间类型的划分,得到的结果为:子空间k1作为客厅的种子空间,子空间k2作为厨房的种子空间,子空间k3作为主卧的种子空间,子空间k4作为次卧的种子空间,子空间k5作为卫生间的种子空间。其中,在图7a中,还包括窗户f1,门f2,以及各个房间类型的属性标识s1,属性标识通过颜色区分各个种子空间的房间类型。
277.参见图7b所示的一种基于对种子空间进行扩展处理得到房间的具体示例图,将所
有的不同类型房间对应的种子空间确定之后,对种子空间周边的未设置房间属性的子空间执行房间扩展处理。首先是将每个子空间扩大到其房间类型要求的最小尺寸,每次迭代会根据概率选取一个方向进行扩展,直到达到所需的最小尺寸或者没有可供扩展的方向。如果上一个步骤中有房间没有达到最小尺寸要求的房间,会试图收缩其周围的房间,并使其向其他方向扩展。直至所有的房间都满足其最小尺寸。生成连接门口和每个房间的走廊。当走廊生成之后,不属于任何房间的子空间会就近并入最近的房间。利用上述扩展方式,对图7b中的k1~k5种子空间进行扩充,得到的结果为:客厅k1,厨房k2,主卧k3,次卧k4,卫生间k5。
278.房间生成之后,对不同的房间放置符合房间类型的家具类型。例如,厨房放置烤箱、微波炉、灶具等家具、客厅放置沙发、茶几等家具、卧室放置床、衣柜等家具。
279.s23:基于所述建筑物对应的形状信息、以及各个房间分别在所述空间内的位置,生成建筑物模型;以及针对所述建筑物中的每个房间,根据该房间对应的家具摆放方式,生成房间模型。
280.这样,通过上述方式即可生成建筑物的内部构造。
281.在本公开另一实施例中,城镇中还包括:连通所述建筑物的第一道路;
282.其中,构建第一道路包括:基于所述建筑物的入口所在的位置,确定所述建筑物的入口之间的联通关系;利用所述联通关系、属于所述建筑物的第一目标子区域在所述第二区域中的第一位置信息,确定属于所述第一道路的第二目标子区域在所述第二区域中的第二位置信息;基于所述第二目标子区域在所述第二区域中的第二位置信息,构建所述第一道路。
283.此处,根据建筑物的入口所在的位置,使每一个建筑物的路口都有至少一条线段连接。
284.示例性的,可以采用最小生成树算法,将建筑物的入口都联通起来,若建筑物的入口有n个,则最少需要n-1个路径将其连接,其中,两个建筑物入口之间的路径的长度对应与该条路径的权重值的大小,长度越长权重值越大。参见图8所示的一种生成第一道路的具体示例图之一,在建筑物g1和建筑物g2之间至少联通的路径至少存在:路径l1、路径l2加路径l3的组合,其中路径l1的距离小于路径l2加路径l3,因此,路径l1的权重值相比路径l2加路径l3的权重值小。在生成路径之后,可以采用广度优先算法,使生成的路径避开建筑物的同时保证连接所有建筑物入口的路径总权重值最小。根据生成的路径,构建连接城镇内所有建筑物入口的第一道路。参见图8b所示的一种生成第一道路的具体示例图之二,建筑物g1、建筑物g2、建筑物g3之间使用路径l1和路径l2即可相互连接。
285.另外,城镇有多个,所述第二目标对象还包括:联通不同城镇的第二道路;
286.其中,构建第二道路包括:基于所述第一道路对应的第二目标子区域在所述第二区域中的第二位置信息,进行第二子区域的宽度优先搜索,直至在搜索过程中确定的属于第二道路的第三目标区域能够联通所有城镇,并基于在搜索过程中确定的第三目标区域在所述第二区域中的第三位置信息,构建所述第二道路。
287.示例性的,参见图9所述的一种生成第二道路的具体示例图,对不同城镇内的道路节点设置分别设置不同的道路标识,如城镇a、城镇b、城镇c等,采用宽度优先算法,从城镇a中的某一道路节点如a11开始,向外搜索,当搜索到不属于城镇a中的道路标识时,如b23或
c15等,则返回开始道路节点a11形成连接两个城镇的第二道路。
288.另外,在构建第一虚拟场景和第二场景时,例如可以在素材库中选取装饰模型填充第一虚拟场景和第二虚拟场景,得到目标虚拟场景;
289.示例性的,根据每种模型在地图上出现的概率,在道路两旁、建筑物周围、或河流两旁,生成树木、岩石、花草、等装饰。
290.本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
291.基于同一发明构思,本公开实施例中还提供了与虚拟场景生成方法对应的虚拟场景生成装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述虚拟场景生成方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
292.参照图10所示,为本公开实施例提供的一种虚拟场景生成装置,所述装置包括:
293.获取模块101,用于获取目标地图,并获取用于生成丘陵地形的第一场景参数;所述目标地图包括属于陆地的多个子区域;所述第一场景参数包括下述至少一种:所述目标地图的地形起伏程度、最大高度、以及丘陵的数量;
294.高度确定模块102,用于基于所述第一场景参数,在所述目标地图中为属于陆地的多个子区域确定噪声数据;所述噪声数据用于表征所述属于陆地的多个子区域分别对应的高度信息;
295.第一区域确定模块103,基于所述噪声数据、以及预设的噪声阈值,从所述属于陆地的多个子区域中,确定属于丘陵地形的第一子区域;
296.第一场景构建模块104,用于为多个所述第一子区域分别确定对应的第一高度信息,并利用所述第一高度信息,构建丘陵地形对应的第一虚拟场景。
297.一种可选的实施方式中,所述第一区域确定模块103在基于所述噪声数据、以及预设的噪声阈值,从所述属于陆地的多个子区域中,确定属于丘陵地形的第一子区域时,用于:
298.针对属于陆地的多个子区域中的每个子区域,将该子区域对应的噪声值和所述噪声阈值进行比对;
299.响应于所述噪声数据大于所述噪声阈值,将该子区域确定为所述第一子区域。
300.一种可选的实施方式中,所述第一场景构建模块104在为多个所述第一子区域分别确定对应的第一高度信息时,用于:
301.基于所述第一区域中的多个所述第一子区域分别在所述目标地图中的位置确定多个网格,并为所述网格中位于所述第一区域内的第一网格顶点确定第二高度信息;每个所述网格中包括至少一个所述第一子区域;
302.基于所述第一网格顶点的第二高度信息,确定多个所述第一子区域分别对应的第一高度信息。
303.一种可选的实施方式中,所述第一场景构建模块104在基于所述第一区域中的多个所述第一子区域分别在所述目标地图中的位置确定多个网格,并为所述网格中位于所述第一区域内的第一网格顶点确定高度信息时,还用于:
304.基于所述第一区域中的多个第一子区域分别在所述目标地图中的位置,确定所述
第一区域的外接矩形;
305.将所述外接矩形划分为多个网格,并对多个所述网格中位于所述第一区域内的第一网格顶点进行高度的随机采样,得到各个所述第一网格顶点分别对应的第二高度信息。
306.一种可选的实施方式中,所述第一场景构建模块104在基于所述第一网格顶点的第二高度信息,确定多个所述第一子区域分别对应的第一高度信息时,还用于:
307.针对每个网格,基于属于该网格的第一网格顶点分别对应的第二高度信息,对属于该网格中的各个第一子区域进行高度插值处理,得到属于该网格的各个第一子区域分别对应的第一高度信息。
308.一种可选的实施方式中,所述第一区域确定模块103在从所述属于陆地的多个子区域中,确定属于丘陵地形的第一子区域后,所述装置还包括第一模型构建模块106,用于:
309.基于所述第一子区域分别对应的第一高度信息,在所述第一区域中确定第一目标对象对应的目标第一子区域;
310.基于所述目标第一子区域在所述第一区域中的位置信息,在所述第一区域中构建所述第一目标对象。
311.一种可选的实施方式中,所述第一模型构建模块106在基于所述第一子区域分别对应的第一高度信息,在所述第一区域中确定第一目标对象对应的目标第一子区域时,用于:
312.基于所述第一子区域分别对应的第一高度信息,从所述第一子区域中确定属于所述第一目标对象的第一种子区域;
313.执行下述多个迭代周期:
314.确定当前迭代周期的当前目标第一子区域;所述当前目标第一子区域包括:所述第一种子区域、或前一迭代周期确定的新的目标第一子区域;
315.基于所述当前目标第一子区域在所述第一区域中的位置,从所述第一区域中,确定与所述当前目标第一子区域相邻的备选子区域;
316.响应于任一备选子区域的第一高度信息、小于所述当前目标第一子区域的第一高度信息,且该任一备选子区域的第一高度信息是在所有第一备选子区域分别对应的第一高度信息中的最小值,将该任一备选子区域确定为新的目标第一子区域;
317.响应于所有备选子区域的第一高度信息均大于所述当前目标第一子区域的第一高度信息,结束迭代;
318.将所述第一种子区域、和多个迭代周期分别确定的新的第一目标子区域均作为与所述第一目标对象对应的目标第一子区域。
319.一种可选的实施方式中,所述装置还包括第二场景构建模块109,用于:
320.基于所述噪声数据、以及预设的噪声阈值,从所述属于陆地的多个子区域中,确定属于平原地形的第二子区域:
321.确定第二目标对象在多个第二子区域构成的第二区域中的位置信息,并基于所述位置信息,在所述第二子区域中构建所述第二目标对象,生成所述平原地形对应的第二虚拟场景。
322.一种可选的实施方式中,所述第二场景构建模块109在确定第二目标对象在多个第二子区域构成的第二区域中的位置信息时,用于:
323.获取用于生成城镇区域的第二场景参数;其中,所述第二场景参数包括下述至少一种:所述第二目标对象的面积、以及所第二目标对象的数量;
324.基于所述第二场景参数,对所述第二区域进行泊松分布采样,得到所述第二目标对象对应的第二子区域在所述第二区域中的位置信息。
325.一种可选的实施方式中,所述第二场景构建模块在确定第二目标对象对应的第二子区域在所述第二区域中的位置信息时,还用于:
326.在所述第二区域的多个第二子区域中,确定第二种子区域,并基于所述第二种子区域在所述第二区域中的位置信息,对所述第二种子区域进行生长扩张处理,得到所述第二目标对象对应的第二子区域在所述第二区域中的位置信息。
327.一种可选的实施方式中,所述第二场景构建模块109在所述基于所述位置信息,在所述第二区域中构建所述第二目标对象时,所述装置还包括第二模型构建模块108,用于:
328.获取用于生成建筑物的第二场景参数;所述第二场景参数包括下述至少一种:与所述建筑物对应的形状信息、与所述建筑物对应的数量信息、以及与所述建筑物对应的密度信息;
329.基于所述第二场景参数、以及所述位置信息,从所述第二目标对象对应的第二子区域中,确定属于所述建筑物的第一目标子区域在所述第二区域中的第一位置信息、以及所述建筑物的入口所在的位置;
330.基于所述第一位置信息、以及所述建筑物的入口所在的位置、以及所述建筑物对应的形状信息,构建所述建筑物。
331.一种可选的实施方式中,所述第二场景构建模块109在基于所述位置信息,在所述第二区域中构建所述第二目标对象时,所述第二模型构建模块108,用于:
332.基于所述建筑物的入口所在的位置,确定所述建筑物的入口之间的联通关系;利用所述联通关系、属于所述建筑物的第一目标子区域在所述第二区域中的第一位置信息,确定属于所述第一道路的第二目标子区域在所述第二区域中的第二位置信息;
333.基于所述第二目标子区域在所述第二区域中的第二位置信息,构建所述第一道路。
334.一种可选的实施方式中,所述第二场景构建模块109在基于所述位置信息,在所述第二区域中构建所述第二目标对象时,所述第二模型构建模块108,还用于:
335.基于所述第一道路对应的第二目标子区域在所述第二区域中的第二位置信息,进行第二子区域的宽度优先搜索,直至在搜索过程中确定的属于第二道路的第三目标区域能够联通所有城镇,并基于在搜索过程中确定的第三目标区域在所述第二区域中的第三位置信息,构建所述第二道路。
336.一种可选的实施方式中,所述第二模型构建模块108在基于所述第一位置信息、以及所述建筑物的入口所在的位置、以及所述建筑物对应的形状信息,构建所述建筑物时,还用于:
337.基于所述第一位置信息,确定所述建筑物的形状信息;所述形状信息包括:所述建筑物的多条俯视轮廓线、以及各条俯视轮廓线分别对应的尺寸信息;多条所述俯视轮廓线围成的空间包括所述建筑物的室内空间;
338.基于所述建筑物的入口所在的位置,将由多条俯视轮廓线围成的空间划分为多个
房间,并针对每个房间,根据该房间对应房间的房间类型,生成该房间对应的家具摆放方式;
339.基于所述建筑物对应的形状信息、以及各个房间分别在所述空间内的位置,生成建筑物模型;以及针对所述建筑物中的每个房间,根据该房间对应的家具摆放方式,生成房间模型。
340.一种可选的实施方式中,所述第二模型构建模块108在基于所述建筑物的入口所在的位置,将由多条俯视轮廓线围成的空间划分为多个房间时,还用于:
341.基于所述入口所在的位置,在所述俯视轮廓线中确定属于入口的第一子轮廓线,以及,基于各条俯视轮廓线的尺寸信息,确定属于窗户所在的第二子轮廓线;
342.基于所述第一子轮廓线所在的位置、以及所述第二字子轮廓线所在的位置,将由多条俯视轮廓线围成的空间划分为多个子空间;
343.从多个子空间中,确定多个种子空间,并利用热度图评分计算每个种子空间所属的房间分别对应的房间类型;
344.对多个种子空间分别进行房间扩展处理,确定多个房间分别对应的第一子空间;属于任一房间的第一子空间构成的空间尺寸,大于该任一房间对应的最小尺寸阈值;
345.基于所述入口所在的位置、以及各个房间对应的第一子空间分别在所述空间中的位置,确定连接所述入口、和所述多个房间的走廊所在的第二子空间;
346.基于多个子空间中除第一子空间和第二子空间外的其他子空间所在的位置、以及各个房间分别对应的第一子空间所在的位置,从所述其他子空间中,确定各个房间分别对应的第三子空间;
347.基于各个房间对应的第一子空间和第三子空间、以及对应房间类型,构成对应房间。
348.一种可选的实施方式中,所述装置还包括地图构建模块105,用于:
349.获取用于生成初始地图的第三场景参数、以及用于生成陆地区域的第四场景参数;所述第三场景参数包括下述至少一种:所述初始地图的尺寸信息、以及预设的比例尺;所述第四场景参数包括下述至少一种:陆地的数量、以及陆地的面积;
350.基于所述第三场景参数,创建初始地图;
351.基于所述第四场景参数,在所述初始地图中确定属于陆地的目标区域,得到所述目标地图。
352.一种可选的实施方式中,所述地图构建模块105在基于第四场景参数,在所述初始地图中确定属于陆地的目标区域时,所述装置还包括:第二区域确定模块107,用于:
353.基于所述第四场景参数,从所述初始地图包括的多个子区域中确定第三种子区域;
354.基于所述第三种子区域在所述初始地图中的位置信息,对所述第三种子区域进行生长扩张处理,得到属于陆地的多个子区域;属于陆地的多个子区域构成所述目标区域。
355.一种可选的实施方式中,所述第二区域确定模块在基于所述第三种子区域在所述初始地图中的位置信息,对所述第三种子区域进行生长扩张处理,得到属于陆地的多个子区域时,具体用于:
356.在多个迭代周期的每个迭代周期中,执行:
357.基于当前迭代周期已经被确定为属于陆地的子区域在所述初始地图中的位置信息,确定当前迭代周期的备选种子区域;其中,所述备选种子区域与任一子所述属于陆地的子区域位置相邻;其中,所述子区域中包括所述第三种子区域;
358.从所述备选种子区域中,随机确定预设数量的选定种子区域,并将所述选定种子区域确定为属于陆地的子区域;
359.响应于未满足预设迭代停止条件,进入下一迭代周期。
360.关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
361.本公开实施例还提供了一种计算机设备,如图11所示,为本公开实施例提供的计算机设备结构示意图,包括:
362.处理器111和存储器112;所述存储器112存储有处理器111可执行的机器可读指令,处理器111用于执行存储器112中存储的机器可读指令,所述机器可读指令被处理器111执行时,处理器111执行下述步骤:
363.获取目标地图,并获取用于生成丘陵地形的第一场景参数;所述目标地图包括属于陆地的多个子区域;所述第一场景参数包括下述至少一种:所述目标地图的地形起伏程度、最大高度、以及丘陵的数量;
364.基于所述第一场景参数,在所述目标地图中为属于陆地的多个子区域确定噪声数据;所述噪声数据用于表征所述属于陆地的多个子区域分别对应的高度信息;
365.基于所述噪声数据、以及预设的噪声阈值,从所述属于陆地的多个子区域中,确定属于丘陵地形的第一子区域;
366.为多个所述第一子区域分别确定对应的第一高度信息,并利用所述第一高度信息,构建丘陵地形对应的第一虚拟场景。
367.上述存储器112包括内存1121和外部存储器1122;这里的内存1121也称内存储器,用于暂时存放处理器111中的运算数据,以及与硬盘等外部存储器1122交换的数据,处理器111通过内存1121与外部存储器1122进行数据交换。
368.上述指令的具体执行过程可以参考本公开实施例中所述的虚拟场景生成方法的步骤,此处不再赘述。
369.本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的虚拟场景生成方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
370.本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的虚拟场景生成方法的步骤,具体可参见上述方法实施例,在此不再赘述。
371.其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(software development kit,sdk)等等。
372.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开
所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
373.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
374.另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
375.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
376.最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1