CN112717393A - 虚拟场景中的虚拟物件显示方法、装置、设备及存储介质 - Google Patents
虚拟场景中的虚拟物件显示方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112717393A CN112717393A CN202110097485.0A CN202110097485A CN112717393A CN 112717393 A CN112717393 A CN 112717393A CN 202110097485 A CN202110097485 A CN 202110097485A CN 112717393 A CN112717393 A CN 112717393A
- Authority
- CN
- China
- Prior art keywords
- data
- sub
- virtual
- target
- instance component
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/50—Controlling the output signals based on the game progress
- A63F13/52—Controlling the output signals based on the game progress involving aspects of the displayed game scene
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请公开了一种虚拟场景中的虚拟物件显示方法、装置、设备及存储介质,属于计算机技术领域。本申请通过在虚拟场景中,以子物件为单位进行虚拟物件显示,为目标虚拟物件中的每个子物件均确定空间坐标,使目标虚拟物件中各个子物件的显示位置能够根据虚拟场景的地形进行调整,避免目标虚拟物件的模型与地面模型之间出现穿模现象,确保目标虚拟物件能够贴合地面进行显示,提高了虚拟场景的视觉效果。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种虚拟场景中的虚拟物件显示方法、装置、设备及存储介质。
背景技术
SLG(Simulation Game,策略类游戏)是一种基于虚拟场景的对战策略模拟游戏,在SLG游戏的虚拟场景中设置有多种类型的虚拟物件,例如,虚拟矿场、虚拟农田、虚拟树林等,每个虚拟物件中包括多种子物件,例如,虚拟矿场中包括矿石、房屋等子物件,虚拟树林包括多种形态的树木。
目前,在虚拟场景中显示虚拟物件时,是将一个虚拟物件作为一个整体进行渲染,通常一个虚拟物件在虚拟场景中所占的显示区域较大,在虚拟物件的显示区域内的地形有起伏时,虚拟物件的显示效果是无法根据地形进行调整的,会导致虚拟物件中的一些子物件悬浮在空中,一些子物件与地面穿插,也即是,导致虚拟物件的模型与地面模型之间出现穿模现象,虚拟物件无法贴合地面进行显示,进而影响虚拟场景的视觉效果。
发明内容
本申请实施例提供了一种虚拟场景中的虚拟物件显示方法、装置、设备及存储介质,能够使虚拟物件在虚拟场景中贴合地面显示,提高虚拟场景的视觉效果。该技术方案如下:
一方面,提供了一种虚拟场景中的虚拟物件显示方法,该方法包括:
获取虚拟场景中待显示的目标虚拟物件,该目标虚拟物件包括至少两个子物件;
获取该目标虚拟物件中各个子物件的模型数据和第一位置数据,该模型数据用于指示子物件的显示效果,该第一位置数据用于指示子物件在该目标虚拟物件中的平面位置;
对于任一子物件,基于该第一位置数据、第二位置数据以及该虚拟场景中各个位置的高度数据,确定该任一子物件的空间坐标,该第二位置数据用于指示该目标虚拟物件在该虚拟场景中的平面位置;
基于该目标虚拟模型中各个子物件的模型数据和空间坐标,在该虚拟场景中显示该目标虚拟物件。
一方面,提供了一种虚拟场景中的虚拟物件显示装置,该装置包括:
第一获取模块,用于获取虚拟场景中待显示的目标虚拟物件,该目标虚拟物件包括至少两个子物件;
第二获取模块,用于获取该目标虚拟物件中各个子物件的模型数据和第一位置数据,该模型数据用于指示子物件的显示效果,该第一位置数据用于指示子物件在该目标虚拟物件中的平面位置;
坐标确定模块,用于对于任一子物件,基于该第一位置数据、第二位置数据以及该虚拟场景中各个位置的高度数据,确定该任一子物件的空间坐标,该第二位置数据用于指示该目标虚拟物件在该虚拟场景中的平面位置;
显示模块,用于基于该目标虚拟模型中各个子物件的模型数据和空间坐标,在该虚拟场景中显示该目标虚拟物件。
在一种可能实现方式中,该显示模块包括:
生成子模块,用于基于该各个子物件的模型数据和空间坐标,生成实例组件数据,该实例组件数据用于对子物件进行渲染;
渲染子模块,用于调用渲染线程,基于该实例组件数据,在该虚拟场景中渲染出该目标虚拟物件的各个子物件。
在一种可能实现方式中,一个该子物件的空间坐标、朝向数据和尺寸数据存储为一个实例数据,该实例数据用于对该子物件在该虚拟场景中的显示效果进行调整。
在一种可能实现方式中,该生成子模块用于:
创建实例组件列表,该实例组件列表用于存储实例组件数据以及该实例组件数据的索引数据,该实例组件数据包括一个模型数据以及至少一个实例数据;
依次获取该各个子物件的子物件标识,该各个子物件中具有相同模型结构的子物件,对应于相同的子物件标识;
对于任一子物件,响应于该任一子物件的子物件标识与该实例组件列表中的任一实例组件数据的索引数据相匹配,将该任一子物件的实例数据,添加至该任一实例组件数据中。
在一种可能实现方式中,该生成子模块还用于:
对于任一子物件,响应于该任一子物件的子物件标识与该实例组件列表中的实例组件数据的索引数据均不匹配,在该实例组件列表中生成一个新的实例组件数据;
将该任一子物件的子物件标识确定为该新的实例组件数据的索引数据;
将该任一子物件的模型数据和实例数据添加至该新的实例组件数据中。
在一种可能实现方式中,该渲染子模块包括:
列表获取子模块,用于获取最新创建的实例组件列表,该实例组件列表存储有待渲染的实例组件数据;
遍历子模块,用于遍历该实例组件列表中的实例组件数据;
读取子模块,用于对于任一实例组件数据,响应于该任一实例组件数据处于渲染状态,从该最新创建的实例组件列表中读取下一个实例组件数据;
发送子模块,用于响应于该任一实例组件数据处于未渲染状态,将该任一实例组件数据发送至该渲染线程。
在一种可能实现方式中,该读取子模块用于:
对于任一实例组件数据,响应于该任一实例组件数据所包括的模型数据与处于渲染状态的实例组件数据所包括的模型数据相同,基于该任一实例组件数据所包括的模型数据和实例数据,确定该任一实例组件数据对应的目标哈希值;
响应于该目标哈希值与处于渲染状态的实例组件数据所对应的哈希值相同,确定该任一实例组件数据处于渲染状态,从该最新创建的实例组件列表中读取下一个实例组件数据。
在一种可能实现方式中,该发送子模块用于:
响应于该任一实例组件数据处于未渲染状态,获取当前处于渲染状态的实例组件数据的目标数目;
响应于该目标数目小于数目阈值,将该任一实例组件数据发送至该渲染线程,将该目标数目加一。
在一种可能实现方式中,该第一获取模块包括:
单元格获取子模块,用于在该虚拟场景所包括的单元格中确定目标单元格,该目标单元格是该虚拟场景的可显示区域中的单元格,一个该单元格用于表示该虚拟场景中的一个区域;
物件确定子模块,用于将显示位置位于该目标单元格上的虚拟物件,确定为该目标虚拟物件。
在一种可能实现方式中,该单元格获取子模块用于:
在该虚拟场景所包括的子区域中,确定用户所在的目标子区域,一个该子区域包括至少两个单元格;
在该目标子区域所包括的单元格中,确定位于该可显示区域的目标单元格。
在一种可能实现方式中,该第二获取模块包括:
查询子模块,用于基于该目标虚拟物件的物件标识,查询该目标虚拟物件对应的物件模板,该物件模板用于存储虚拟物件的配置信息;
数据获取子模块,用于从该物件模板所存储的配置信息中,获取该目标虚拟物件所包括的各个子物件的模型数据和第一位置数据。
在一种可能实现方式中,该空间坐标包括该任一子物件所处位置的平面坐标和高度坐标;
该坐标确定模块用于:
将该第一位置数据与该第二位置数据相加,得到该任一子物件在该虚拟场景中的该平面坐标;
在该虚拟场景的各个位置的高度数据中,获取该平面坐标所指示的位置的高度数据,作为该任一子物件的高度坐标。
一方面,提供了一种计算机设备,该计算机设备包括一个或多个处理器和一个或多个存储器,该一个或多个存储器中存储有至少一条计算机程序,该至少一条计算机程序由该一个或多个处理器加载并执行以实现该虚拟场景中的虚拟物件显示方法所执行的操作。
一方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条计算机程序,该至少一条计算机程序由处理器加载并执行以实现该虚拟场景中的虚拟物件显示方法所执行的操作。
一方面,提供了一种计算机程序产品,该计算机程序产品包括至少一条计算机指令,该至少一条计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该至少一条计算机指令,处理器执行该至少一条计算机指令,使得该计算机设备实现该虚拟场景中的虚拟物件显示方法所执行的操作。
本申请实施例提供的技术方案,通过在虚拟场景中,以子物件为单位进行虚拟物件显示,为目标虚拟物件中的每个子物件均确定空间坐标,使目标虚拟物件中各个子物件的显示位置能够根据虚拟场景的地形进行调整,避免目标虚拟物件的模型与地面模型之间出现穿模现象,确保目标虚拟物件能够贴合地面进行显示,提高了虚拟场景的视觉效果。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种物件模板的示意图;
图2是本申请实施例提供的另一种物件模板的示意图;
图3是本申请实施例提供的一种虚拟场景中的虚拟物件显示方法的实施环境示意图;
图4是本申请实施例提供的一种虚拟场景中的虚拟物件显示方法的流程图;
图5是本申请实施例提供的一种虚拟物件的示意图;
图6是本申请实施例提供的一种虚拟场景中的虚拟物件显示方法的流程图;
图7是本申请实施例提供的一种虚拟场景的示意图;
图8是本申请实施例提供的一种虚拟场景中的虚拟物件示意图;
图9是本申请实施例提供的一种目标单元格和目标虚拟物件的获取方法的流程图;
图10是本申请实施例提供的一种实例组件数据的示意图;
图11是本申请实施例提供的在一种实例组件数据所包括的实例数据示意图;
图12是本申请实施例提供的一种实例数据的示意图;
图13是本申请实施例提供的一种实例组件数据生成方法的流程图;
图14是本申请实施例提供的一种目标虚拟物件的渲染方法流程图;
图15是本申请实施例提供的一种虚拟场景中的虚拟物件显示装置的结构示意图;
图16是本申请实施例提供的一种终端的结构示意图;
图17是本申请实施例提供的一种服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。
为了便于理解本申请实施例的技术过程,下面对本申请实施例所涉及的一些名词进行解释:
虚拟场景:是应用程序在终端上运行时显示(或提供)的虚拟场景。示例性的,该虚拟场景是对真实世界的仿真环境,或者,是半仿真半虚构的虚拟环境,或者,是纯虚构的虚拟环境。示例性的,虚拟场景是二维虚拟场景、2.5维虚拟场景和三维虚拟场景中的任意一种,本申请对此不加以限定。例如,虚拟场景包括天空、陆地、海洋等,该陆地包括沙漠、城市等环境元素,用户能够在虚拟场景中添加多种虚拟物件。
虚拟物件:是指放置在虚拟场景中的模型,例如虚拟建筑、虚拟农田、虚拟树林等。可选的,虚拟物件在虚拟场景中的位置能够改变。在本申请实施例中,一个虚拟物件包括多个子物件,例如,虚拟建筑所包括的子物件为多种不同形态的房屋,可选的,一个子物件实现为一个三维模型。
单元格:虚拟场景中最小的区域划分单位,在本申请实施例中,一个单元格的区域中能够放置一个虚拟物件。
实例数据(Instance Data):对子物件的三维模型进行渲染时所需的数据,在本申请实施例中,一个该子物件的空间坐标、朝向数据和尺寸数据存储为一个实例数据,该实例数据用于对该子物件在该虚拟场景中的显示效果进行调整,也即是,实例数据用于调整子物件的三维模型在虚拟场景中的位置、朝向、缩放大小等。
实例组件(Instance Component):用于存储子物件的模型数据和实例数据的一种结构,生成实例组件所应用的数据成为实例组件数据,该实例组件数据中包括多个实例数据。在虚拟物件渲染时,渲染器能够读取和识别实例组件,进而基于实例组件数据对各个子物件进行渲染。
物件模板(Template):用于存储虚拟物件的视觉表现数据的配置文件,应用UE4(Unreal Engine 4,虚幻4引擎)中的蓝图制作,物件模板中包括多个实例组件数据。图1是本申请实施例提供的一种物件模板的示意图,参见图1,区域101中示出了虚拟矿场的物件模板(BP_Copper_Level07_Desert)所包括多个实例组件数据,例如,实例组件数据102,即InstancedPlantStaticMesh14是虚拟矿场中的石块所对应的实例组件数据。图2是本申请实施例提供的另一种物件模板的示意图,参见图2,区域201中示出了虚拟农田的物件模板(BP_Cereals_Level09_Plain)所包括的多个实例组件数据,例如,实例组件数据202,即InstancedPlantStaticMesh11是虚拟农田中的草丛所对应的实例组件数据。
图3是本申请实施例提供的一种虚拟场景中的虚拟物件显示方法的实施环境示意图,参见图3,该实施环境包括:终端310和服务器340。
其中,终端310安装和运行有支持虚拟场景和虚拟物件显示的目标应用程序,示例性的,该目标应用程序是SLG(Simulation Game,策略类游戏)、虚拟现实应用程序、三维地图程序、军事仿真程序、角色扮演类游戏(Role-Playing Game,RPG)、多人在线战术竞技游戏(Multiplayer Online Battle Arena Games,MOBA)、多人枪战类生存游戏中的任意一种。终端310是用户使用的终端,示例性的,用户使用终端310在虚拟场景中摆放虚拟物件,用户也能够对虚拟物件进行删除、编辑等。
服务器340包括一台服务器、多台服务器、云计算平台和虚拟化中心中的至少一种。服务器340用于为支持虚拟场景和虚拟物件显示的目标应用程序提供后台服务。可选的,服务器340承担主要计算工作,终端310承担次要计算工作;或者,服务器340承担次要计算工作,终端310承担主要计算工作;或者,服务器340和终端310之间采用分布式计算架构进行协同计算。
在本申请实施例中,终端310通过无线网络或有线网络与服务器340相连。本领域技术人员可以知晓,上述终端的数量可以更多或更少。比如上述终端可以仅为一个,或者上述终端为几十个或几百个,或者更多数量。本申请实施例对终端的数量和设备类型不加以限定。
本申请实施例提供的虚拟物件显示方法,能够应用于多种应用程序中,与多种应用场景相结合。示例性的,在一些游戏类应用程序的运行界面中显示有虚拟场景,该虚拟场景中包括地形平坦的区域,也包括地形起伏的区域,用户能够在虚拟场景中摆放多种虚拟物件,也即是,终端基于用户操作将虚拟物件渲染到虚拟场景中进行显示,结合本申请实施例提供的技术方案,在对虚拟物件进行渲染时,基于虚拟物件显示区域的地形起伏状态,分别确定该虚拟物件中各个子物件的空间坐标,使各个子物件的位置与显示区域的地形相贴合,确保虚拟物件能够贴合地面显示。
图4是本申请实施例提供的一种虚拟场景中的虚拟物件显示方法的流程图。该方法应用于上述实施环境中,在本申请实施例中,以终端作为执行主体,对该虚拟场景中的虚拟物件显示方法进行介绍,参见图4,在一种可能实现方式中,该实施例包括以下步骤:
401、终端获取虚拟场景中待显示的目标虚拟物件,该目标虚拟物件包括至少两个子物件。
在本申请实施例中,虚拟场景中能够显示多个不同的虚拟物件,一个虚拟物件能够拆解为多个子物件。图5是本申请实施例提供的一种虚拟物件的示意图,参见图5,该虚拟物件501为虚拟矿场,该虚拟物件包括多个子物件,例如,虚拟石块502、虚拟房屋503等。
在一种可能实现方式中,该终端安装和运行有支持虚拟场景和虚拟物件显示的目标应用程序,该目标应用程序的运行时,在终端的操作界面中显示虚拟场景中的部分区域,可选的,用户通过在操作界面的滑动操作、拖拽操作等,能够调整该操作界面中所显示的虚拟场景的区域。在本申请实施例中,该待显示的目标虚拟物件是位于该操作界面所显示的部分区域中的虚拟物件,该目标虚拟物件的数目为一个或者多个,本申请实施例对此不作限定。
402、终端获取该目标虚拟物件中各个子物件的模型数据和第一位置数据,该模型数据用于指示子物件的显示效果,该第一位置数据用于指示子物件在该目标虚拟物件中的平面位置。
在本申请实施例中,一个子物件对应于一个三维模型,该三维模型的模型数据能够指示子物件在虚拟场景中的显示效果。可选的,该第一位置数据表示为一个平面坐标,即子物件在目标虚拟物件中的x轴坐标和y轴坐标。
在一种可能实现方式中,目标虚拟物件的数据,即目标虚拟物件所包括的子物件、子物件的模型数据和第一位置数据等,均存储在目标应用程序的配置文件中,一个目标虚拟物件对应于一个配置文件。可选的,配置文件应用目标虚拟物件的物件标识来命名。在一种可能实现方式中,终端基于目标虚拟物件的物件标识,查询该目标虚拟物件对应的目标配置文件,从该目标配置文件中获取各个子物件的模型数据和第一位置数据。需要说明的是,上述对获取模型数据和第一位置数据的方法的说明,仅是一种可能实现方式的示例性说明,本申请实施例对此不作限定。
403、对于任一子物件,终端基于该第一位置数据、第二位置数据以及该虚拟场景中各个位置的高度数据,确定该任一子物件的空间坐标,该第二位置数据用于指示该任一目标虚拟物件在该虚拟场景中的平面位置。
其中,该虚拟场景中各个位置的高度数据用于指示虚拟场景中的地形起伏状态,例如,虚拟场景中包括山地区域,该山地区域的各个位置高度不同,即对应于不同的高度数据,可选的,该高度数据表示为虚拟场景中各个位置的高度坐标,即z轴坐标。可选的,该第二位置数据表示为一个平面坐标,即目标子物件在虚拟场景中的x轴坐标和y轴坐标。该空间坐标包括平面坐标和高度坐标,该平面坐标为子物件在虚拟场景中的x轴坐标和y轴坐标,该高度坐标为子物件在虚拟场景中的z轴坐标。
在本申请实施例中,终端分别确定目标虚拟物件中各个子物件在虚拟场景中的空间坐标,其中,该高度坐标是子物件所在位置的地形高度确定的,从而在后续对目标虚拟物件渲染时,能够根据虚拟场景的地形起伏将目标虚拟物件中的各个子物件显示在不同的高度,达到目标虚拟物件整体贴合地面显示的效果。
404、终端基于该目标虚拟模型中各个子物件的模型数据和空间坐标,在该虚拟场景中显示该目标虚拟物件。
在一种可能实现方式中,终端调用渲染线程,基于各个子物件的模型数据和空间坐标等数据,对各个子物件进行渲染,使各个子物件显示在虚拟场景的相应位置。需要说明的是,本申请实施例对模型渲染的方法不作限定。
本申请实施例提供的技术方案,通过在虚拟场景中,以子物件为单位进行虚拟物件显示,为目标虚拟物件中的每个子物件均确定空间坐标,其中,该空间坐标中的高度坐标是基于虚拟场景中的各个位置的高度数据,即虚拟场景的地形起伏状态确定的,目标虚拟物件中的各个子物件在虚拟场景中的平面坐标不同,各个平面坐标所指示的位置的高度不同,则各个子物件在虚拟场景中的高度坐标也不同,使目标虚拟物件中各个子物件的显示位置能够根据虚拟场景的地形进行调整,避免目标虚拟物件的模型与地面模型之间出现穿模现象,确保目标虚拟物件能够贴合地面进行显示,提高了虚拟场景的视觉效果。
上述实施例是对本申请提供的虚拟场景中的虚拟物件显示方法的一种简要介绍,以下结合图6,对该方法进行具体说明。图6是本申请实施例提供的一种虚拟场景中的虚拟物件显示方法的流程图,参见图6,在一种可能实现方式中,该方法包括以下步骤:
601、终端在虚拟场景所包括的单元格中确定目标单元格。
其中,单元格是虚拟场景中最小的区域划分单位,一个单元格用于表示虚拟场景中的一个单位的区域。图7是本申请实施例提供的一种虚拟场景的示意图,虚拟场景701视为一个地图,虚拟场景701的区域划分为多个单元格702。示例性的,单元格为多边形的格子,本申请实施例对此不作限定,在本申请实施例中,仅以单元格是六边形格子为例进行说明。在本申请实施例中,该目标单元格是该虚拟场景的可显示区域中的单元格,该可显示区域是虚拟场景中被显示在终端的操作界面上的区域。
在一种可能实现方式中,该虚拟场景划分为多个子区域,一个子区域包括多个单元格,该虚拟场景中子区域的划分由开发人员进行设置,例如,基于目标应用程序中所设置的关卡来划分子区域,本申请实施例对此不做限定。如图7所示,虚拟场景701划分为第一子区域703和第二子区域704。可选的,在目标应用程序中,不同子区域对应于不同的关卡或者不同的用户权限,例如,通过不同关卡,或者,具有不同的用户等级、不同的用户属性,能够解锁虚拟场景中不同的子区域。在本申请实施例中,终端在该虚拟场景所包括的子区域中,确定用户所在的目标子区域,在该目标子区域所包括的单元格中,确定位于可显示区域的目标单元格。示例性的,该目标子区域是目标应用程序启动运行时,默认显示的子区域;或者,是用户上一次退出目标应用程序时,在虚拟场景中停留的子区域;或者,是用户最新解锁的子区域,本申请实施例对此不做限定。
602、终端将显示位置位于该目标单元格上的虚拟物件,确定为目标虚拟物件。
在本申请实施例中,一个单元格上能够放置一个虚拟物件,当然,该虚拟场景中也包括未放置虚拟物件的单元格。图8是本申请实施例提供的一种虚拟场景中的虚拟物件示意图,如图8所示,单元格801、802、803上均显示有虚拟物件,其他单元格上未放置虚拟物件。在一种可能实现方式中,若单元格上放置了某个虚拟物件,则将该单元格与该虚拟物件的物件标识相关联,示例性的,一个单元格对应于一个格子信息,该格子信息包括单元格在虚拟场景中的平面位置、放置在该单元格上的虚拟物件的物件标识。终端确定位于可显示区域的目标单元格后,从目标单元格对应的格子信息中获取物件标识,该物件标识所指示的虚拟物件即为该目标虚拟物件。
需要说明的是,上述步骤601和602是获取虚拟场景中待显示的目标虚拟物件的步骤。图9是本申请实施例提供的一种目标单元格和目标虚拟物件的获取方法的流程图,以下结合图9,对上述步骤601和步骤602进行说明。在一种可能实现方式中,虚拟场景中的每个子区域对应于一个区域格子列表,一个区域格子列表用于存储一个子区域所包括的各个单元格的格子信息,可选的,该格子列表存储在目标应用程序所对应的服务器中,当然,该格子列表也能够由终端进行本地存储,本申请实施例对此不做限定。如图9所示,在步骤901中,终端先从服务器中获取用户所在的目标子区域所对应的区域格子列表,再执行步骤902,从区域格子列表中读取出一个单元格的格子信息,判断该单元格是否在可显示区域中,若否,则重新执行上述步骤902,若是,则继续执行步骤903,在步骤903中,终端将该单元格的格子信息添加至可见格子列表,该见格子列表包括位于可显示区域的各个目标单元格的格子信息,终端能够基于该可见格子列表确定位于可显示区域的目标单元格以及目单元格上的目标虚拟物件。终端判断当前是否已读取区域格子列表中的全部的格子信息,若否,则重新执行步骤902,若是,则执行步骤904,将可见格子列表发送至其他线程,终端调用其他线程继续执行后续的实例组件数据生成步骤。需要说明的是,上述对获取目标单元格和目标虚拟物件的方法的说明,仅是一种示例性说明,本申请实施例对采用哪种方法获取目标单元格和目标虚拟物件不作限定。
603、获取该目标虚拟物件中各个子物件的模型数据和第一位置数据。
其中,该模型数据用于指示子物件的显示效果,该第一位置数据用于指示子物件在该目标虚拟物件中的平面位置,也即是,子物件在目标虚拟物件所处的单元格中的平面位置。可选的,该第一位置数据包括x轴坐标和y轴坐标,示例性的,对于每个单元格,基于该单元格的中心点建立平面坐标系,单元格的中心点坐标为(0,0),终端获取该子物件的中心点在该平面坐标系中的x轴坐标和y轴坐标,作为该第一位置数据。
在一种可能实现方式中,终端存储有物件模板,该物件模板是由开发人员预先制作的,该物件模板用于存储虚拟物件的配置信息,例如,该配置信息包括虚拟物件中各个子物件的模型数据、第一位置数据、朝向数据、尺寸数据、虚拟物件在虚拟场景中的第二位置数据等,一个虚拟物件的物件模板与该虚拟物件的物件标识相关联。在一种可能实现方式中,终端基于该目标虚拟物件的物件标识,查询该目标虚拟物件对应的物件模板,从该物件模板所存储的配置信息中,获取该目标虚拟物件所包括的各个子物件的模型数据和第一位置数据。需要说明的是,上述对获取子物件的模型数据和第一位置数据的说明,仅是一种可能实现方式的示例性说明,本申请实施例对采用哪种方法获取子物件的模型数据和第一位置数据不作限定。
604、对于任一子物件,终端基于该第一位置数据、第二位置数据以及该虚拟场景中各个位置的高度数据,确定该任一子物件的空间坐标。
其中,该空间坐标包括该任一子物件所处位置的平面坐标和高度坐标。该第二位置数据用于指示该任一目标虚拟物件在该虚拟场景中的平面位置,也即是,该目标虚拟物件所处的目标单元格在该虚拟场景中的平面位置,可选的,该第二位置数据为目标虚拟物件所处的目标单元格的中心点,在该虚拟场景中的坐标。在本申请实施例中,该第一位置数据和第二位置数据均表示为x轴坐标和y轴坐标。
在一种可能实现方式中,终端将该第一位置数据与该第二位置数据相加,得到该任一子物件在该虚拟场景中的该平面坐标,再从该虚拟场景的各个位置的高度数据中,获取该平面坐标所指示的位置的高度数据,作为该任一子物件的高度坐标。示例性的,终端存储有该虚拟场景的高度图,该高度图用于指示虚拟场景中各个位置的高度,终端基于该平面坐标查询该高度图,从该高度图中获取该平面坐标所指示位置的高度坐标。需要说明的是,上述对确定子物件的空间坐标的方法的说明,仅是一种示例性说明,本申请实施例对采用哪种方法获取子物件的空间坐标不作限定。
在本申请实施例中,为虚拟物件中的每个子物件赋予空间坐标,且该空间坐标中的高度坐标是基于虚拟场景的地形确定的,在后续对虚拟物件进行显示时,能够根据虚拟场景的地形,灵活地对子物件的高度进行调整,将虚拟物件中的各个子物件显示在不同高度的位置,实现虚拟物件贴地显示的效果。
605、终端基于各个子物件的模型数据和空间坐标,生成实例组件数据。
其中,该实例组件数据用于对子物件进行渲染,在本申请实施例中,终端将模型结构相同的子物件的实例数据,合并为一个实例组件数据,也即是,一个实例组件数据包括一个模型数据以及至少一个实例数据。该实例数据用于对该子物件在该虚拟场景中的显示效果进行调整,一个实例数据包括一个子物件的空间坐标、朝向数据和尺寸数据等。
在一种可能实现方式中,终端先创建实例组件列表,该实例组件列表用于存储实例组件数据以及该实例组件数据的索引数据。再依次获取该各个子物件的子物件标识,在本申请实施例中,各个子物件中具有相同模型结构的子物件,对应于相同的子物件标识,也即是,若存在多个子物件具有相同的模型数据,则该多个子物件对应于相同的子物件标识。对于任一子物件,响应于该任一子物件的子物件标识与该实例组件列表中的任一实例组件数据的索引数据相匹配,将该任一子物件的实例数据,添加至该任一实例组件数据中。响应于该任一子物件的子物件标识与该实例组件列表中的实例组件数据的索引数据均不匹配,在该实例组件列表中生成一个新的实例组件数据,将该任一子物件的子物件标识确定为该新的实例组件数据的索引数据,将该任一子物件的模型数据和实例数据添加至该新的实例组件数据中。图10是本申请实施例提供的一种实例组件数据的示意图,图10示出了渲染虚拟场景中的各个虚拟物件所应用到的实例组件数据的集合,如图10所示,虚拟场景所应用到的实例组件数据的集合(Map Obj Varieties)包括164个实例组件数据(164Mapelements),区域1001中示出了一个实例组件数据所包括的内容,例如,实例组件数据的索引数据(key)、子物件的三维模型的模型数据等。图11是本申请实施例提供的在一种实例组件数据所包括的实例数据示意图,如图11所示,区域1101示出了一个实例组件数据Element0中包括多个实例数据(Instance Data)。图12是本申请实施例提供的一种实例数据的示意图,如图12所示,实例数据1201中包括子物件的空间坐标(Pos X、Pos Y和Pos Z)、朝向数据(Yaw)以及尺寸数据(Scale)等。
图13是本申请实施例提供的一种实例组件数据生成方法的流程图,以下结合图13,对上述步骤603至步骤605进行说明。如图13所示,在一种可能实现方式中,终端先执行获取可见格子列表的步骤1301,再执行步骤1302,创建一个新的实例组件列表,判断该可见格子列表是否为空,若是,则执行步骤1303,基于该实例组件列表中的数据进行虚拟物件渲染,若否,则执行步骤1304,从该可见格子列表中读取出一个目标单元格的格子信息。终端执行步骤1305,基于该格子信息确定该目标单元格在虚拟场景中的第二位置数据,再执行步骤1306,基于该目标单元格上的目标虚拟物件的物件标识,查询该目标虚拟物件对应的物件模板,从该物件模板中获取该目标虚拟物件所包括的子物件的模型数据和实例数据,该实例数据中包括子物件的第二位置数据。终端执行步骤1307,遍历目标虚拟物件所包括的各个子物件,确定各个子物件的平面坐标,再执行步骤1308,基于各个子物件的平面坐标以及虚拟场景的高度图,确定各个子物件的高度坐标。对于任一子物件,终端判断实例组件列表的各个实例组件数据中,是否包括该子物件的模型数据,若是,则执行步骤1309,若否,则执行步骤1310,在步骤1309中,终端将该任一子物件的实例数据,添加至该任一实例组件数据中,在步骤1310中,终端在该实例组件列表中生成一个新的实例组件数据,将该任一子物件的子物件标识确定为该新的实例组件数据的索引数据,将该任一子物件的模型数据和实例数据添加至该新的实例组件数据中。需要说明的是,上述对实例组件数据生成方法的说明,仅是一种可能实现方式的示例性说明,本申请实施例对采用哪种方法生成实例组件数据不作限定。
在一种可能实现方式中,在三维模型渲染过程中,基于实例组件数据进行分批次渲染,例如,一个实例组件数据对应于一个渲染批次,在本申请实施例中,将模型结构相同的子物件的实例数据,合并为一个实例组件数据,在一个渲染批次中即可完成多个子物件的渲染,能够解决模型渲染过程中渲染的批次过大的问题,提高终端性能。
606、终端调用渲染线程,基于该实例组件数据,在该虚拟场景中渲染出该目标虚拟物件的各个子物件。
在一种可能实现方式中,终端获取最新创建的实例组件列表,该实例组件列表存储有待渲染的实例组件数据,终端遍历该实例组件列表中的实例组件数据,在本申请实施例中,对于任一实例组件数据,响应于该任一实例组件数据处于渲染状态,从该最新创建的实例组件列表中读取下一个实例组件数据。示例性的,终端响应于该任一实例组件数据所包括的模型数据与处于渲染状态的实例组件数据所包括的模型数据相同,基于该任一实例组件数据所包括的模型数据和实例数据,确定该任一实例组件数据对应的目标哈希值;响应于该目标哈希值与处于渲染状态的实例组件数据所对应的哈希值相同,也即是,两个实例组件数据中所包括的数据相同,则确定该任一实例组件数据处于渲染状态,从该最新创建的实例组件列表中读取下一个实例组件数据。在本申请实施例中,对于任一实例组件数据,响应于该任一实例组件数据处于未渲染状态,将该任一实例组件数据发送至该渲染线程。
在一种可能实现方式中,终端基于分帧渲染的方式,在一帧内渲染一定数目的实例组件数据,也即是,终端响应于该任一实例组件数据处于未渲染状态,获取当前处于渲染状态的实例组件数据的目标数目,响应于该目标数目小于数目阈值,将该任一实例组件数据发送至该渲染线程,将该目标数目加一。其中,处于渲染状态的实例组件数据是指已将该实例组件数据发送至渲染线程,该数目阈值用于指示一帧内发送渲染的实例组件数据的数目上限,该数目阈值由开发人员进行设置,本申请实施例对此不作限定。在本申请实施例中,通过分帧的方式对各个虚拟物件的子物件进行动态渲染,避免一次性给渲染线程发送过多的子物件,能够有效缓解终端的CPU(Central Processing Unit,中央处理器)性能压力。
图14是本申请实施例提供的一种目标虚拟物件的渲染方法流程图,以下结合图14,对上述步骤606进行说明。参见图14,在一种可能实现方式中,终端先执行获取最新生成的实例组件列表的步骤1401,再执行步骤1402,从该最新生成的实例组件列表中读取出一个实例组件数据,执行计算该实例组件数据的哈希值的步骤1403。终端执行判断步骤1404,判断该实例组件数据是否为处于渲染状态的实例组件数据,若是,则执行步骤1405,若否,则执行步骤1407。在步骤1405中,终端判断该实例组件数据的哈希值与处于渲染状态的实例组件数据的哈希值是否相同,若是,则执行步骤1402,若否,则执行步骤1406,将当前处于渲染状态的实例组件数据删除,再执行步骤1407。在步骤1407中,终端判断处于渲染状态的实例组件数据的数目是否达到数目阈值,若是,则执行步骤1411,若否,则执行步骤1408。在步骤1408中,终端基于该实例组件数据创建一个新的实例组件,在步骤1409中,将该新的实例组件发送至渲染器进行渲染。终端执行步骤1410,判断该新生成的实例组件列表中的数据是否全部被读取,若否,则执行步骤1402,若是,则执行步骤1411,在步骤1411中,终端对处于渲染状态的实例组件数据进行清理,将处于渲染状态的实例组件数据中,未包括在该新生成的实例组件列表中的实例组件数据删除。在一些实施例中,终端是部署有多核处理器的,即处理器中包括多个计算引擎,示例性的,在上述虚拟物件渲染过程中,基于可见格子列表中的数据生成实例组件的过程由第一计算引擎实现,对实例组件进行渲染的过程由第二计算引擎实现,以避免单个计算引擎的数据处理压力过大,确保终端的正常运行。
需要说明的是,上述步骤605和步骤606是基于该目标虚拟模型中各个子物件的模型数据和空间坐标,在该虚拟场景中显示该目标虚拟物件的步骤。在本申请实施例中,通过对相同子物件的实例数据进行合并处理以及分帧渲染的方式,能够有效降低终端在模型渲染过程中的数据处理压力,提高终端在模型渲染过程中的设备性能。
本申请实施例提供的技术方案,通过在虚拟场景中,以子物件为单位进行虚拟物件显示,为目标虚拟物件中的每个子物件均确定空间坐标,使目标虚拟物件中各个子物件的显示位置能够根据虚拟场景的地形进行调整,避免目标虚拟物件的模型与地面模型之间出现穿模现象,确保目标虚拟物件能够贴合地面进行显示,提高了虚拟场景的视觉效果。
以下结合游戏应用程序,对上述虚拟场景中的虚拟物件显示方法进行说明。在一种可能实现方式中,用户进入一局游戏后,终端的操作界面加载显示本局游戏对应的虚拟场景,结合本申请实施例提供的技术方案,终端先确定操作界面中所显示的虚拟场景的区域,在虚拟物件渲染过程中,仅对位于该区域的虚拟物件进行渲染,能够有效降低游戏开局或游戏启动时的模型渲染数据量,避免游戏在启动时出现长时间卡顿。
在虚拟物件渲染阶段,一个虚拟物件能够拆分为多个子物件,也即是,在虚拟物件渲染过程中,是以子物件为最小单元进行渲染的。在一种可能实现方式中,首先,终端基于待渲染的虚拟物件在虚拟场景中的平面位置以及各个子物件在虚拟物件中的平面位置,确定各个子物件在虚拟场景中的平面坐标;然后,终端获取虚拟场景对应的高度图,该高度图存储有虚拟场景中各个位置的高度数据,即存储有虚拟场景中平面坐标与高度坐标的对应关系,终端基于各个子物件的平面坐标查询该高度图,得到各个子物件对应的高度坐标,确定出各个子物件在虚拟场景中的空间坐标;最后,终端基于各个子物件的空间坐标,将各个子物件渲染在虚拟场景中的不同位置。在本申请实施例中,通过对虚拟物件进行更细粒度的拆分,使终端能够分别调整虚拟物件中各个子物件的显示物质,且终端基于虚拟场景的地形起伏,灵活地调整各个子物件在虚拟场景中的高度位置,使各个子物件能够贴合地面显示,从而使整体的虚拟物件能够贴合虚拟场景的地面显示,避免出现穿模现象。
在一种可能实现方式中,由于各个虚拟物件之间能够共用某一个子物件,也即是,多个虚拟物件中包括相同的子物件,结合本申请实施例的技术方案,在上述基于子物件的空间坐标分别对各个子物件进行渲染的过程中,为降低渲染的批次,终端将相同的子物件进行合并渲染。示例性的,终端将相同的子物件的数据合并为一个实例组件,将实例组件发送到渲染线程,通过渲染线程调用渲染器进行子物件渲染。其中,该实例组件是渲染器所支持处理的数据,该实例组件中包括子物件的三维模型的模型数据,还包括各个子物件在虚拟场景中的空间坐标、朝向、尺寸等,在一个渲染批次中,终端对一个实例组件进行渲染,也即是,在一个渲染批次中对多个相同的子物件进行渲染。在本申请实施例中,通过将模型结构相同的子物件的数据合并为一个实例组件,也即是,将模型结构相同的子物件放在一个批次中渲染,能够有效解决渲染批次过多的问题,也能够提高渲染效率,降低虚拟物件渲染的耗时,从而使游戏应用程序能够快速的完成初始虚拟场景画面的加载,降低用户在启动游戏或进入一局游戏的等待时长,提升用户体验。另外,在本申请实施例中,还采用分帧渲染的方式,来限制一帧中所渲染的实例组件的数目,避免出现在游戏启动时,一帧中同时渲染的实例组件数目过多,而导致终端运行卡顿的问题,确保终端的正常运行,提高游戏应用程序运行的流畅性,缓解终端处理器的运行压力。
上述所有可选技术方案,可以采用任意结合形成本申请的可选实施例,在此不再一一赘述。
图15是本申请实施例提供的一种虚拟场景中的虚拟物件显示装置的结构示意图,参见图15,该装置包括:
第一获取模块1501,用于获取虚拟场景中待显示的目标虚拟物件,该目标虚拟物件包括至少两个子物件;
第二获取模块1502,用于获取该目标虚拟物件中各个子物件的模型数据和第一位置数据,该模型数据用于指示子物件的显示效果,该第一位置数据用于指示子物件在该目标虚拟物件中的平面位置;
坐标确定模块1503,用于对于任一子物件,基于该第一位置数据、第二位置数据以及该虚拟场景中各个位置的高度数据,确定该任一子物件的空间坐标,该第二位置数据用于指示该目标虚拟物件在该虚拟场景中的平面位置;
显示模块1504,用于基于该目标虚拟模型中各个子物件的模型数据和空间坐标,在该虚拟场景中显示该目标虚拟物件。
在一种可能实现方式中,该显示模块1504包括:
生成子模块,用于基于该各个子物件的模型数据和空间坐标,生成实例组件数据,该实例组件数据用于对子物件进行渲染;
渲染子模块,用于调用渲染线程,基于该实例组件数据,在该虚拟场景中渲染出该目标虚拟物件的各个子物件。
在一种可能实现方式中,一个该子物件的空间坐标、朝向数据和尺寸数据存储为一个实例数据,该实例数据用于对该子物件在该虚拟场景中的显示效果进行调整。
在一种可能实现方式中,该生成子模块用于:
创建实例组件列表,该实例组件列表用于存储实例组件数据以及该实例组件数据的索引数据,该实例组件数据包括一个模型数据以及至少一个实例数据;
依次获取该各个子物件的子物件标识,该各个子物件中具有相同模型结构的子物件,对应于相同的子物件标识;
对于任一子物件,响应于该任一子物件的子物件标识与该实例组件列表中的任一实例组件数据的索引数据相匹配,将该任一子物件的实例数据,添加至该任一实例组件数据中。
在一种可能实现方式中,该生成子模块还用于:
对于任一子物件,响应于该任一子物件的子物件标识与该实例组件列表中的实例组件数据的索引数据均不匹配,在该实例组件列表中生成一个新的实例组件数据;
将该任一子物件的子物件标识确定为该新的实例组件数据的索引数据;
将该任一子物件的模型数据和实例数据添加至该新的实例组件数据中。
在一种可能实现方式中,该渲染子模块包括:
列表获取子模块,用于获取最新创建的实例组件列表,该实例组件列表存储有待渲染的实例组件数据;
遍历子模块,用于遍历该实例组件列表中的实例组件数据;
读取子模块,用于对于任一实例组件数据,响应于该任一实例组件数据处于渲染状态,从该最新创建的实例组件列表中读取下一个实例组件数据;
发送子模块,用于响应于该任一实例组件数据处于未渲染状态,将该任一实例组件数据发送至该渲染线程。
在一种可能实现方式中,该读取子模块用于:
对于任一实例组件数据,响应于该任一实例组件数据所包括的模型数据与处于渲染状态的实例组件数据所包括的模型数据相同,基于该任一实例组件数据所包括的模型数据和实例数据,确定该任一实例组件数据对应的目标哈希值;
响应于该目标哈希值与处于渲染状态的实例组件数据所对应的哈希值相同,确定该任一实例组件数据处于渲染状态,从该最新创建的实例组件列表中读取下一个实例组件数据。
在一种可能实现方式中,该发送子模块用于:
响应于该任一实例组件数据处于未渲染状态,获取当前处于渲染状态的实例组件数据的目标数目;
响应于该目标数目小于数目阈值,将该任一实例组件数据发送至该渲染线程,将该目标数目加一。
在一种可能实现方式中,该第一获取模块1501包括:
单元格获取子模块,用于在该虚拟场景所包括的单元格中确定目标单元格,该目标单元格是该虚拟场景的可显示区域中的单元格,一个该单元格用于表示该虚拟场景中的一个区域;
物件确定子模块,用于将显示位置位于该目标单元格上的虚拟物件,确定为该目标虚拟物件。
在一种可能实现方式中,该单元格获取子模块用于:
在该虚拟场景所包括的子区域中,确定用户所在的目标子区域,一个该子区域包括至少两个单元格;
在该目标子区域所包括的单元格中,确定位于该可显示区域的目标单元格。
在一种可能实现方式中,该第二获取模块1502包括:
查询子模块,用于基于该目标虚拟物件的物件标识,查询该目标虚拟物件对应的物件模板,该物件模板用于存储虚拟物件的配置信息;
数据获取子模块,用于从该物件模板所存储的配置信息中,获取该目标虚拟物件所包括的各个子物件的模型数据和第一位置数据。
在一种可能实现方式中,该空间坐标包括该任一子物件所处位置的平面坐标和高度坐标;
该坐标确定模块1503用于:
将该第一位置数据与该第二位置数据相加,得到该任一子物件在该虚拟场景中的该平面坐标;
在该虚拟场景的各个位置的高度数据中,获取该平面坐标所指示的位置的高度数据,作为该任一子物件的高度坐标。
本申请实施例提供的装置,通过在虚拟场景中,以子物件为单位进行虚拟物件显示,为目标虚拟物件中的每个子物件均确定空间坐标,使目标虚拟物件中各个子物件的显示位置能够根据虚拟场景的地形进行调整,避免目标虚拟物件的模型与地面模型之间出现穿模现象,确保目标虚拟物件能够贴合地面进行显示,提高了虚拟场景的视觉效果。
需要说明的是:上述实施例提供的虚拟场景中的虚拟物件显示装置在虚拟场景中显示虚拟物件时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的虚拟场景中的虚拟物件显示装置与虚拟场景中的虚拟物件显示方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述技术方案所提供的计算机设备可以实现为终端或服务器,例如,图16是本申请实施例提供的一种终端的结构示意图。该终端1600可以是:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1600还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端1600包括有:一个或多个处理器1601和一个或多个存储器1602。
处理器1601可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1601可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1601也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1601可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1601还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1602可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1602还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1602中的非暂态的计算机可读存储介质用于存储至少一条计算机程序,该至少一条计算机程序用于被处理器1601所执行以实现本申请中方法实施例提供的虚拟场景中的虚拟物件显示方法。
在一些实施例中,终端1600还可选包括有:外围设备接口1603和至少一个外围设备。处理器1601、存储器1602和外围设备接口1603之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1603相连。具体地,外围设备包括:射频电路1604、显示屏1605、摄像头组件1606、音频电路1607、定位组件1608和电源1609中的至少一种。
外围设备接口1603可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1601和存储器1602。在一些实施例中,处理器1601、存储器1602和外围设备接口1603被集成在同一芯片或电路板上;在一些其他实施例中,处理器1601、存储器1602和外围设备接口1603中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1604用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1604通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1604将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选的,射频电路1604包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1604可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1604还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1605用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1605是触摸显示屏时,显示屏1605还具有采集在显示屏1605的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1601进行处理。此时,显示屏1605还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1605可以为一个,设置终端1600的前面板;在另一些实施例中,显示屏1605可以为至少两个,分别设置在终端1600的不同表面或呈折叠设计;在一些实施例中,显示屏1605可以是柔性显示屏,设置在终端1600的弯曲表面上或折叠面上。甚至,显示屏1605还可以设置成非矩形的不规则图形,也即异形屏。显示屏1605可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1606用于采集图像或视频。可选的,摄像头组件1606包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1606还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1607可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1601进行处理,或者输入至射频电路1604以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1600的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1601或射频电路1604的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1607还可以包括耳机插孔。
定位组件1608用于定位终端1600的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件1608可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源1609用于为终端1600中的各个组件进行供电。电源1609可以是交流电、直流电、一次性电池或可充电电池。当电源1609包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端1600还包括有一个或多个传感器1610。该一个或多个传感器1610包括但不限于:加速度传感器1611、陀螺仪传感器1612、压力传感器1613、指纹传感器1614、光学传感器1615以及接近传感器1616。
加速度传感器1611可以检测以终端1600建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1611可以用于检测重力加速度在三个坐标轴上的分量。处理器1601可以根据加速度传感器1611采集的重力加速度信号,控制显示屏1605以横向视图或纵向视图进行用户界面的显示。加速度传感器1611还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器1612可以检测终端1600的机体方向及转动角度,陀螺仪传感器1612可以与加速度传感器1611协同采集用户对终端1600的3D动作。处理器1601根据陀螺仪传感器1612采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1613可以设置在终端1600的侧边框和/或显示屏1605的下层。当压力传感器1613设置在终端1600的侧边框时,可以检测用户对终端1600的握持信号,由处理器1601根据压力传感器1613采集的握持信号进行左右手识别或快捷操作。当压力传感器1613设置在显示屏1605的下层时,由处理器1601根据用户对显示屏1605的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1614用于采集用户的指纹,由处理器1601根据指纹传感器1614采集到的指纹识别用户的身份,或者,由指纹传感器1614根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1601授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1614可以被设置终端1600的正面、背面或侧面。当终端1600上设置有物理按键或厂商Logo时,指纹传感器1614可以与物理按键或厂商Logo集成在一起。
光学传感器1615用于采集环境光强度。在一个实施例中,处理器1601可以根据光学传感器1615采集的环境光强度,控制显示屏1605的显示亮度。具体地,当环境光强度较高时,调高显示屏1605的显示亮度;当环境光强度较低时,调低显示屏1605的显示亮度。在另一个实施例中,处理器1601还可以根据光学传感器1615采集的环境光强度,动态调整摄像头组件1606的拍摄参数。
接近传感器1616,也称距离传感器,通常设置在终端1600的前面板。接近传感器1616用于采集用户与终端1600的正面之间的距离。在一个实施例中,当接近传感器1616检测到用户与终端1600的正面之间的距离逐渐变小时,由处理器1601控制显示屏1605从亮屏状态切换为息屏状态;当接近传感器1616检测到用户与终端1600的正面之间的距离逐渐变大时,由处理器1601控制显示屏1605从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图16中示出的结构并不构成对终端1600的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
图17是本申请实施例提供的一种服务器的结构示意图,该服务器1700可因配置或性能不同而产生比较大的差异,可以包括一个或多个处理器(Central Processing Units,CPU)1701和一个或多个的存储器1702,其中,该一个或多个存储器1702中存储有至少一条计算机程序,该至少一条计算机程序由该一个或多个处理器1701加载并执行以实现上述各个方法实施例提供的方法。当然,该服务器1700还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器1700还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括至少一条计算机程序的存储器,上述至少一条计算机程序可由处理器执行以完成上述实施例中的虚拟场景中的虚拟物件显示方法。例如,该计算机可读存储介质可以是只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、只读光盘(Compact DiscRead-Only Memory,CD-ROM)、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品,该计算机程序产品包括至少一条计算机指令,该至少一条计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该至少一条计算机指令,处理器执行该至少一条计算机指令,使得该计算机设备实现该虚拟场景中的虚拟物件显示方法所执行的操作。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
上述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (15)
1.一种虚拟场景中的虚拟物件显示方法,其特征在于,所述方法包括:
获取虚拟场景中待显示的目标虚拟物件,所述目标虚拟物件包括至少两个子物件;
获取所述目标虚拟物件中各个子物件的模型数据和第一位置数据,所述模型数据用于指示子物件的显示效果,所述第一位置数据用于指示子物件在所述目标虚拟物件中的平面位置;
对于任一子物件,基于所述第一位置数据、第二位置数据以及所述虚拟场景中各个位置的高度数据,确定所述任一子物件的空间坐标,所述第二位置数据用于指示所述目标虚拟物件在所述虚拟场景中的平面位置;
基于所述目标虚拟模型中各个子物件的模型数据和空间坐标,在所述虚拟场景中显示所述目标虚拟物件。
2.根据权利要求1所述的方法,其特征在于,所述基于所述目标虚拟模型中各个子物件的模型数据和空间坐标,在所述虚拟场景中显示所述目标虚拟物件,包括:
基于所述各个子物件的模型数据和空间坐标,生成实例组件数据,所述实例组件数据用于对子物件进行渲染;
调用渲染线程,基于所述实例组件数据,在所述虚拟场景中渲染出所述目标虚拟物件的各个子物件。
3.根据权利要求2所述的方法,其特征在于,一个所述子物件的空间坐标、朝向数据和尺寸数据存储为一个实例数据,所述实例数据用于对所述子物件在所述虚拟场景中的显示效果进行调整。
4.根据权利要求3所述的方法,其特征在于,所述基于所述各个子物件的模型数据和空间坐标,生成实例组件数据,包括:
创建实例组件列表,所述实例组件列表用于存储实例组件数据以及所述实例组件数据的索引数据,所述实例组件数据包括一个模型数据以及至少一个实例数据;
依次获取所述各个子物件的子物件标识,所述各个子物件中具有相同模型结构的子物件,对应于相同的子物件标识;
对于任一子物件,响应于所述任一子物件的子物件标识与所述实例组件列表中的任一实例组件数据的索引数据相匹配,将所述任一子物件的实例数据,添加至所述任一实例组件数据中。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
对于任一子物件,响应于所述任一子物件的子物件标识与所述实例组件列表中的实例组件数据的索引数据均不匹配,在所述实例组件列表中生成一个新的实例组件数据;
将所述任一子物件的子物件标识确定为所述新的实例组件数据的索引数据;
将所述任一子物件的模型数据和实例数据添加至所述新的实例组件数据中。
6.根据权利要求2所述的方法,其特征在于,所述调用渲染线程,基于所述实例组件数据,在所述虚拟场景中渲染出所述目标虚拟物件的各个子物件,包括:
获取最新创建的实例组件列表,所述实例组件列表存储有待渲染的实例组件数据;
遍历所述实例组件列表中的实例组件数据;
对于任一实例组件数据,响应于所述任一实例组件数据处于渲染状态,从所述最新创建的实例组件列表中读取下一个实例组件数据;
响应于所述任一实例组件数据处于未渲染状态,将所述任一实例组件数据发送至所述渲染线程。
7.根据权利要求6所述的方法,其特征在于,所述对于任一实例组件数据,响应于所述任一实例组件数据处于渲染状态,从所述最新创建的实例组件列表中读取下一个实例组件数据,包括:
对于任一实例组件数据,响应于所述任一实例组件数据所包括的模型数据与处于渲染状态的实例组件数据所包括的模型数据相同,基于所述任一实例组件数据所包括的模型数据和实例数据,确定所述任一实例组件数据对应的目标哈希值;
响应于所述目标哈希值与处于渲染状态的实例组件数据所对应的哈希值相同,确定所述任一实例组件数据处于渲染状态,从所述最新创建的实例组件列表中读取下一个实例组件数据。
8.根据权利要求6所述的方法,其特征在于,所述响应于所述任一实例组件数据处于未渲染状态,将所述任一实例组件数据发送至所述渲染线程,包括:
响应于所述任一实例组件数据处于未渲染状态,获取当前处于渲染状态的实例组件数据的目标数目;
响应于所述目标数目小于数目阈值,将所述任一实例组件数据发送至所述渲染线程,将所述目标数目加一。
9.根据权利要求1所述的方法,其特征在于,所述获取虚拟场景中待显示的目标虚拟物件,包括:
在所述虚拟场景所包括的单元格中确定目标单元格,所述目标单元格是所述虚拟场景的可显示区域中的单元格,一个所述单元格用于表示所述虚拟场景中的一个区域;
将显示位置位于所述目标单元格上的虚拟物件,确定为所述目标虚拟物件。
10.根据权利要求9所述的方法,其特征在于,所述在所述虚拟场景所包括的单元格中确定目标单元格,包括:
在所述虚拟场景所包括的子区域中,确定用户所在的目标子区域,一个所述子区域包括至少两个单元格;
在所述目标子区域所包括的单元格中,确定位于所述可显示区域的目标单元格。
11.根据权利要求1所述的方法,其特征在于,所述获取所述目标虚拟物件中各个子物件的模型数据和第一位置数据,包括:
基于所述目标虚拟物件的物件标识,查询所述目标虚拟物件对应的物件模板,所述物件模板用于存储虚拟物件的配置信息;
从所述物件模板所存储的配置信息中,获取所述目标虚拟物件所包括的各个子物件的模型数据和第一位置数据。
12.根据权利要求1所述的方法,其特征在于,所述空间坐标包括所述任一子物件所处位置的平面坐标和高度坐标;
所述对于任一子物件,基于所述第一位置数据、第二位置数据以及所述虚拟场景中各个位置的高度数据,确定所述任一子物件的空间坐标,包括:
将所述第一位置数据与所述第二位置数据相加,得到所述任一子物件在所述虚拟场景中的所述平面坐标;
在所述虚拟场景的各个位置的高度数据中,获取所述平面坐标所指示的位置的高度数据,作为所述任一子物件的高度坐标。
13.一种虚拟场景中的虚拟物件显示装置,其特征在于,所述装置包括:
第一获取模块,用于获取虚拟场景中待显示的目标虚拟物件,所述目标虚拟物件包括至少两个子物件;
第二获取模块,用于获取所述目标虚拟物件中各个子物件的模型数据和第一位置数据,所述模型数据用于指示子物件的显示效果,所述第一位置数据用于指示子物件在所述目标虚拟物件中的平面位置;
坐标确定模块,用于对于任一子物件,基于所述第一位置数据、第二位置数据以及所述虚拟场景中各个位置的高度数据,确定所述任一子物件的空间坐标,所述第二位置数据用于指示所述目标虚拟物件在所述虚拟场景中的平面位置;
显示模块,用于基于所述目标虚拟模型中各个子物件的模型数据和空间坐标,在所述虚拟场景中显示所述目标虚拟物件。
14.一种计算机设备,其特征在于,所述计算机设备包括一个或多个处理器和一个或多个存储器,所述一个或多个存储器中存储有至少一条计算机程序,所述至少一条计算机程序由所述一个或多个处理器加载并执行以实现如权利要求1至权利要求12任一项所述的虚拟场景中的虚拟物件显示方法所执行的操作。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行以实现如权利要求1至权利要求12任一项所述的虚拟场景中的虚拟物件显示方法所执行的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110097485.0A CN112717393B (zh) | 2021-01-25 | 2021-01-25 | 虚拟场景中的虚拟物件显示方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110097485.0A CN112717393B (zh) | 2021-01-25 | 2021-01-25 | 虚拟场景中的虚拟物件显示方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112717393A true CN112717393A (zh) | 2021-04-30 |
CN112717393B CN112717393B (zh) | 2023-02-10 |
Family
ID=75595280
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110097485.0A Active CN112717393B (zh) | 2021-01-25 | 2021-01-25 | 虚拟场景中的虚拟物件显示方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112717393B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113797529A (zh) * | 2021-09-18 | 2021-12-17 | 珠海金山网络游戏科技有限公司 | 目标展示方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090109219A1 (en) * | 2007-10-30 | 2009-04-30 | Advanced Micro Devices, Inc. | Real-time mesh simplification using the graphics processing unit |
US20180330468A1 (en) * | 2015-12-25 | 2018-11-15 | Intel Corporation | Alpha blending and display update bandwidth saving during render and display operations |
CN110738720A (zh) * | 2019-10-08 | 2020-01-31 | 腾讯科技(深圳)有限公司 | 特效渲染方法、装置、终端及存储介质 |
CN112149214A (zh) * | 2020-09-23 | 2020-12-29 | 成都云铁智能交通科技有限公司 | 一种一杆一档数据驱动模型生成三维腕臂支撑装置的方法 |
CN112190948A (zh) * | 2020-10-15 | 2021-01-08 | 网易(杭州)网络有限公司 | 一种游戏地图的生成方法、装置、电子设备及存储介质 |
-
2021
- 2021-01-25 CN CN202110097485.0A patent/CN112717393B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090109219A1 (en) * | 2007-10-30 | 2009-04-30 | Advanced Micro Devices, Inc. | Real-time mesh simplification using the graphics processing unit |
US20180330468A1 (en) * | 2015-12-25 | 2018-11-15 | Intel Corporation | Alpha blending and display update bandwidth saving during render and display operations |
CN110738720A (zh) * | 2019-10-08 | 2020-01-31 | 腾讯科技(深圳)有限公司 | 特效渲染方法、装置、终端及存储介质 |
CN112149214A (zh) * | 2020-09-23 | 2020-12-29 | 成都云铁智能交通科技有限公司 | 一种一杆一档数据驱动模型生成三维腕臂支撑装置的方法 |
CN112190948A (zh) * | 2020-10-15 | 2021-01-08 | 网易(杭州)网络有限公司 | 一种游戏地图的生成方法、装置、电子设备及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113797529A (zh) * | 2021-09-18 | 2021-12-17 | 珠海金山网络游戏科技有限公司 | 目标展示方法及装置 |
CN113797529B (zh) * | 2021-09-18 | 2023-11-21 | 珠海金山数字网络科技有限公司 | 目标展示方法及装置、计算设备和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112717393B (zh) | 2023-02-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109614171B (zh) | 虚拟道具转移方法、装置、电子设备及计算机存储介质 | |
CN110841285B (zh) | 界面元素的显示方法、装置、计算机设备及存储介质 | |
CN108363569B (zh) | 应用中的图像帧生成方法、装置、设备及存储介质 | |
CN107803030B (zh) | 用于虚拟地图上资源据点的刷新方法及装置 | |
US11934814B2 (en) | Application porting method and apparatus, device, and medium | |
CN112565806B (zh) | 虚拟礼物赠送方法、装置、计算机设备及介质 | |
CN111178343A (zh) | 基于人工智能的多媒体资源检测方法、装置、设备及介质 | |
US20220291791A1 (en) | Method and apparatus for determining selected target, device, and storage medium | |
CN113032590B (zh) | 特效展示方法、装置、计算机设备及计算机可读存储介质 | |
CN112116681A (zh) | 图像生成方法、装置、计算机设备及存储介质 | |
CN112717393B (zh) | 虚拟场景中的虚拟物件显示方法、装置、设备及存储介质 | |
CN111068323B (zh) | 智能速度检测方法、装置、计算机设备及存储介质 | |
CN111651693A (zh) | 数据展示方法、数据排序方法、装置、设备及介质 | |
CN113018865B (zh) | 攀爬线生成方法、装置、计算机设备及存储介质 | |
CN112188268B (zh) | 虚拟场景展示方法、虚拟场景的介绍视频生成方法及装置 | |
CN111369434B (zh) | 拼接视频封面生成的方法、装置、设备和存储介质 | |
CN113762054A (zh) | 图像识别方法、装置、设备及可读存储介质 | |
CN113144595A (zh) | 虚拟道路的生成方法、装置、终端及存储介质 | |
CN113592997A (zh) | 基于虚拟场景的物体绘制方法、装置、设备及存储介质 | |
CN113268234A (zh) | 页面生成方法、装置、终端和存储介质 | |
CN113076452A (zh) | 应用分类的方法、装置、设备及计算机可读存储介质 | |
US11983840B2 (en) | Method and apparatus for adding map element, terminal, and storage medium | |
CN113058266B (zh) | 虚拟环境中场景字体的显示方法、装置、设备及介质 | |
CN111375204B (zh) | 显示数据获取方法、装置、设备及存储介质 | |
CN110201392B (zh) | 用户界面生成方法、装置和终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40042455 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |