CN111068313B - 一种应用中的场景更新控制方法、装置及存储介质 - Google Patents

一种应用中的场景更新控制方法、装置及存储介质 Download PDF

Info

Publication number
CN111068313B
CN111068313B CN201911236522.0A CN201911236522A CN111068313B CN 111068313 B CN111068313 B CN 111068313B CN 201911236522 A CN201911236522 A CN 201911236522A CN 111068313 B CN111068313 B CN 111068313B
Authority
CN
China
Prior art keywords
voxel
file
index
memory
scene
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.)
Active
Application number
CN201911236522.0A
Other languages
English (en)
Other versions
CN111068313A (zh
Inventor
严润发
王杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201911236522.0A priority Critical patent/CN111068313B/zh
Publication of CN111068313A publication Critical patent/CN111068313A/zh
Priority to PCT/CN2020/120064 priority patent/WO2021109709A1/zh
Application granted granted Critical
Publication of CN111068313B publication Critical patent/CN111068313B/zh
Priority to US17/501,633 priority patent/US12033267B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/08Volume rendering
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/04Indexing scheme for image data processing or generation, in general involving 3D image data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种应用中的场景更新控制方法、装置及存储介质,用以从磁盘中读取体素文件,并存储在内存中,以提升游戏进程的流畅度。本申请在场景更新过程中,从磁盘读取场景的各个体素文件并保存到内存中,其中,场景被划分为多个区域块,每个区域块上的体素组成一个体素文件,各个体素文件在磁盘中的存储顺序是根据多个区域块在场景中的更新顺序确定的;根据场景中待更新的区域块,确定待更新的区域块对应的目标体素文件;从内存中获取目标体素文件中的各个体素,并根据获取的体素对场景进行更新。从磁盘中读取场景各个区域块对应的体素文件并保存到内存中,更新场景时在内存中读取待更新的区域块对应的目标体素文件,提升游戏进程的流畅度。

Description

一种应用中的场景更新控制方法、装置及存储介质
技术领域
本申请涉及计算机技术,特别涉及游戏数据处理,提供一种应用中的场景更新控制方法、装置及存储介质。
背景技术
随着用户对游戏品质需求的提升,游戏已基本进入3D(3Dimensions,三维)时代,3D游戏的玩法不仅仅在地面,还包括空中飞行、战斗等等。
目前3D游戏中已采用体素来描述场景中的对象,体素是3D空间的最小表示单位,类比于2D空间的像素。目前现有相关技术中,在游戏运行过程中,需要将整个场景对应的体素和索引全部连续存储在内存中。但全部存储占用内存过大,且游戏应用程序申请的内存有限,无法将体素和索引全部存储在内存中。因此如何获取体素文件并存储在内存中,以保证游戏进程的流畅度是目前需要解决的问题。
发明内容
本申请提供一种应用中的场景更新控制方法、装置及存储介质,用以从磁盘中读取体素文件,并存储在游戏应用程序申请的内存中,以保证游戏进程的流畅度。
第一方面,本申请提供一种应用中的场景更新控制方法,该方法包括:
在场景更新过程中,从磁盘读取场景的各个体素文件并保存到内存中,其中,所述场景被划分为多个区域块,每个区域块上的体素组成一个体素文件,各个体素文件在磁盘中的存储顺序是根据所述多个区域块在场景中的更新顺序确定的;
根据场景中待更新的区域块,确定待更新的区域块对应的目标体素文件;
从内存中获取所述目标体素文件中的各个体素,并根据获取的体素对场景进行更新。
第二方面,本申请提供一种应用中的场景更新控制装置,该装置包括:
读取单元,用于在场景更新过程中,从磁盘读取场景的各个体素文件并保存到内存中,其中,所述场景被划分为多个区域块,每个区域块上的体素组成一个体素文件,各个体素文件在磁盘中的存储顺序是根据所述多个区域块在场景中的更新顺序确定的;
确定单元,用于根据场景中待更新的区域块,确定待更新的区域块对应的目标体素文件;
更新单元,用于从内存中获取所述目标体素文件中的各个体素,并根据获取的体素对场景进行更新。
第三方面,本申请提供一种应用中的场景更新控制设备,包括:存储器和处理器,其中,存储器,用于存储计算机指令;处理器,用于执行计算机指令以实现上述应用中的场景更新控制方法。
第四方面,本申请提供一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,计算机指令被处理器执行时实现本申请提供的应用中的场景更新控制方法。
本申请有益效果如下:
在场景更新过程中,从磁盘读取场景的各个体素文件并保存到内存中,其中,场景被划分为多个区域块,每个区域块上的体素组成一个体素文件,各个体素文件在磁盘中的存储顺序是根据多个区域块在场景中的更新顺序确定的;根据场景中待更新的区域块,确定待更新的区域块对应的目标体素文件;从内存中获取目标体素文件中的各个体素,并根据获取的体素对场景进行更新。从磁盘中读取场景各个区域块对应的体素文件并保存到内存中,更新场景时在内存中读取待更新的区域块对应的目标体素文件中的体素,提升游戏进程的流畅度。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1A为3D场景示意图;
图1B为3D场景的体素化场景示意图;
图2为3D游戏体素化的场景示意图;
图3为相关技术中体素在磁盘中的逐行存储的示意图;
图4为应用中的场景更新控制的应用场景示意图;
图5为本申请实施例提供的一种应用中的场景更新控制方法流程图;
图6为本申请实施例提供的一种场景划分的示意图;
图7为本申请实施例中磁盘中存储区域块的体素文件和索引文件的示意图;
图8为本申请实施例中预先从磁盘中读取区域块的体素文件和索引文件示意图;
图9为本申请实施例中根据区域块存储顺序确定位置坐标索引下标示意图;
图10为本申请实施例中提供的缓存中未命中目标体素文件中的体素的示意图;
图11为本申请实施例中提供的缺页中断示意图;
图12为本申请实施例中提供的一种应用中的场景更新控制方法整体流程图;
图13为本申请实施例中提供的一种应用中场景更新控制装置结构图;
图14为本申请实施例中提供的一种应用中场景更新控制的移动设备结构图。
具体实施方式
为了使本申请的目的、技术方案及有益效果更加清楚明白,以下将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,并不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。
1、磁盘是一种辅助存储器又称外存储器,是除CPU(Central Processing Unit,中央处理器)缓存及内存以外的存储器,用于存储暂时不用的程序和数据,与内存器进行信息交换;且辅助存储器能长期保存信息,断电后信息不会丢失。
2、体素是体积元素的简称,包含体素的立体可以通过立体渲染或者提取给定阈值轮廓的多边形等值面表现出来。是数字数据于三维空间分割上的最小单位,体素用于三维成像、科学数据与医学影像等领域。目前体素还用于游戏中,用于对3D场景的描绘。
3、内存是外存与CPU进行沟通的桥梁,其主要用来存储系统和应用程序的指令、数据、缓存等。
4、用户空间又称用户地址空间,是内存中供应用程序使用的空间,属于用户地址空间,应用程序可以直接从用户空间中读取数据,无需获取权限;与用户空间并列的是内核空间,内核空间也是内存中的一部分,但是内核空间为所有的系统进程所共享,属于系统地址空间,需要访问权限。内核空间的占用量与用户空间的占用量的总和是整个内存。对于不同的操作系统,对内存的用户空间和内核空间的大小划分存在差异。以内存为4G进行举例,在windows系统下4G地址空间中低2G地址空间(0x00000000-0x7FFFFFFF)是用户地址空间即用户空间,4G地址空间中高2G地址空间(0x80000000-0xFFFFFFFF)是系统地址空间即内核空间。在linux系统下将4G地址空间中最高的1G(0xC0000000-0xFFFFFFFF)划分为系统地址空间即内核空间,而将较低的3G(0x00000000-0xBFFFFFFF)划分为用户地址空间即用户空间。因此用户空间用于存储各个应用程序的数据。
5、缓存空间是内存缓存,是内存中的一部分,用以消耗一部分内存空间来提升速度,缓存空间中用于存储被查询多次的应用程序数据。
6、mmap是一种内存映射文件的方法,用于将一个文件或者其它对象映射到内存的用户空间,实现文件磁盘地址和用户地址空间中一段虚拟地址的一一对映关系。
7、流式加载:根据玩家的时间和空间的局部性,加载场景数据。在加载过程中,首先判断目标对象的当前位置坐标,接着预先加载临近位置坐标的场景数据。具体流程以一个场景中包含多个房间为例,首先加载目标对象当前所在房间的场景数据,并预先加载与目标对象所在房间相邻的下一个房间的场景数据,当目标对象到达下一个房间的时候,加载结束;并继续预先加载下一个房间的场景数据,依次类推。
下面对本申请的设计思想进行简要介绍。
游戏已成为用户生活娱乐、休闲、交流的必要工具。随着用户对游戏品质需求的提升,游戏已进入3D时代,3D场景中的对象由体素构成,体素是3D空间的最小表示单位,用一个小长方体来表示,因此3D场景中的物体将由多个小长方体组成。如图1A所示,为3D场景示意图;如图1B所示,为图1A所示的3D场景对应的体素化场景示意图,场景中的建筑物由多个立方体组合形成。
目前,游戏应用程序安装在移动设备的辅助存储器中,即数据存储在辅助存储器中。比如在移动设备中安装某游戏应用程序时将游戏应用程序的数据全部存储在移动设备的磁盘中。存储在辅助存储器中的数据是不能实现其游戏功能的,在进行游戏的过程中,需要将数据调入内存中,游戏应用程序读取内存中的数据以运行游戏。
对于超大3D场景,将场景体素化存储在磁盘中,如图2所示,为3D场景体素化的示意图,将3D场景根据体素上表面或下表面划分成多个格子,每个格子的大小与体素上表面或下表面大小一致,每个格子表示一个位置坐标;将场景每个位置坐标上的物体体素化,如图2所示位置坐标(0,0)上的立方体A和立方体B均表示位置坐标(0,0)上体素化后的物体。
目前,相关技术中将体素化的场景进行存储时,采用逐行或逐列存储的方式顺序存储各个位置坐标的索引和各个位置坐标上的体素,生成索引文件和体素文件。
以采用逐行存储的方式进行举例,先存储第一行中各个位置坐标的索引及第一行中各个位置坐标的体素。结合图2给出的体素化场景示意图可知:第一行的第一个位置坐标为(0,0),体素为体素A和体素B;第一行的第二个坐标为(0,1),体素为体素C,以此依次进行存储,如图3所示,为相关技术中在磁盘中存储体素文件和索引文件的示意图。从图3中可知:第一行的第一个位置坐标为(0,0)、索引下标为0、索引为0、体素为体素A和体素B,(0,0)的索引指向(0,0)处的起始体素A;第一行的第二个坐标为(0,1)、索引下标为1、索引为2、体素为体素C,(0,1)的索引指向(0,1)处的起始体素C。因此在确定位置坐标后即可确定出该位置坐标的索引下标,根据索引下标可以找到该位置坐标的体素。
在进行游戏时,游戏应用程序需要从内存中读取数据,加载场景中各个位置坐标的体素。因此需要将该游戏应用程序在磁盘中存储的体素文件和索引文件全部读取到内存中,并根据在磁盘中的存储方式在内存中连续存储,以在加载场景时,根据位置坐标确定索引下标,根据索引下标找到位置坐标的起始体素,如图3所示,以位置坐标为(0,1)进行说明,确定位置坐标(0,1)的索引下标为2,为索引文件中的第二位,指向体素文件中的体素C,因此确定位置坐标(0,1)处的起始体素为C。
目前,体素占用的内存较大,比如4km*4km的场景,0.2m的粒度,地面体素约为20K*20K*2Byte=800M,其中2Byte为地面上表面高度,但地面之上比如空中还会存在体素,因此体素文件的内存要大于800M,同时索引的内存为20K*20K*4Byte=1600M,体素文件和索引文件的总内存为2400M,而对于移动终端来说,其内存空间大小通常为4G,为游戏应用程序分配的内存大小通常为1G,游戏的总内存远大于分配的内存,因此无法将体素和索引全部的加载进内存,导致目标对象在移动终端侧无法进行场景更新,影响用户体验。
有鉴于此,针对上述问题,本申请提供了一种应用中的场景更新控制方法、装置及存储介质。
本申请提供的应用中的场景更新控制方法,主要利用分块技术,将场景划分成多个区域块,每个区域块中包含有多个位置坐标,每个位置坐标上有整数个体素,因此每个区域块对应存储有该区域块上所有体素的体素文件,并将体素文件按照区域块在场景中的更新顺序存储在磁盘中;采用流式加载的方式预先从磁盘中读取多个区域块对应的体素文件到内存中,可以顺利从磁盘中获取多个区域块对应的体素文件到内存中,在游戏进程中顺利进行场景更新,提升游戏进程的流畅度,提升用户体验。
在本申请中,在将体素文件预先从磁盘中读取到内存中时,还从磁盘中读取体素文件对应的索引文件到内存中,其中每个区域块中包含有多个位置坐标,一个索引文件包括一个区域块上的位置坐标对应的索引,有体素的位置坐标对应的索引是位置坐标上所有体素中的起始体素对应的索引,索引文件在磁盘中的存储顺序与体素文件在磁盘中的存储顺序相同。以便在确定待更新区域块上的位置坐标后,根据位置坐标确定索引下标,并在索引文件中,根据索引下标确定位置坐标的索引,并根据索引在体素文件中确定位置坐标上的起始体素。
在本申请中,在采用流式加载方式预先从磁盘中读取多个区域块对应的体素文件到内存时,监控内存压力指标,在确定内存压力指标低于设定的上限阈值,且发生缺页中断时,调用操作系统的mmap从磁盘中读取体素文件,并保存到内存的用户空间中,由于内存压力小,因此一次可以读取大量的体素文件到内存中,以减少磁盘读取次数,提高输入/输出(I/O)性能,且直接读取到用户空间中,提高游戏应用程序的读取效率;在确定内存压力指标高于或等于设定的上限阈值,且从缓存中未命中时,游戏应用程序从磁盘中读取体素文件,并保存在内存的缓存空间中,提高游戏应用程序的读取速度,同时减少内存压力,保证程序运行的流畅度。
因此本申请提供了一种在场景更新过程中,从磁盘中预先读取多个区域块对应的体素文件,并保存到内存中,以使场景在更新时,游戏应用程序在内存中获取各个位置坐标上体素的方案,且在从内存中获取各个位置坐标上体素时,若确定内存中未存储有要获取的体素,则根据内存压力指标,确定读取方式从磁盘中读取各个区域块对应的体素文件,均衡内存压力和读取效率,提升游戏进程的流畅度,提升用户体验。
在介绍完本申请的设计思想之后,下面对本申请设置的应用场景进行简要说明。
如图4所示,为本申请提供的一种体素文件获取的应用场景图。安装游戏应用程序的移动设备40的组件包括但不限于:中央处理器(CPU)400、存储器401、显示控制器402、外部设备控制器403、连接不同系统组件(包括存储器401和处理器400)的消息总线404以及输入/输出(I/O)设备405、网络适配器406等;其中:
中央处理器(CPU)400是运算和控制核心,是信息处理、程序运行的最终执行单元。
存储器401包括内存储器4010、辅助存储器4011以及高速缓冲存储器4012;
其中,内存储器4010中存储有进行游戏时所需数据,断电后会丢失;辅助存储器4011可以为磁盘,用于存储游戏应用程序全部数据,断电后不会丢失;
存储器401还可以包括具有一组(至少一个)程序模块4013的程序/实用工具4014,这样的程序模块4013包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
显示控制器402用于控制连接的显示器4020,显示器4020用于显示照片、视频、游戏界面等。
外部设备控制器403用于控制连接的外部设备4030,其中外部设备4030包括键盘、指向设备等,移动设备通过外部设备控制器403与一个或多个外部设备4030通信。
消息总线404表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。主要用于连接中央处理器(CPU)400、存储器401以及输入/输出(I/O)设备405等。
输入/输出(I/O)设备405用于通过其与其他移动设备通信。
网络适配器406通过总线404与用于移动设备40的其它模块通信。应当理解,尽管图4中未示出,可以结合移动设备40使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
在本申请中,为游戏应用程序在内存储器4010的内存中配置存储空间,用于存储游戏进程中所需的游戏数据,配置的存储空间可以为用户空间,还可以为内存的缓存空间,内存的缓存空间是消耗一部分内存作为缓存,提升速度。操作系统根据游戏应用程序的请求信息,通消息总线404在辅助存储器4011读取请求信息对应的体素文件,并预先读取与请求信息连续存储的多个体素文件,并将读取到的体素文件写入存储空间中。在游戏应用程序加载场景时,读取存储空间中的体素文件,确定各个位置坐标的体素,将各个位置坐标的体素根据位置坐标连接,生成场景显示在显示器4020中。
基于图4论述的应用场景,下面对本申请提供的应用中的场景更新控制方法进行介绍。
在游戏进程中,目标对象在场景中移动,目标对象每移动一次显示器中显示的场景就变换一次。场景是由多个位置坐标上的体素按照位置坐标的顺序连接生成,因此要确定场景,就要获取场景中各个位置坐标的体素。游戏应用程序根据目标对象的位置坐标从内存中存储的体素文件内获取体素。内存中存储的体素文件是预先从存储体素文件的磁盘中读取的,磁盘中存储的体素文件是将场景划分为多个包含有多个位置坐标的区域块后,每个区域块对应的体素文件。
其中,目标对象为游戏玩家在游戏场景中的游戏角色,游戏玩家控制游戏角色在游戏场景中的位置坐标及游戏行为。
如图5所示,为本申请提供的一种应用中的场景更新控制方法流程图,包括如下步骤:
步骤500,在场景更新过程中,从磁盘读取场景的各个体素文件并保存到内存中,其中,场景被划分为多个区域块,每个区域块上的体素组成一个体素文件,各个体素文件在磁盘中的存储顺序是根据多个区域块在场景中的更新顺序确定的。
在本申请中,磁盘中存储有场景被划分后的全部区域块对应的体素文件和索引文件;
其中,体素文件是场景体素化后,区域块上的全部体素组成的,每个区域块对应一个体素文件;
索引文件是根据每个区域块中的位置坐标确定的,每个区域块中包含有多行多列矩阵式排布的位置坐标,因此每个区域块中包含有多个位置坐标,每个位置坐标对应一个索引,一个索引文件包括一个区域块上所有位置坐标对应的索引,有体素的位置坐标的索引是位置坐标上所有体素中起始体素对应的索引;
且索引文件与体素文件对应存储,存储顺序与体素文件在磁盘中的存储顺序相同,都是根据多个区域块在场景中的更新顺序确定的。以便根据场景的更新顺序,预先从磁盘中读取多个区域块的体素文件和索引文件到内存中;进一步在场景更新时,根据游戏角色在场景中的位置坐标,在内存中的索引文件中查询位置坐标的索引,根据索引在体素文件中查询位置坐标的起始体素,根据体素记载游戏场景,从内存中查询体素,保证游戏进程的流畅度。
如图6所示,为本申请提供的一种场景划分的示意图。在3D游戏应用程序的场景中,以xoy面为场景地面将场景划分成多个区域块,每个区域块的边长为2的指数,每个区域块中包含有多行多列矩阵式排布的位置坐标。
从图6中可知,将游戏场划分成4个2*2的区域块,每个区域块中有2行2列矩阵式排布的4个位置坐标,每个位置坐标对应一个格子,每个格子的大小与3D场景体素化后,体素的上表面或下表面的大小一致。
磁盘中存储有游戏场景划分后的所有区域块的体素文件和索引文件,且体素文件和索引文件的存储顺序是根据区域块在场景中的更新顺序确定的。比如,在场景更新过程中,根据目标对象当前的位置坐标,确定对与目标对象当前位置坐标所在区域块沿行方向相邻的两个区域块对应的场景进行更新。此时可以确定区域块在场景中的更新顺序是沿行方向进行的。因此在磁盘中存储区域块的体素文件和索引文件是沿行存储的。
首先存储第一行的第一个区域块的体素文件和索引文件,再存储第一行的第二个区域块的体素文件和索引文件,直至第一行区域块全部存储完毕后;开始存储第二行的第一个区域块的体素文件和索引文件,以此类推。
并在存储每个区域块的体素文件中的体素和索引文件中的索引时,逐行存储每个区域块中的位置坐标对应的索引,并根据存储位置坐标的顺序存储体素。比如存储区域块1时,沿x存储,先存储(0,0)、(0,1),再存储(1,0)、(1,1)。如图7所示,为本申请磁盘中存储区域块的体素文件和索引文件的示意图。
结合图6可知,区域块1中包含位置坐标为(0,0)、(0,1)、(1,0)、(1,1);区域2包含位置坐标为(0,2)、(0,3)、(1,2)、(1,3);因此在先存储区域块1再存储区域块2时位置坐标的存储顺序为(0,0)、(0,1)、(1,0)、(1,1)、(0,2)、(0,3)、(1,2)、(1,3),并对应存储各个位置坐标对应的索引,如图7所示。
结合图2可知,(0,0)处对应体素A和体素B,(0,1)处对应的体素C,(1,0)处没有体素,(1,1)处对应的体素E和体素F,因此体素文件1包含A、B、C、E、F共5个体素,并按照位置坐标的存储顺序存储体素;(0,2)处对应有体素D,(0,3)处没有体素,(1,2)处没有体素,(1,3)处对应有体素G,因此体素文件2包含D和G共2个体素,并按照位置坐标的存储顺序存储各个位置坐标上的体素,如图7所示。
其中,区域块1中的位置坐标(0,0)的索引下标为0,根据索引下标在索引文件中确定索引,并确定索引指向体素文件中(0,0)位置坐标上起始体素A;位置坐标(0,1)的索引下标为1,根据索引下标1在索引文件中确定索引,并确定索引指向体素文件中(0,1)位置坐标上起始体素C;在本申请中,每个位置坐标对应有索引,且有体素的位置坐标的索引指向位置坐标上所有体素中起始体素,体素文件及索引文件的对应关系在划分体素化场景时就已确定。
需要说明的是,本申请中区域块在场景中的更新顺序是编写应用程序时设定的,可以沿行存储,也可以沿列存储,上述仅是举例说明。
在游戏应用程序启动时,操作系统根据整个内存的使用情况,处理游戏应用程序提出的申请,为游戏应用程序分配内存,并预先从磁盘中读取部分区域块的体素文件和对应的索引文件到内存中。
如图8所示,预先读取区域块1的体素文件和区域块1的索引文件到内存中,且体素文件和索引文件在内存中的存储方式同磁盘中一致。当目标对象移动到区域块1中的任一位置坐标时,预先读取区域块2的体素文件和区域块2的索引文件到内存中;或根据目标对象当前位置坐标预先读取的与目标对象当前位置坐标所在区域块相连的多个区域块的体素文件和对应的索引文件。以便在游戏应用程序进行时,直接在内存中获取体素,更新游戏场景,相比较从磁盘中读取体素文件到内存中,再从内存中获取体素的速度要快很多,提升游戏进程的流畅度。
上述预先读取区域块的体素文件和对应的索引文件到磁盘中仅是举例说明,且每次预先读取的区域块对应的体素文件和对应的索引文件的数量可以不同,比如可以仅读取目标对象当前位置坐标所在区域块的体素文件和索引文件,或读取以当前位置坐标所在区域块为中心的多个区域块的体素文件和索引文件。
步骤501,根据场景中待更新的区域块,确定待更新的区域块对应的目标体素文件。
根据目标对象在场景中的当前位置坐标确定待更新的区域块时,将目标对象在场景中的当前位置坐标所在的区域块作为中心,将当前位置坐标所在的区域块为中心的周边设定个数的区域块作为待更新的区域块。
其中,周边设定个数的区域块包括,当前位置坐标所在区域块的前N个区域块,以及当前位置坐标所在区域块的后M个区域块,其中M和N为整数。当M=0且N=0时,将当前位置坐标所在的区域块作为待更新的区域块。
其中,前N个区域块为磁盘中存储的多个区域块中与当前位置坐标所在区域块之前的区域块,且与当前位置坐标所在区域块相连的N个区域块;以N=1,当前位置坐标为(0,2)进行举例,如6所示,当前位置坐标(0,2)在区域块2,因此前1个区域块为区域块1;
同理,后M个区域块为磁盘中存储的多个区域块中与当前位置坐标所在区域块之后的区域块,且与当前位置坐标所在区域块相连的M个区域块;以M=1,当前位置坐标为(0,2)进行举例,如6所示,当前位置坐标(0,2)在区域块2,因此后1个区域块为区域块3。
在根据待更新的区域块确定目标体素文件时,将待更新的区域块的体素文件作为目标体素文件,因在从内存中确定目标体素文件时,首先确定前N个区域块中第一区域块中的起始位置坐标,及后M个区域块中最后一个区域块中的终止位置坐标,并根据起始位置坐标确定第一索引下标及起始位置坐标上的体素个数,根据终止位置坐标确定第二索引下标及终止位置坐标上的体素个数。
根据体素个数可以确定位置坐标上是否有体素,当体素个数为0时,确定位置坐标上没有体素。
若起始位置坐标和终止位置坐标上都有体素,则根据第一索引下标在磁盘中存储的索引文件中确定第一索引,并根据第一索引在磁盘中存储的体素文件中确定目标体素文件的第一个体素;根据第二索引下标在磁盘中存储的索引文件中确定第二索引,并根据第二索引及终止位置坐标上的体素个数在磁盘中存储的体素文件确定目标体素文件的最后一个体素,然后读取确定的第一个体素到最后一个体素的全部体素作为目标体素文件。
以图7进行举例说明,当前位置坐标为(1,2),M=0且N=0时,区域块1作为待更新的区域块,确定区域块2的起始位置坐标为(0,2)对应的索引下标为4,根据索引下标4在索引文件中确定索引,指向(0,2)上的起始体素为体素D;区域块2的终止位置坐标为(1,3)索引下标为7,确定索引下标7在索引文件中的索引,索引指向(1,3)上起始体素为体素G,(1,3)的体素个数为1,则确定最后一个体素为G。因此在体素文件中读取体素D到体素G的所有体素作为目标体素文件。
若起始位置坐标上没有体素,则在起始位置坐标处向后确定一个坐标;和/或若在终止位置坐标上没有体素,则在终止位置坐标处先前确定一个坐标,直至确定到首个有体素的位置坐标。
将目标对象在场景中的当前位置坐标所在区域块作为待更新的区域块时,确定区域块的起始位置坐标,和终止位置坐标,并根据起始位置坐标确定第一索引下标及起始位置坐标上的体素个数,根据终止位置坐标确定第二索引下标及终止位置坐标上的体素个数;若起始位置坐标上的体素个数为0则确定与起始位置坐标相邻的下一个坐标位置坐标对应的体素个数,和/或若终止位置坐标上的体素个数为0,则确定与终止位置坐标相邻的前一个坐标位置坐标对应的体素个数,直至确定到存在体素个数的位置坐标坐。
在本申请中,根据场景区域块的存储顺序,以及每个区域块中位置坐标的存储顺序,确定各个位置坐标在磁盘中的存储序号,根据存储序号确定各个位置坐标的索引下标。
即在确定位置坐标的索引下标时,确定位置坐标之前的总格子数,以图9为例,对本申请根据位置坐标确定索引下标进行举例说明。
假设,当前位置坐标为(x,y),(x,y)之前的总格子数为区域1、区域2、区域3、区域4的总格子数。区域1中包含有(y/2^k)*(row/2^k)个场景划分的区域块,每个区域块中又包含有2^k*2^k个格子,因此区域1的总格子数为(y/2^k)*(row/2^k)*2^k*2^k;区域2中包含有x/2^k个场景划分的区域块,每个区域块中又包含有2^k*2^k个格子,因此区域2中包含的总格子数为x/2^k*2^k*2^k;区域3共有x%(2^k)行,每行2^k个格子,因此区域3的总格子数为x%(2^k)*2^k;区域4只有一行,有y%(2^k)列,因此区域4的总格子数为y%(2^k);
总格子数=(y/2^k)*(row/2^k)*2^k*2^k+x/2^k*2^k*2^k+x%(2^k)*2^k+y%(2^k);进行位运算转换,转换后为:
总格子数=((y>>k)*(row>>k)+(x>>k))<<k<<k+(x&(2^k-1))<<k+y&(2^k-1)。
其中,k=log2(区域块边长),比如每个区域块的大小为32*32,则k=5;row为行数,行数必须为2^k的倍数,若不满足则自行补齐,比如row=51,不满足2^k的倍数,此时将自动补齐到row=64;若存在col,col为列数,列数也必须为2^k的倍数,若不满足则自行补齐,同row行数。
以此类推可以确定出每个位置坐标的索引下标。
以(x,y)为(1,3),k=1,row=2,将x=1,y=3代入((y>>k)*(row>>k)+(x>>k))<<k<<k+(x&(2^k-1))<<k+y&(2^k-1)中,可以确定索引下标为7,可以根据索引下标确定位置坐标(1,3)的起始体素,如图7所示,确定位置坐标(1,3)的起始体素为G。
在本申请中,根据公式index[x*col+y+1]-index[x*col+y]计算位置坐标(x,y)处的体素个数,col为列数,根据划分的区域块的大小确定。
因此在确定目标对象的位置坐标后,根据位置坐标可以确定待更新的区域块,并确定待更新的区域块对应的目标体素文件,在确定了需要获取的体素文件后,在内存中获取目标体素文件,并确定各个位置坐标上的体素。
步骤502,从内存中获取目标体素文件中的各个体素,并根据获取的体素对场景进行更新。
由于内存中存储的体素文件是预先从磁盘中读取的,但读取到内存中的体素文件可能不是游戏应用程序需要获取的目标体素文件,因此在从内存中获取目标体素文件时,首先判断内存中存储的各个体素文件中是否包含有目标体素文件。若内存中存储有目标体素文件,则直接读取目标体素文件中的体素,根据获取的体素对场景进行更新;若内存中未存储有目标体素文件,则从磁盘中读取目标体素文件到内存中,进一步从内存中获取目标体素文件中的体素,并根据获取的体素对场景进行更新。
一、内存中存储有目标体素文件。
内存中存储有目标体素文件可以为内存的用户空间中存储有目标体素文件,或内存的缓存空间中存储有体素文件。
在从内存中获取目标体素文件时,会根据各个体素文件在内存中的存储位置进行获取,若内存的缓存空间和内存的用户空间中都存储有体素文件,则先确定内存的缓存空间是否存储有体素文件,若有则从内存的缓存空间中直接获取目标体素文件,缓存空间的获取速率更快,否则在内存的用户空间中获取目标体素文件。
在获取目标体素文件的同时,确定各个位置坐标上的体素,并将各个位置坐标上的体素根据各个位置坐标在场景中的位置坐标进行拼接,并对场景进行更新。
在本申请中,根据目标体素文件对应的区域块上的每个位置坐标,确定位置坐标对应的索引下标和体素个数,并在内存中存储的与目标体素文件对应的索引文件中,根据确定的索引下标确定位置坐标上有体素的索引,进一步根据索引在目标体素文件中确定位置坐标的起始体素,最后根据位置坐标上的起始体素和体素个数确定位置坐标上的体素,在确定出目标体素文件对应的区域块中所有位置坐标上的体素后,根据位置坐标上的体素对场景进行更新。
在此过程中,确定索引下标和体素个数的方式可以参见上述实施例,在此不再赘述。
需要说明的是,当内存中存储有目标体素文件时,游戏应用程序可以直接在内存中获取目标体素文件中的体素;比如,在内存的用户空间中存储有目标体素文件时,游戏应用程序直接在内存的用户空间中获取目标体素文件,无需先查询内存的缓存空间中是否存储有目标体素文件。
二、内存中未存储有目标体素文件。
在内存的缓存空间中未存储有体素文件,且内存的用户空间中未存储有体素文件时,确定在内存中未存储有目标体素文件。
在从内存中获取目标体素文件中的各个体素时,先在内存的缓存空间中获取目标体素文件中的各个体素,在确定缓存空间中未存储有目标体素文件中的各个体素时,确定从缓存中未命中目标体素文件中的各个体素;如图10所示,为在缓存空间中未命中目标体素文件中的各个体素的示意图,假设目标体素文件为区域块2对应的体素文件,缓存空间中仅存储区域块1的体素文件,未存储区域块2的体素文件,此时发生缓存未命中。
在确定缓存空间中未存储有目标体素文件后,从内存的用户空间中获取目标体素文件,在确定目标对象中未存储有目标体素文件中的各个体素时,产生缺页中断;如图11所示,为产生缺页中断的示意图。
在确定内存中未存储有目标体素文件时,监控内存压力指标,根据内存压力指标采用不同的读取方式从磁盘中读取目标体素文件,如下:
情况一:内存压力指标低于设定的上限阈值。
当内存压力指标低于设定的上限阈值,且发生缺页中断时,从磁盘读取体素文件和体素文件对应的索引文件,并保存到内存的用户空间中。
在从内存中读取目标体素文件时,确定目标体素文件不在物理内存中,引发缺页中断,同时确定内存压力指标低于设定的上限阈值,为了保证游戏进程的流畅度,此时调用操作系统的mmap自动从磁盘中读取几页体素文件和对应的索引文件到内存的用户空间中。读取的几页体素文件与操作系统中每页大小相关,且读取的几页体素文件和对应的索引文件是以游戏玩家在游戏场景中的当前位置坐标所在区域块为中心的连续多个区域块对应的体素文件和索引文件。
假设,操作系统每页大小64K,每个区域块大小为128行*128列,此时每个区域块64K,此时仅能从磁盘中读取目标对象当前位置坐标所在区域块的体素文件;确定目标对象当前位置坐标所在区域块对应的起始位置坐标和终止位置坐标,并根据起始位置坐标确定对应的第一索引下标,根据终止位置坐标确定对应的第二索引下标,同时根据终止位置坐标计算终止位置坐标的体素个数;根据第一索引下标确定起始体素,根据第二索引下标和体素个数确定终止体素,读取起始体素到终止体素形成体素文件。
比如,目标对象当前位置坐标所在区域块为区域块1,区域块1的起始位置坐标为(0,0),终止位置坐标为(1,1);(0,0)的索引下标为0,则确定为索引文件中的第一位,指向体素A;(1,1)的索引下标为4,则确定为索引文件中的第四位,指向体素E,并计算(1,1)处的体素个数为2,则读取到体素F,因此读取体素A到体素F形成体素文件。
假设,操作系统每页大小32K,每个区域块大小为32行*32列,每个区域块为4KB,此时操作系统可以从磁盘中读取多个区域块的体素文件。若确定读取以目标对象当前位置坐标所在区域块为中心的连续3个区域块的体素文件,则确定目标对象当前位置坐标所在区域块,进一步确定目标对象当前位置坐标所在区域块前一个区域块的起始位置坐标,和目标对象当前位置坐标所在区域块后一个区域块的终止位置坐标,并根据起始位置坐标确定对应的第一索引下标,根据终止位置坐标确定对应的第二索引下标,同时根据终止位置坐标计算终止位置坐标的体素个数;根据第一索引下标确定起始体素,根据第二索引下标和体素个数确定终止体素,读取起始体素到终止体素形成体素文件。
本申请中,采用mmap方式读取区域块的体素文件相比较按照相关技术中逐行存储体素文件,可以减少缺页中断的次数,进一步避免因缺页中断造成的游戏进程卡顿,大量的输入输出导致性能损失。
因为,现有相关技术中体素存储是逐行存储的,如图3所示,因此当目标对象从(0,0)走到(0,1)的位置坐标时,由于预取了4KB的游戏数据,所以(0,1)出对应的体素存储在内存中,直接从内存中读取即可;但是当目标对象从(0,0)出走到(1,0)处时,因为仅预取4KB的游戏数据,而一行体素的大小为20*20Byte,因此(1,0)处对应的体素不在内存中,造成缺页中断。若目标对象是始终沿X方向移动,则每移动一步都会发生一次缺页中断。若目标对象沿X方向走4万个格子,则引发4万次缺页中断,将增加大量内存,耗时也较长。若将体素全部存储在内存中,则要进行4万次访问,I/O会导致性能损失。
而本申请中,采用区域块的方式存储体素,在读取体素文件时,读取区域块对应的体素文件。结合图2、图6、图7进行说明,假设每个区域块中的每个位置坐标的体素占4K,目标对象在(0,0)处时,会将(0,0)对应的区域块1的体素全部从磁盘预取到内存中,即(0,0)、(0,1)、(1,0)、(1,1)处的体素全部存储在内存中,此时目标对象从(0,0)走到(1,0)处可以直接从内存中读取,并不会发生缺页中断,若沿方向走4万个格子,大约发生1300次缺页中断,相较于现有相关技术中,大量减少缺页中断的次数,进一步减少内存和耗时,同时提高I/O的性能。
在采用mmap的方式从磁盘中读取体素文件和对应的索引文件到内存的用户空间后,若无需当前的数据则要操作系统释放数据,增加操作系统工作压力。在本申请中,为了减轻操作系统的压力,确定每次切换游戏场景时,主动调用munmap,解除内存映射。
情况二:当内存压力指标等于或高于设定的上限阈值。
当内存压力指标等于或高于设定的上限阈值,且从缓存中未命中所述目标体素文件中的各个体素时,从磁盘中读取体素文件和体素文件对应的索引文件,并保存在内存的缓存空间中。
当内存压力指标等于或高于设定的上限阈值,且内存的缓存空间中未存储有目标体素文件时,则从磁盘中读取以当前位置坐标所在区域块为中心的连续3个区域块的体素文件和索引文件。
此时若仍采用mmap的方式从磁盘中读取体素文件和对应的索引文件,则会导致频繁换页,将影响移动设备的各项性能,因此采用缓存的方式从磁盘中读取少量的体素文件和对应的索引文件,并在内存的缓存空间中连续存放。
以当前位置坐标为(x,y),场景划分区域块大小为2^k*2^k,取以当前位置坐标对应的场景划分区域块为中心,沿x方向连续3个区域块的体素文件为例。
采用位运算的方式,计算出当前位置坐标对应的场景划分区域块的前一个区域块的左上顶点坐标:left(x1,y1)=((x>>k)<<k-2^k,(y>>k)<<k),及后一个区域块右下顶点坐标:right(x2,y2)=((x>>k)<<k+2^k+2^k,(y>>k)<<k+2^k)。
根据计算出的位置坐标,计算出left(x1,y1)的索引下标及right(x2,y2)的索引下标,并根据计算的left(x1,y1)的索引下标及right(x2,y2)的索引下标在体素文件中读取left(x1,y1)的索引下标到right(x2,y2)的索引下标对应的体素根据index[x*col+y+1]-index[x*col+y]计算出的体素个数的体素。
其中,计算left(x1,y1)索引下标及right(x2,y2)索引下标,即确定left(x1,y1)位置坐标之前的格子数,及right(x2,y2)位置坐标之前的格子数,即索引下标是根据存储位置坐标的顺序确定的;第一个位置坐标的索引下标为0对应存储的索引中的第一个,第二个位置坐标的索引下标为1对应存储的索引中的第二个,以此类推。
在从磁盘中读取到以当前位置坐标所在区域块为中心的连续三个区域块的体素文件和对应的索引文件后,将读取到的体素文件和对应的索引文件作为一组数据存储到内存的缓存空间中。在将读取到的体素文件和对应的索引文件存储在内存的缓存空间时:在内存的缓存空间中采用最近最久未使用算法,确定出缓存空间内最近最久未使用的一组数据,即目前内存的缓存空间中存储的连续三个区域块的体素文件和对应的索引文件,并使用读取到的体素文件和对应的索引文件覆盖缓存空间内最近最久未使用的一组数据。
在本申请中,当将读取的各个体素文件和体素文件对应的索引文件依次写入内存中,根据目标对象当前位置坐标确定待更新的区域块,确定待更新的区域块中的各个位置坐标,并根据位置坐标确定各个位置坐标的索引下标,在索引文件中确定的坐标计算索引下标及当前位置坐标上的体素个数,根据索引下标确定位置坐标对应有体素的索引,并根据索引在体素文件中确定位置坐标上的起始体素,最终根据起始体素和体素个数确定当前位置坐标对应的体素,根据体素描绘当前位置坐标的场景,具体方式参见从磁盘中读取体素文件的方式。
如图12所示,为本申请提供的一种应用中的场景更新控制方法整体流程图,包括如下步骤:
步骤1200,确定目标对象当前位置坐标。
步骤1201,根据目标对象当前位置坐标确定场景中待更新的区域块。
步骤1202,确定待更新的区域块对应的目标体素文件。
步骤1203,判断内存中是否有目标体素文件,若有则执行步骤1204,否则执行步骤1205。
步骤1204,从内存中获取目标体素文件中的各个体素,根据获取的各个体素对场景进行更新。
步骤1205,监控内存压力指标,判断内存压力指标是否低于设定的上限阈值,若低于则执行步骤1206,否则执行步骤1207。
步骤1206,从磁盘读取体素文件及体素文件对应的索引文件,并保存到内存的用户空间中。
步骤1207,从磁盘中读取体素文件集体素文件对应的索引文件,并保存在内存的缓存空间中。
基于同一发明构思,本申请还提供了应用中的场景更新控制装置1300,如图13所示,该装置1300包括:读取单元1301、确定单元1302及更新单元1303,其中:
读取单元1301,用于在场景更新过程中,从磁盘读取场景的各个体素文件并保存到内存中,其中,所述场景被划分为多个区域块,每个区域块上的体素组成一个体素文件,各个体素文件在磁盘中的存储顺序是根据所述多个区域块在场景中的更新顺序确定的;
确定单元1302,用于根据场景中待更新的区域块,确定待更新的区域块对应的目标体素文件;
更新单元1303,用于从内存中获取所述目标体素文件中的各个体素,并根据获取的体素对场景进行更新。
在一种可能的实现方式中,读取单元1301,具体用于:
从磁盘中读取各个体素文件以及所述体素文件对应的索引文件,并将读取到的所述体素文件和索引文件保存到内存中,其中每个区域块中包含有多个位置坐标,一个索引文件包括一个区域块上的位置坐标对应的索引,有体素的位置坐标对应的索引是位置坐标上所有体素中的起始体素对应的索引,所述索引文件在磁盘中的存储顺序与所述体素文件在磁盘中的存储顺序相同。
在一种可能的实现方式中,确定单元1302,具体用于:
根据所述场景中目标对象的当前位置坐标,确定以所述当前位置坐标所在的区域块为中心的周边设定个数的区域块为待更新的区域块;
将所述设定个数的区域块对应的各个体素文件作为目标体素文件。
在一种可能的实现方式中,所述周边设定个数的区域块包括:所述当前位置坐标所在区域块的前N个区域块,以及所述当前位置坐标所在区域块的后M个区域块,其中M和N为整数。
在一种可能的实现方式中,更新单元1303,具体用于:
针对所述目标体素文件对应的区域块上的每个位置坐标,确定所述位置坐标对应的索引下标,及所述位置坐标的体素个数;
在所述目标体素文件对应的索引文件中,根据所述索引下标确定位置坐标对应有体素的索引,并根据所述索引在所述目标体素文件中确定所述位置坐标上的起始体素;
根据所述起始体素和所述体素个数,从内存中获取各个位置坐标上的体素,并根据获取的体素对场景进行更新。
在一种可能的实现方式中,读取单元1301,具体用于:
当内存压力指标低于设定的上限阈值,且发生缺页中断时,从磁盘读取体素文件和所述体素文件对应的索引文件,并保存到内存的用户空间中;或
当内存压力指标等于或高于设定的上限阈值,且从缓存中未命中所述目标体素文件中的各个体素时,从磁盘中读取体素文件和所述体素文件对应的索引文件,并保存在内存的缓存空间中。
在一种可能的实现方式中,读取单元1301,具体用于:
当内存压力指标低于设定的上限阈值,且发生缺页中断时,调用操作系统的mmap,并根据操作系统中每页大小,从磁盘中读取以所述当前位置坐标所在区域块为中心且与所述当前位置坐标所在区域块相邻的整数个区域块对应的体素文件和所述体素文件对应的索引文件,并保存到内存的用户空间中;或
当内存压力指标等于或高于设定的上限阈值,且从缓存中未命中所述目标体素文件中的各个体素时,从磁盘中读取以所述当前位置坐标所在的区域块为中心的连续三个区域块的体素文件和所述体素文件对应的索引文件,并保存在内存的缓存空间中。
为了描述的方便,以上各部分按照功能划分为各单元(或模块)分别描述。当然,在实施本申请时可以把各单元(或模块)的功能在同一个或多个软件或硬件中实现。
在一些可能的实施方式中,本申请提供一种应用中的场景更新控制的移动设备1400可以至少包括:射频(Radio Frequency,RF)电路1401、电源1402、处理器1403、存储器1404、用户输入单元1405、显示单元1406、音频输出单元1407、输入单元1408、网络模块1409、接口单元1410、摄像头1411等部件。本领域技术人员可以理解,图14中示出的移动设备的结构并不构成对移动设备的限定,本申请实施例提供的移动设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图14对应用中的场景更新控制的移动设备1400的各个构成部件进行具体的介绍:
RF电路1401可用于通信或通话过程中,数据的接收和发送。特别地,RF电路1401在接收到基站的下行数据后,发送给处理器1403处理;另外,将待发送的上行数据发送给基站。通常,RF电路1401包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low Noise Amplifier,LNA)、双工器等。
此外,RF电路1401还可以通过无线通信与网络和其他终端设备通信。无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(Global System of Mobilecommunication,GSM)、通用分组无线服务(General Packet Radio Service,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址(Wideband Code DivisionMultiple Access,WCDMA)、长期演进(Long Term Evolution,LTE)、电子邮件、短消息服务(Short Messaging Service,SMS)等。
网络模块1409,网络属于无线传输技术,应用中的场景更新控制的移动设备1400通过网络模块1409可以连接的接入点(Access Point,AP),从而实现数据网络的访问。网络模块1409可用于通信过程中,数据的接收和发送。
应用中的场景更新控制的移动设备1400可以通过接口单元1410与其他设备实现物理连接。可选的,接口单元1410与其他终端设备的接口通过电缆连接,实现应用中的场景更新控制的移动设备1400和其他设备之间的数据传输。
由于在本申请实施例中,应用中的场景更新控制的移动设备1400能够实现通信业务,向其他联系人发送信息,因此应用中的场景更新控制的移动设备1400需要具有数据传输功能,即应用中的场景更新控制的移动设备1400内部需要包含通信模块。虽然图14示出了RF电路1401、网络模块1409、和接口单元1410等通信模块,但是可以理解的是,应用中的场景更新控制的移动设备1400中存在上述部件中的至少一个或者其他用于实现通信的通信模块(如蓝牙模块),以进行数据传输。
例如,当应用中的场景更新控制的移动设备1400为手机时,应用中的场景更新控制的移动设备1400可以包含RF电路1401,还可以包含网络模块1409;当应用中的场景更新控制的移动设备1400为计算机时,应用中的场景更新控制的移动设备1400可以包含接口单元1410,还可以包含网络模块1409;当应用中的场景更新控制的移动设备1400为平板电脑时,应用中的场景更新控制的移动设备1400可以包含网络模块1409。
存储器1404可用于存储软件程序以及模块。处理器1403通过运行存储在存储器1404的软件程序以及模块,从而执行应用中的场景更新控制的移动设备1400的各种功能应用以及数据处理,并且当处理器1403执行存储器1404中的程序代码后,可以实现本申请实施应用中的场景更新控制的部分或全部过程。
可选的,存储器1404可以主要包括存储程序区和存储数据区。其中,存储程序区可存储操作系统、各种应用程序(比如通信应用)以及人脸识别模块等;存储数据区可存储根据终端设备的使用所创建的数据(比如各种图片、视频文件等多媒体文件,以及人脸信息模板)等。
此外,存储器1404可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
用户输入单元1405可用于接收用户输入的数字或字符信息,以及产生与应用中的场景更新控制的移动设备1400的用户设置以及功能控制有关的键信号输入。
可选的,用户输入单元1405可包括触控面板14051以及其他输入设备14052。
其中,触控面板14051,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板14051上或在触控面板14051附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板14051可以包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1403,并能接收处理器1403发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板14051。
可选的,其他输入设备14052可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元1406可用于显示由用户输入的信息或提供给用户的信息以及应用中的场景更新控制的移动设备1400的各种菜单。显示单元1406即为应用中的场景更新控制的移动设备1400的显示系统,用于呈现界面,实现人机交互。
显示单元1406可以包括显示面板14061。可选的,显示面板14061可以采用液晶显示屏(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置。
进一步的,触控面板14051可覆盖显示面板14061,当触控面板14051检测到在其上或附近的触摸操作后,传送给处理器1403以确定触摸事件的类型,随后处理器1403根据触摸事件的类型在显示面板14061上提供相应的视觉输出。
虽然在图14中,触控面板14051与显示面板14061是作为两个独立的部件来实现应用中的场景更新控制的移动设备1400的输入和输入功能,但是在某些实施例中,可以将触控面板14051与显示面板14061集成而实现应用中的场景更新控制的移动设备1400的输入和输出功能。
处理器1403是应用中的场景更新控制的移动设备1400的控制中心,利用各种接口和线路连接各个部件,通过运行或执行存储在存储器1404内的软件程序和/或模块,以及调用存储在存储器1404内的数据,执行应用中的场景更新控制的移动设备1400的各种功能和处理数据,从而实现基于移动设备的多种业务,使得处理器执行本说明书中描述的根据本申请各种示例性实施方式的应用中的场景更新控制方法中的步骤。
可选的,处理器1403可包括一个或多个处理单元。可选的,处理器1403可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1403中。
音频输出单元1407与处理器1403连接,用于实现应用中的场景更新控制的移动设备1400的音频输出。
输入单元1408包括麦克风14081用户获取语音,将获取的语音发送给处理器1403进行处理,还包括图像处理器14082。
摄像头1411,用于实现应用中的场景更新控制的移动设备1400的拍摄功能,拍摄图片或视频。所述摄像头1411还可以用于实现应用中的场景更新控制的移动设备1400的扫描功能,对扫描对象(二维码/条形码)进行扫描。
应用中的场景更新控制的移动设备1400还包括用于给各个部件供电的电源1402(比如电池)。可选的,电源1402可以通过电源管理系统与处理器1403逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗等功能。
尽管未示出,应用中的场景更新控制的移动设备1400还可以包括至少一种传感器等,在此不再赘述。
在一些可能的实施方式中,本申请提供的应用中的场景更新控制方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算机设备上运行时,程序代码用于使计算机设备执行本说明书上述描述的根据本申请各种示例性实施方式的应用中的场景更新控制方法中的步骤。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本申请的实施方式的体素文件获取的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在计算装置上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被命令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由命令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Yava、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算装置上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算装置上部分在远程计算装置上执行、或者完全在远程计算装置或服务器上执行。在涉及远程计算装置的情形中,远程计算装置可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)连接到用户计算装置,或者,可以连接到外部计算装置(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序命令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序命令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的命令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序命令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的命令产生包括命令装置的制造品,该命令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序命令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的命令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (13)

1.一种应用中的场景更新控制方法,其特征在于,该方法包括:
在场景更新过程中,从磁盘读取场景的各个体素文件并保存到内存中,其中,所述场景被划分为多个区域块,每个区域块上的体素组成一个体素文件,所述各个体素文件在磁盘中的存储顺序是根据所述多个区域块在场景中的更新顺序确定的;
根据所述场景中待更新的区域块,确定所述待更新的区域块对应的目标体素文件;
从内存中获取所述目标体素文件中的各个体素,并根据获取的体素对所述场景进行更新;
其中,所述从内存中获取所述目标体素文件中的各个体素,并根据获取的体素对所述场景进行更新,包括:
针对所述目标体素文件对应的区域块上的每个位置坐标,确定所述位置坐标对应的索引下标,及所述位置坐标的体素个数;
在所述目标体素文件对应的索引文件中,根据所述索引下标确定位置坐标对应有体素的索引,并根据所述索引在所述目标体素文件中确定所述位置坐标上的起始体素;
根据所述起始体素和所述体素个数,从内存中获取各个位置坐标上的体素,并根据获取的体素对场景进行更新。
2.如权利要求1所述的方法,其特征在于,从磁盘读取场景的各个体素文件并保存到内存中,包括:
从磁盘中读取各个体素文件以及所述体素文件对应的索引文件,并将读取到的所述体素文件和所述索引文件保存到内存中,其中每个区域块中包含有多个位置坐标,一个索引文件包括一个区域块上的位置坐标对应的索引,有体素的位置坐标对应的索引是位置坐标上所有体素中的起始体素对应的索引,所述索引文件在磁盘中的存储顺序与所述体素文件在磁盘中的存储顺序相同。
3.如权利要求2所述的方法,其特征在于,所述根据所述场景中待更新的区域块,确定所述待更新的区域块对应的目标体素文件,具体包括:
根据所述场景中目标对象的当前位置坐标,确定以所述当前位置坐标所在的区域块为中心的周边设定个数的区域块为待更新的区域块;
将所述设定个数的区域块对应的各个体素文件作为目标体素文件。
4.如权利要求3所述的方法,其特征在于,所述周边设定个数的区域块包括:所述当前位置坐标所在区域块的前N个区域块,以及所述当前位置坐标所在区域块的后M个区域块,其中M和N为整数。
5.如权利要求1所述的方法,其特征在于,从磁盘读取场景的各个体素文件并保存到内存中,包括:
当内存压力指标低于设定的上限阈值,且发生缺页中断时,从磁盘读取体素文件和所述体素文件对应的索引文件,并保存到内存的用户空间中;或
当内存压力指标等于或高于设定的上限阈值,且从缓存中未命中所述目标体素文件中的各个体素时,从磁盘中读取体素文件和所述体素文件对应的索引文件,并保存在内存的缓存空间中。
6.如权利要求5所述的方法,其特征在于,所述从磁盘读取场景的各个体素文件并保存到内存中,具体包括:
当内存压力指标低于设定的上限阈值,且发生缺页中断时,调用操作系统的mmap,并根据操作系统中每页大小,从磁盘中读取以当前位置坐标所在区域块为中心且与所述当前位置坐标所在区域块相邻的整数个区域块对应的体素文件和所述体素文件对应的索引文件,并保存到内存的用户空间中;或
当内存压力指标等于或高于设定的上限阈值,且从缓存中未命中所述目标体素文件中的各个体素时,从磁盘中读取以所述当前位置坐标所在的区域块为中心的连续三个区域块的体素文件和所述体素文件对应的索引文件,并保存在内存的缓存空间中。
7.一种应用中的场景更新控制装置,其特征在于,该装置包括:
读取单元,用于在场景更新过程中,从磁盘读取场景的各个体素文件并保存到内存中,其中,所述场景被划分为多个区域块,每个区域块上的体素组成一个体素文件,所述各个体素文件在磁盘中的存储顺序是根据所述多个区域块在场景中的更新顺序确定的;
确定单元,用于根据所述场景中待更新的区域块,确定所述待更新的区域块对应的目标体素文件;
更新单元,用于从内存中获取所述目标体素文件中的各个体素,并根据获取的体素对所述场景进行更新;
其中,所述更新单元具体用于:
针对所述目标体素文件对应的区域块上的每个位置坐标,确定所述位置坐标对应的索引下标,及所述位置坐标的体素个数;
在所述目标体素文件对应的索引文件中,根据所述索引下标确定位置坐标对应有体素的索引,并根据所述索引在所述目标体素文件中确定所述位置坐标上的起始体素;
根据所述起始体素和所述体素个数,从内存中获取各个位置坐标上的体素,并根据获取的体素对场景进行更新。
8.如权利要求7所述的装置,其特征在于,所述读取单元,具体用于:
从磁盘中读取各个体素文件以及所述体素文件对应的索引文件,并将读取到的所述体素文件和所述索引文件保存到内存中,其中每个区域块中包含有多个位置坐标,一个索引文件包括一个区域块上的位置坐标对应的索引,有体素的位置坐标对应的索引是位置坐标上所有体素中的起始体素对应的索引,所述索引文件在磁盘中的存储顺序与所述体素文件在磁盘中的存储顺序相同。
9.如权利要求8所述的装置,其特征在于,所述确定单元,具体用于:
根据所述场景中目标对象的当前位置坐标,确定以所述当前位置坐标所在的区域块为中心的周边设定个数的区域块为待更新的区域块;
将所述设定个数的区域块对应的各个体素文件作为目标体素文件。
10.如权利要求9所述的装置,其特征在于,所述周边设定个数的区域块包括:所述当前位置坐标所在区域块的前N个区域块,以及所述当前位置坐标所在区域块的后M个区域块,其中M和N为整数。
11.如权利要求7所述的装置,其特征在于,所述读取单元,具体用于:
当内存压力指标低于设定的上限阈值,且发生缺页中断时,从磁盘读取体素文件和所述体素文件对应的索引文件,并保存到内存的用户空间中;或
当内存压力指标等于或高于设定的上限阈值,且从缓存中未命中所述目标体素文件中的各个体素时,从磁盘中读取体素文件和所述体素文件对应的索引文件,并保存在内存的缓存空间中。
12.如权利要求11所述的装置,其特征在于,所述读取单元,具体用于:
当内存压力指标低于设定的上限阈值,且发生缺页中断时,调用操作系统的mmap,并根据操作系统中每页大小,从磁盘中读取以当前位置坐标所在区域块为中心且与所述当前位置坐标所在区域块相邻的整数个区域块对应的体素文件和所述体素文件对应的索引文件,并保存到内存的用户空间中;或
当内存压力指标等于或高于设定的上限阈值,且从缓存中未命中所述目标体素文件中的各个体素时,从磁盘中读取以所述当前位置坐标所在的区域块为中心的连续三个区域块的体素文件和所述体素文件对应的索引文件,并保存在内存的缓存空间中。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令被处理器执行时实现如权利要求1-6任一项所述的应用中的场景更新控制方法。
CN201911236522.0A 2019-12-05 2019-12-05 一种应用中的场景更新控制方法、装置及存储介质 Active CN111068313B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201911236522.0A CN111068313B (zh) 2019-12-05 2019-12-05 一种应用中的场景更新控制方法、装置及存储介质
PCT/CN2020/120064 WO2021109709A1 (zh) 2019-12-05 2020-10-10 场景更新控制方法、装置、电子设备及存储介质
US17/501,633 US12033267B2 (en) 2019-12-05 2021-10-14 Scene update control method and apparatus, electronic device, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911236522.0A CN111068313B (zh) 2019-12-05 2019-12-05 一种应用中的场景更新控制方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN111068313A CN111068313A (zh) 2020-04-28
CN111068313B true CN111068313B (zh) 2021-02-19

Family

ID=70313219

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911236522.0A Active CN111068313B (zh) 2019-12-05 2019-12-05 一种应用中的场景更新控制方法、装置及存储介质

Country Status (2)

Country Link
CN (1) CN111068313B (zh)
WO (1) WO2021109709A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111068313B (zh) * 2019-12-05 2021-02-19 腾讯科技(深圳)有限公司 一种应用中的场景更新控制方法、装置及存储介质
CN111714895B (zh) * 2020-06-29 2021-07-23 天津亚克互动科技有限公司 游戏数据的处理方法及装置、存储介质、计算机设备
CN114937054A (zh) * 2022-06-02 2022-08-23 北京理工大学 一种场馆座次自动识别方法、装置、设备、存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110249367A (zh) * 2016-11-23 2019-09-17 3D 系统有限公司 用于实时渲染复杂数据的系统和方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10008034B2 (en) * 2013-05-03 2018-06-26 Nvidia Corporation System, method, and computer program product for computing indirect lighting in a cloud network
CN109701273B (zh) * 2019-01-16 2022-04-19 腾讯科技(北京)有限公司 游戏数据的处理方法、装置、电子设备及可读存储介质
CN110458813B (zh) * 2019-03-08 2021-03-02 腾讯科技(深圳)有限公司 图像区域定位方法、装置和医学图像处理设备
CN110221782A (zh) * 2019-06-06 2019-09-10 重庆紫光华山智安科技有限公司 视频文件处理方法及装置
CN110368694B (zh) * 2019-08-22 2023-05-16 网易(杭州)网络有限公司 游戏场景的数据处理方法、装置、设备及可读存储介质
CN111068313B (zh) * 2019-12-05 2021-02-19 腾讯科技(深圳)有限公司 一种应用中的场景更新控制方法、装置及存储介质

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110249367A (zh) * 2016-11-23 2019-09-17 3D 系统有限公司 用于实时渲染复杂数据的系统和方法

Also Published As

Publication number Publication date
CN111068313A (zh) 2020-04-28
WO2021109709A1 (zh) 2021-06-10
US20220032189A1 (en) 2022-02-03

Similar Documents

Publication Publication Date Title
CN111068313B (zh) 一种应用中的场景更新控制方法、装置及存储介质
US10332240B2 (en) Method, device and computer readable medium for creating motion blur effect
CN106547599B (zh) 一种资源动态加载的方法及终端
WO2021258994A1 (zh) 虚拟场景的显示方法、装置、设备及存储介质
CN106127673B (zh) 一种视频处理方法、装置及计算机设备
CN106919918B (zh) 一种人脸跟踪方法和装置
KR101640904B1 (ko) 온라인 게이밍 경험을 제공하기 위한 컴퓨터 기반 방법, 기계 판독가능 비일시적 매체 및 서버 시스템
CN109718545B (zh) 对象控制装置及方法
JP2020518293A (ja) 情報処理方法及び装置並びに仮想オブジェクト処理方法及び移動端末
US11260300B2 (en) Image processing method and apparatus
CN104134230A (zh) 一种图像处理方法、装置及计算机设备
CN112257135A (zh) 一种基于多线程的模型加载方法、装置、存储介质及终端
WO2020108457A1 (zh) 目标对象的控制方法、装置、设备及存储介质
US10474574B2 (en) Method and apparatus for system resource management
US20230356087A1 (en) Method for controlling virtual object to pick virtual props, terminal, and storage medium
US11954787B2 (en) Image rendering method in panoramic application and terminal device
CN109510940A (zh) 一种图像显示方法及终端设备
WO2023066003A1 (zh) 虚拟对象的控制方法、装置、终端、存储介质及程序产品
CN110460894A (zh) 一种视频图像显示方法及终端设备
CN113952720A (zh) 游戏场景渲染方法、装置、电子设备及存储介质
CN109891388A (zh) 一种图像处理方法及装置
CN112215932A (zh) 粒子动画处理方法、装置、存储介质及计算机设备
CN110750743B (zh) 一种动画播放方法、装置、设备及存储介质
CN113038273B (zh) 视频帧处理方法、装置、存储介质及电子设备
CN112206519B (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: 40023492

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant