CN110368694B - 游戏场景的数据处理方法、装置、设备及可读存储介质 - Google Patents
游戏场景的数据处理方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN110368694B CN110368694B CN201910779652.2A CN201910779652A CN110368694B CN 110368694 B CN110368694 B CN 110368694B CN 201910779652 A CN201910779652 A CN 201910779652A CN 110368694 B CN110368694 B CN 110368694B
- Authority
- CN
- China
- Prior art keywords
- models
- model
- target model
- redundant
- data
- 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
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
-
- 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/60—Generating 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
-
- 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
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/60—Methods for processing data by generating or executing the game program
- A63F2300/66—Methods for processing data by generating or executing the game program for rendering three dimensional images
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Image Generation (AREA)
Abstract
本发明提供一种游戏场景的数据处理方法、装置、设备及可读存储介质。本发明的方法,通过对游戏场景中待处理的多个模型进行贴图合并,使得各个模型的材质和贴图均一致,以便于进行模型的网格合并;通过计算所述多个模型的包围盒,并对所述多个模型进行体素化预处理,得到所述多个模型的体素数据;根据所述多个模型的体素数据,确定所述多个模型中的冗余面;将所述多个模型中的冗余面剔除,能够离线地、快速地对整个场景中多个模型中的冗余面进行识别和剔除,从而可以减少渲染过程中产生的DP和Overdraw,复杂度低,提高了运行时的渲染效率和性能。
Description
技术领域
本发明涉及计算机图形技术领域,尤其涉及一种游戏场景的数据处理方法、装置、设备及可读存储介质。
背景技术
在3D场景的渲染中,引擎提交顶点到图形处理器(Graphics Processing Unit,简称GPU)并设置渲染状态通知图形API进行绘制的过程可以称为一个绘制请求(DrawPrimitives,简称DP);一个像素点被绘制多次的现象在图形学中被称为Overdraw。DP和Overdraw过多会带来大量的性能开销。
游戏的3D场景往往都是由大量不同的模型堆砌而成,在渲染过程中,大量的独立模型会带来大量的DP,而模型之间大量的穿插会导致存储模型内部的冗余面,带来很多额外的Overdraw,如何减少DP和Overdraw是3D渲染中的提高性能的关键。目前,通常通过对模型网格的合并和冗余面的剔除,来减少3D渲染中的DP和Overdraw。在3DMax中网格合并和冗余面的剔除常用的方法是网格的布尔运算,能够将两个网格合并同时将冗余面去除。
但是,布尔运算的方法会对模型之间交叉面的边缘进行补面,会带来额外面数的增长,而且布尔运算的运算复杂度很高。对于整个3D场景来说布尔运算的方法进行网格合并和冗余面剔除的复杂度高,处理时间长,效率低。
发明内容
本发明提供一种游戏场景的数据处理方法、装置、设备及可读存储介质,用以解决现有技术中布尔运算的方法进行网格合并和冗余面剔除,复杂度高,处理时间长,效率低的问题。
本发明的一个方面是提供一种游戏场景的数据处理方法,包括:
对游戏场景中待处理的多个模型进行贴图合并;
计算所述多个模型的包围盒,并对所述多个模型进行体素化预处理,得到所述多个模型的体素数据;
根据所述多个模型的体素数据,确定所述多个模型中的冗余面;
将所述多个模型中的冗余面剔除。
本发明的另一个方面是提供一种游戏场景的数据处理装置,包括:
网格合并模块,用于对游戏场景中待处理的多个模型进行贴图合并;
冗余面剔除模块,用于:计算所述多个模型的包围盒,并对所述多个模型进行体素化预处理,得到所述多个模型的体素数据;根据所述多个模型的体素数据,确定所述多个模型中的冗余面;将所述多个模型中的冗余面剔除。
本发明的另一个方面是提供一种游戏场景的数据处理设备,包括:
处理器,存储器,以及存储在所述存储器上并可在所述处理器上运行的计算机程序;
其中,所述处理器运行所述计算机程序时实现上述所述的游戏场景的数据处理方法。
本发明的另一个方面是提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的游戏场景的数据处理方法。
本发明提供的游戏场景的数据处理方法、装置、设备及可读存储介质,通过对游戏场景中待处理的多个模型进行贴图合并,使得各个模型的材质和贴图均一致,以便于进行模型的网格合并;通过计算所述多个模型的包围盒,并对所述多个模型进行体素化预处理,得到所述多个模型的体素数据;根据所述多个模型的体素数据,确定所述多个模型中的冗余面;将所述多个模型中的冗余面剔除,能够离线地、快速地对整个场景中多个模型中的冗余面进行识别和剔除,从而可以减少渲染过程中产生的DP和Overdraw,复杂度低,提高了运行时的渲染效率和性能。
附图说明
图1为本发明实施例一提供的游戏场景的数据处理方法流程图;
图2为本发明实施例一提供的贴图合并过程的示意图;
图3为本发明实施例一提供的模型体素化表示结果的示意图;
图4为本发明实施例二提供的游戏场景的数据处理方法流程图;
图5为本发明实施例二提供的2UV数据重排前后对比示意图;
图6为本发明实施例三提供的游戏场景的数据处理装置的结构示意图;
图7为本发明实施例五提供的游戏场景的数据处理设备的结构示意图。
通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
本发明所涉及的术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。在以下各实施例的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。
本发明具体的应用场景:对游戏中的3D场景,往往都是由大量不同的模型堆砌而成,在渲染过程中,大量的独立模型会带来大量的DP,而模型之间大量的穿插会导致存储模型内部的冗余面,带来很多额外的Overdraw。常见的网络数据处理方案是利用GPUInstancing技术,将场景中同样材质,同样贴图的模型合并到一起,在游戏运行时合并到一个批次中进行渲染,从而减少运行时的DP消耗。对于Instance方法,只有同材质同贴图的模型才能进行合并,而且对于模型种类很多的场景能够合批的数量有着一定的局限性。另外对于手游来说,Android手机需要支持OpenGL ES3.0或者支持instance的扩展的手机才能够使用这个技术。在3DMax中网格合并和冗余面的剔除常用的方法是网格的布尔运算,将两个网格合并同时将冗余面去除,但是布尔运算的方法会对模型之间交叉面的边缘进行补面,会带来额外面数的增长,而且布尔运算的运算复杂度很高。
本发明提供的游戏场景的数据处理方法,旨在解决现有技术的如上技术问题。
下面以具体地实施例对本发明的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
实施例一
图1为本发明实施例一提供的游戏场景的数据处理方法流程图;图2为本发明实施例一提供的贴图合并过程的示意图。本发明实施例针对现有技术中布尔运算的方法进行网格合并和冗余面剔除,复杂度高,处理时间长,效率低的问题,提供游戏场景的数据处理方法。
本实施例中的方法应用于游戏场景的数据处理设备,该游戏场景的数据处理设备可以是智能手机、平板电脑等移动终端,也可以是游戏平台的服务器等,在其他实施例中,该方法还可应用于其他设备,本实施例以游戏场景的数据处理设备为例进行示意性说明。
如图1所示,该方法具体步骤如下:
步骤S101、对游戏场景中待处理的多个模型进行贴图合并。
本实施例中,使用者可以指定当前的游戏场景中需要进行冗余面剔除和网格合并的多个模型,作为待处理的模型。
游戏场景的数据处理设备针对游戏场景中待处理的多个模型,进行贴图合并,以使多个模型的材质和贴图均一致。
具体的,贴图合并的大致过程如图2所示,对所有待处理模型的贴图合并为一张目标贴图,根据原始贴图大小计算目标贴图大小,并对各原始贴图在目标贴图中的位置进行重排;对网格上所带的贴图UV数据(或称为1UV数据)进行重新计算,以保证贴图的显示效果不变。通过这一操作能够保证所有待处理模型的材质和贴图完全一致,仅仅网格数据有所区别,这样才能在不改变美术效果的前提下进行后续的网格合并和冗余面剔除处理。
另外,对多个模型进行贴图合并的过程可以采用现有技术中任意一种类似的贴图合并方法实现,本实施例此处不再赘述。
步骤S102、计算多个模型的包围盒,并对多个模型进行体素化预处理,得到多个模型的体素数据。
对于场景中的模型,只要网格是封闭网格的模型,无论网格是否全连通,都可以用体素表示该模型的内部空间。本实施例中,在进行网格冗余面剔除之前,首先计算得到各个模型的包围盒,然后根据各个模型的包围盒对各个模型进行体素化预处理,得到多个模型的体素数据。示例性的,模型的体素化表示可以如图3所示。
其中,该步骤中计算得到的各个模型的包围盒可以是AABB包围盒。
该步骤中,计算模型的包围盒可以采用现有技术中任意一种包围盒计算方法实现,本实施例此处不再赘述。
体素化(Voxelization)是将物体的几何形式表示转换成最接近该物体的体素表示形式,产生体素数据集,体素数据其不仅包含模型的表面信息,而且能描述模型的内部属性。另外,对模型进行体素化预处理得到模型的体素数据,具体可以采用现有技术中任意一种将一个模型进行体素化的方法实现,本实施例中不再赘述。
步骤S103、根据多个模型的体素数据,确定多个模型中的冗余面。
本实施例中,在确定各个模型的体素数据之后,根据模型的体素数据,可以确定每个模型中的顶点是否位于其他模型的内部,如果模型中的顶点位于其他模型的内部,则说明该顶点为一个不可见顶点。通过各个模型的体素数据可以确定各个模型中所有的不可见顶点,从而进一步可以确定各个模型中三个顶点均为不可见顶点的三角面片,将三个顶点均为不可见顶点的三角面片确定为冗余面。
步骤S104、将多个模型中的冗余面剔除。
在确定各个模型中的冗余面之后,可以将各个模型的网格数据中冗余面删除,以剔除各个模型中的冗余面。
本发明实施例通过对游戏场景中待处理的多个模型进行贴图合并,使得各个模型的材质和贴图均一致,以便于进行模型的网格合并;通过计算多个模型的包围盒,并对多个模型进行体素化预处理,得到多个模型的体素数据;根据多个模型的体素数据,确定多个模型中的冗余面;将多个模型中的冗余面剔除,能够离线地、快速地对整个场景中多个模型中的冗余面进行识别和剔除,从而可以减少渲染过程中产生的DP和Overdraw,复杂度低,提高了运行时的渲染效率和性能。
实施例二
图4为本发明实施例二提供的游戏场景的数据处理方法流程图。在上述实施例一的基础上,本实施例中,将多个模型中的冗余面剔除之后,还包括:对多个模型进行聚类,将同一聚类中的模型进行网格合并。如图4所示,该方法具体步骤如下:
步骤S201、对游戏场景中待处理的多个模型进行贴图合并。
该步骤与上述步骤S101一致,本实施例此处不再赘述。
步骤S202、计算多个模型的包围盒,并对多个模型进行体素化预处理,得到多个模型的体素数据。
对于场景中的模型,只要网格是封闭网格的模型,无论网格是否全连通,都可以用体素表示该模型的内部空间。本实施例中,在进行网格冗余面剔除之前,首先计算得到各个模型的包围盒,然后根据各个模型的包围盒对各个模型进行体素化预处理,得到多个模型的体素数据。示例性的,模型的体素化表示可以如图3所示。
体素化(Voxelization)是将物体的几何形式表示转换成最接近该物体的体素表示形式,产生体素数据集,体素数据其不仅包含模型的表面信息,而且能描述模型的内部属性。另外,对模型进行体素化预处理得到模型的体素数据,具体可以采用现有技术中任意一种将一个模型进行体素化的方法实现,本实施例中不再赘述。
示例性地,该步骤中计算得到的各个模型的包围盒可以是AABB包围盒。另外,计算模型的包围盒可以采用现有技术中任意一种包围盒计算方法实现,本实施例此处不再赘述。
本实施例中,该步骤具体可以采用如下方式实现:
计算多个模型的AABB包围盒;用三维数组表示各模型的AABB包围盒,得到该模型的体素数组;对体素数组中体素的位置进行标记,其中体素的位置包括模型的内部、模型的外部和模型的边缘。
具体的,根据模型的AABB包围盒初始化体素数组,也就是用三维数组表示各模型的AABB包围盒,得到该模型的体素数组;将体素数据对应的所有体素构成的体素空间中有三角面片穿过的体素标记为模型的边缘;从体素数组中位于模型的边缘的体素开始,对体素空间中的体素进行广度优先遍历,遇到已标记为模型的边缘的体素时,不再进行后续递归遍历,将本次遍历过的体素标记为模型的外部,遍历结束后可以完成对所有位于模型的外部的体素的标记;将体素数组中所有未被标记为模型的边缘、且未被标记为模型的外部的体素,标记为模型的内部。
进一步的,在计算得到多个模型的体素数据之后,对于三维空间中的一个点,可以根据该点的位置,结合各个模型的体素数据,可以确定该点对应体素被标记的状态,来确定该点是否位于模型的内部。如果该点对应体素被标记为模型的内部,则说明该点位于模型的内部;如果该点对应体素被标记为模型的外部,则说明该点位于模型的外部;如果该点对应体素被标记为模型的边缘,则说明该点位于模型的边缘。
步骤S203、根据多个模型的体素数据,确定多个模型中的冗余面。
在确定各个模型的体素数据之后,根据模型的体素数据,可以确定每个模型中的顶点是否位于其他模型的内部,如果模型中的顶点位于其他模型的内部,则说明该顶点为一个不可见顶点。通过各个模型的体素数据可以确定各个模型中所有的不可见顶点,从而进一步可以确定各个模型中三个顶点均为不可见顶点的三角面片,将三个顶点均为不可见顶点的三角面片确定为冗余面。
本实施例中,该步骤具体可以采用如下方式实现:
分别将多个模型中的每个模型作为目标模型,对目标模型进行以下冗余面识别处理,确定目标模型中的冗余面:对于多个模型中除目标模型之外的其他模型,判断目标模型和其他模型的包围盒是否有交叉;如果目标模型和其他模型的包围盒有交叉,则根据其他模型的体素数据,判断目标模型中的每个顶点是否在其他模型的内部,将在其他模型内部的顶点确定为目标模型的不可见顶点;根据确定的目标模型的不可见顶点,确定目标模型中三个顶点均为不可见顶点的三角面片为目标模型中的冗余面。
进一步的,由于在一个场景中一个模型可能会进行重用,在对目标模型进行以下冗余面识别处理时,可以在内存中复制目标模型,得到目标模型的副本模型;对目标模型的副本模型进行冗余面识别处理确定目标模型中的冗余面。
具体的,对场景中任意一个目标模型M的冗余面识别处理,可以包括如下步骤:
步骤1、在内存上对模型M进行复制,得到一个新的网格对象M1。
步骤2、对场景中其他模型M2进行遍历,分别对每个其他模型M2进行如下处理:
步骤2-1、判断模型M1和模型M2的包围盒是否有交叉;
步骤2-2、如果模型M1和模型M2的包围盒没有交叉,则不进行处理;
步骤2-2、如果模型M1和模型M2的包围盒有交叉,则遍历模型M1中的顶点,判断顶点是否位于模型M2的内部,如果顶点在模型M2的内部,则将顶点标记为不可见顶点;
其中,判断顶点是否位于模型M2的内部,包括:根据顶点的位置,结合模型M2的体素数据,判断顶点对应体素是否在模型M2的体素数据中被标记为了模型的内部;如果顶点对应体素在模型M2的体素数据中被标记为了模型的内部,则确定顶点位于模型M2的内部;如果顶点对应体素未在模型M2的体素数据中被标记为模型的内部,则确定顶点不位于模型M2的内部。
步骤3、场景中所有模型M2遍历完成后,对模型M1中所有不可见顶点进行了标记;遍历模型M1中的所有三角面片,如果三角面片中三个顶点都被标记为不可见顶点,则认为该三角面片为冗余面,可以将该三角面片剔除。
步骤S204、将多个模型中的冗余面剔除。
在确定各个模型中的冗余面之后,可以将各个模型的网格数据中冗余面删除,以剔除各个模型中的冗余面。
本实施例能够自动剔除模型网格之间以及模型网格与地表之间不可见的冗余面,减少场景中的Overdraw并减少顶点缓存。
步骤S205、对多个模型进行聚类,将同一聚类中的模型进行网格合并。
本实施例中,在剔除各个模型中的冗余面之后,对多个模型进行聚类,将同一聚类中的模型进行网格合并。
可选的,可以对场景中的模型根据距离进行聚类,例如,设置体素的边长,构建整个场景的体素数组,根据模型中心点所在的体素之间的距离进行聚类。
另外,对多个模型进行聚类,还可以采用基于密度的聚类算法、或者k均值聚类算法(k-means clustering algorithm,简称K-means算法)、或者其他聚类算法实现,聚类算法可以根据3D场景具体需求进行选择,以达到场景运行时对图形绘制接口的调用的数量(也即是Drawcall的数量)和同屏面数的平衡,本实施例对于所采用的聚类算法不做具体限定。
本实施例中,将同一聚类中的模型进行网格合并,主要需要处理好合并后顶点数据的正确性,需要处理顶点的坐标,法线(Normal),切线(Tangent),副法线(Binormal)的正确性。
具体的,将同一聚类中的模型进行网格合并包括:
确定合并得到的新模型的模型原点为(0,0,0),确定新模型的旋转矩阵为单位矩阵;根据合并前各模型的旋转矩阵和模型变换矩阵,对合并前各模型的原始顶点数据进行处理,得到新顶点数据。
具体的,根据合并前各模型的旋转矩阵和模型变换矩阵,对合并前各模型的原始顶点数据进行处理,得到新顶点数据,包括:
新顶点坐标=原始顶点坐标*模型变换矩阵;新法线=原始法线*旋转矩阵;新切线=原始切线*旋转矩阵;新副法线=原始副法线*旋转矩阵。
另外,由于相同模型不同实体的Lightmap贴图会不一样,光照贴图Lightmap的UV(也称为2UV)无法重复,需要对新模型的2UV数据进行重排。对新模型的2UV数据进行重排,可以采用现有技术中任意一种类似的方法实现,本实施例此处不再赘述。
例如,重排前的2UV数据可以如图5中左图所示,重排后的2UV数据可以如图5中右图所示。
对多个模型进行聚类,将同一聚类中的模型进行网格合并之后,将内存中的数据保存到本地,完成所有游戏场景的数据处理流程。
本实施例中的网格合并的方法,对于不支持Instance的设备也有很好的合批优化效果。
本发明提供的游戏场景的数据处理方法,可以离线地对场景中多个模型的网格数据进行重排,从而适应美术小模型拼接摆放的场编习惯,减少了美术定制化场景制作的成本;并且可以离线进行,不会在程序运行时带来额外的开销。
本发明实施例通过对游戏场景中待处理的多个模型进行贴图合并,使得各个模型的材质和贴图均一致,以便于进行模型的网格合并;通过计算多个模型的包围盒,并对多个模型进行体素化预处理,得到多个模型的体素数据;根据多个模型的体素数据,确定多个模型中的冗余面;将多个模型中的冗余面剔除,能够离线地、快速地对整个场景中多个模型中的冗余面进行识别和剔除,从而可以减少渲染过程中产生Overdraw和顶点缓存,复杂度低,提高了运行时的渲染效率和性能;进一步的,通过对多个模型进行聚类,将同一聚类中的模型进行网格合并,可以减少渲染过程中产生的DP,对于不支持Instance的设备也有很好的合批优化效果,进一步提高了运行时的渲染效率和性能。
实施例三
图6为本发明实施例三提供的游戏场景的数据处理装置的结构示意图。本发明实施例提供的游戏场景的数据处理装置可以执行游戏场景的数据处理方法实施例提供的处理流程。如图6所示,该游戏场景的数据处理装置30包括:网格合并模块301和冗余面剔除模块302。
具体地,网格合并模块301用于对待处理的多个模型进行贴图合并。
冗余面剔除模块302用于:计算多个模型的包围盒,并对多个模型进行体素化预处理,得到多个模型的体素数据;根据多个模型的体素数据,确定多个模型中的冗余面;将多个模型中的冗余面剔除。
本发明实施例提供的装置可以具体用于执行上述实施例一所提供的方法实施例,具体功能此处不再赘述。
本发明实施例通过对游戏场景中待处理的多个模型进行贴图合并,使得各个模型的材质和贴图均一致,以便于进行模型的网格合并;通过计算多个模型的包围盒,并对多个模型进行体素化预处理,得到多个模型的体素数据;根据多个模型的体素数据,确定多个模型中的冗余面;将多个模型中的冗余面剔除,能够离线地、快速地对整个场景中多个模型中的冗余面进行识别和剔除,从而可以减少渲染过程中产生的DP和Overdraw,复杂度低,提高了运行时的渲染效率和性能。
实施例四
在上述实施例三的基础上,本实施例中,网格合并模块还用于:对多个模型进行聚类,将同一聚类中的模型进行网格合并。
可选的,冗余面剔除模块还用于:
分别将多个模型中的每个模型作为目标模型,对目标模型进行以下冗余面识别处理,确定目标模型中的冗余面:对于多个模型中除目标模型之外的其他模型,判断目标模型和其他模型的包围盒是否有交叉;如果目标模型和其他模型的包围盒有交叉,则根据其他模型的体素数据,判断目标模型中的每个顶点是否在其他模型的内部,将在其他模型内部的顶点确定为目标模型的不可见顶点;根据确定的目标模型的不可见顶点,确定目标模型中三个顶点均为不可见顶点的三角面片为目标模型中的冗余面。
可选的,冗余面剔除模块还用于:
分别将多个模型中的每个模型作为目标模型,复制目标模型得到目标模型的副本模型;对目标模型的副本模型进行冗余面识别处理,确定目标模型中的冗余面。
可选的,冗余面剔除模块还用于:
计算多个模型的AABB包围盒;用三维数组表示各模型的AABB包围盒,得到该模型的体素数组;对体素数组中体素的位置进行标记,其中体素的位置包括模型的内部、模型的外部和模型的边缘。
可选的,网格合并模块还用于:
根据合并前各模型的旋转矩阵和模型变换矩阵,对合并前各模型的原始顶点数据进行处理,得到新顶点数据。
可选的,网格合并模块还用于:根据合并前各模型的旋转矩阵和模型变换矩阵,对所述合并前各模型的原始顶点数据进行以下处理,得到新顶点数据:
新顶点坐标=原始顶点坐标*模型变换矩阵;新法线=原始法线*旋转矩阵;新切线=原始切线*旋转矩阵;新副法线=原始副法线*旋转矩阵。
本发明实施例提供的装置可以具体用于执行上述实施例二所提供的方法实施例,具体功能此处不再赘述。
本发明实施例通过对游戏场景中待处理的多个模型进行贴图合并,使得各个模型的材质和贴图均一致,以便于进行模型的网格合并;通过计算多个模型的包围盒,并对多个模型进行体素化预处理,得到多个模型的体素数据;根据多个模型的体素数据,确定多个模型中的冗余面;将多个模型中的冗余面剔除,能够离线地、快速地对整个场景中多个模型中的冗余面进行识别和剔除,从而可以减少渲染过程中产生Overdraw和顶点缓存,复杂度低,提高了运行时的渲染效率和性能;进一步的,通过对多个模型进行聚类,将同一聚类中的模型进行网格合并,可以减少渲染过程中产生的DP,对于不支持Instance的设备也有很好的合批优化效果,进一步提高了运行时的渲染效率和性能。
实施例五
图7为本发明实施例五提供的游戏场景的数据处理设备的结构示意图。如图7所示,该游戏场景的数据处理设备70包括:处理器701,存储器702,以及存储在存储器702上并可在处理器701上运行的计算机程序。
其中,处理器701运行计算机程序时实现上述任一方法实施例提供的游戏场景的数据处理方法。
本发明实施例通过对游戏场景中待处理的多个模型进行贴图合并,使得各个模型的材质和贴图均一致,以便于进行模型的网格合并;通过计算多个模型的包围盒,并对多个模型进行体素化预处理,得到多个模型的体素数据;根据多个模型的体素数据,确定多个模型中的冗余面;将多个模型中的冗余面剔除,能够离线地、快速地对整个场景中多个模型中的冗余面进行识别和剔除,从而可以减少渲染过程中产生的DP和Overdraw,复杂度低,提高了运行时的渲染效率和性能。
另外,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现上述任一方法实施例提供的游戏场景的数据处理方法。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求书指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求书来限制。
Claims (9)
1.一种游戏场景的数据处理方法,其特征在于,包括:
对游戏场景中待处理的多个模型进行贴图合并;
计算所述多个模型的包围盒,并对所述多个模型进行体素化预处理,得到所述多个模型的体素数据;
根据所述多个模型的体素数据,确定所述多个模型中的冗余面;
将所述多个模型中的冗余面剔除;
所述根据所述多个模型的体素数据,确定所述多个模型中的冗余面,包括:
分别将所述多个模型中的每个模型作为目标模型,对所述目标模型进行以下冗余面识别处理,确定所述目标模型中的冗余面:
对于所述多个模型中除所述目标模型之外的其他模型,判断所述目标模型和其他模型的包围盒是否有交叉;
如果所述目标模型和其他模型的包围盒有交叉,则根据所述其他模型的体素数据,判断所述目标模型中的每个顶点是否在其他模型的内部,将在其他模型内部的顶点确定为所述目标模型的不可见顶点;
根据确定的所述目标模型的不可见顶点,确定所述目标模型中三个顶点均为不可见顶点的三角面片为所述目标模型中的冗余面。
2.根据权利要求1所述的方法,其特征在于,所述将所述多个模型中的冗余面剔除之后,还包括:
对所述多个模型进行聚类,将同一聚类中的模型进行网格合并。
3.根据权利要求2所述的方法,其特征在于,分别将所述多个模型中的每个模型作为目标模型,对所述目标模型进行冗余面识别处理,确定所述目标模型中的冗余面,包括:
分别将所述多个模型中的每个模型作为目标模型,复制所述目标模型得到所述目标模型的副本模型;
对所述目标模型的副本模型进行所述冗余面识别处理,确定所述目标模型中的冗余面。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述计算所述多个模型的包围盒,并对所述多个模型进行体素化预处理,得到所述多个模型的体素数据,包括:
计算所述多个模型的AABB包围盒;
用三维数组表示各所述模型的AABB包围盒,得到该模型的体素数组;
对所述体素数组中体素的位置进行标记,其中体素的位置包括模型的内部、模型的外部和模型的边缘。
5.根据权利要求2所述的方法,其特征在于,所述将同一聚类中的模型进行网格合并,包括:
根据合并前各模型的旋转矩阵和模型变换矩阵,对所述合并前各模型的原始顶点数据进行处理,得到新顶点数据。
6.根据权利要求5所述的方法,其特征在于,所述根据合并前各模型的旋转矩阵和模型变换矩阵,对所述合并前各模型的原始顶点数据进行处理,得到新顶点数据,包括:
新顶点坐标=原始顶点坐标*模型变换矩阵;
新法线=原始法线*旋转矩阵;
新切线=原始切线*旋转矩阵;
新副法线=原始副法线*旋转矩阵。
7.一种游戏场景的数据处理装置,其特征在于,包括:
网格合并模块,用于对游戏场景中待处理的多个模型进行贴图合并;
冗余面剔除模块,用于:计算所述多个模型的包围盒,并对所述多个模型进行体素化预处理,得到所述多个模型的体素数据;根据所述多个模型的体素数据,确定所述多个模型中的冗余面;将所述多个模型中的冗余面剔除;
所述冗余面剔除模块还用于:
分别将多个模型中的每个模型作为目标模型,对目标模型进行以下冗余面识别处理,确定目标模型中的冗余面:对于多个模型中除目标模型之外的其他模型,判断目标模型和其他模型的包围盒是否有交叉;如果目标模型和其他模型的包围盒有交叉,则根据其他模型的体素数据,判断目标模型中的每个顶点是否在其他模型的内部,将在其他模型内部的顶点确定为目标模型的不可见顶点;根据确定的目标模型的不可见顶点,确定目标模型中三个顶点均为不可见顶点的三角面片为目标模型中的冗余面。
8.一种游戏场景的数据处理设备,其特征在于,包括:
处理器,存储器,以及存储在所述存储器上并可在所述处理器上运行的计算机程序;
其中,所述处理器运行所述计算机程序时实现如权利要求1至6中任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910779652.2A CN110368694B (zh) | 2019-08-22 | 2019-08-22 | 游戏场景的数据处理方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910779652.2A CN110368694B (zh) | 2019-08-22 | 2019-08-22 | 游戏场景的数据处理方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110368694A CN110368694A (zh) | 2019-10-25 |
CN110368694B true CN110368694B (zh) | 2023-05-16 |
Family
ID=68260413
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910779652.2A Active CN110368694B (zh) | 2019-08-22 | 2019-08-22 | 游戏场景的数据处理方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110368694B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111068313B (zh) * | 2019-12-05 | 2021-02-19 | 腾讯科技(深圳)有限公司 | 一种应用中的场景更新控制方法、装置及存储介质 |
CN111124582B (zh) * | 2019-12-26 | 2023-04-07 | 珠海金山数字网络科技有限公司 | 一种图标调用的方法及装置 |
CN111986323B (zh) * | 2020-08-24 | 2024-03-22 | 格兰菲智能科技有限公司 | 模型简化方法 |
CN111921202B (zh) * | 2020-09-16 | 2021-01-08 | 成都完美天智游科技有限公司 | 虚拟场景的数据处理方法、装置、设备及可读存储介质 |
CN112057868A (zh) * | 2020-09-17 | 2020-12-11 | 网易(杭州)网络有限公司 | 游戏模型的合批处理方法、装置及电子设备 |
CN112164131B (zh) * | 2020-09-25 | 2024-04-05 | 北京商询科技有限公司 | 基于Unity引擎的内部结构切面方法、装置、计算机设备 |
CN112862941A (zh) * | 2020-10-17 | 2021-05-28 | 蔡娟 | 基于云计算的图形渲染引擎优化方法及系统 |
CN114332311B (zh) * | 2021-12-05 | 2023-08-04 | 北京字跳网络技术有限公司 | 一种图像生成方法、装置、计算机设备及存储介质 |
US20240108984A1 (en) * | 2022-09-29 | 2024-04-04 | Sony Interactive Entertainment Inc. | Game asset optimization over network at optimizer server |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102044089A (zh) * | 2010-09-20 | 2011-05-04 | 董福田 | 一种三维模型的自适应化简、渐进传输和快速绘制的方法 |
CN106600679B (zh) * | 2015-10-20 | 2019-11-08 | 星际空间(天津)科技发展有限公司 | 一种三维模型数据简化的方法 |
CN109745704B (zh) * | 2018-11-19 | 2022-09-09 | 苏州蜗牛数字科技股份有限公司 | 一种体素地形的管理方法 |
CN109816762B (zh) * | 2019-01-30 | 2023-08-22 | 网易(杭州)网络有限公司 | 一种图像渲染方法、装置、电子设备和存储介质 |
-
2019
- 2019-08-22 CN CN201910779652.2A patent/CN110368694B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110368694A (zh) | 2019-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110368694B (zh) | 游戏场景的数据处理方法、装置、设备及可读存储介质 | |
CN107730503B (zh) | 三维特征嵌入的图像对象部件级语义分割方法与装置 | |
US7561156B2 (en) | Adaptive quadtree-based scalable surface rendering | |
US8482560B2 (en) | Image forming techniques | |
EP1899854A2 (en) | Triangulating procedural geometric objects | |
CN107705363B (zh) | 一种道路三维可视化建模方法及装置 | |
CN115409933B (zh) | 多风格纹理贴图生成方法及其装置 | |
DE102011011947A1 (de) | Kantenverarbeitungstechniken | |
US20230120253A1 (en) | Method and apparatus for generating virtual character, electronic device and readable storage medium | |
CN109242967B (zh) | 一种三维地形渲染方法及装置 | |
CN114241151A (zh) | 三维模型简化方法、装置、计算机设备和计算机存储介质 | |
CN109697748B (zh) | 模型压缩处理方法、模型贴图处理方法装置、存储介质 | |
CN113327315A (zh) | 多层次细节模型生成方法和装置 | |
CN115222879A (zh) | 一种模型减面处理方法、装置、电子设备及存储介质 | |
CN114708374A (zh) | 虚拟形象生成方法、装置、电子设备和存储介质 | |
US20220036106A1 (en) | Method and apparatus for data calculation in neural network model, and image processing method and apparatus | |
CN113506305B (zh) | 三维点云数据的图像增强方法、语义分割方法及装置 | |
CN114581871A (zh) | 一种目标物体的检测方法和装置 | |
Dyken et al. | Semi‐Uniform Adaptive Patch Tessellation | |
CN116310060B (zh) | 一种渲染数据的方法、装置、设备及存储介质 | |
CN116468632A (zh) | 一种基于自适应特征保持的网格去噪方法及装置 | |
CN112419463B (zh) | 一种模型数据处理方法、装置、设备及可读存储介质 | |
CN116109767A (zh) | 三维场景的渲染方法、图像处理器、电子设备及存储介质 | |
CN115761119A (zh) | 邻域体素存储方法、装置、计算机设备和存储介质 | |
CN116912395B (zh) | 基于OpenGL的图形混合渲染方法、装置及存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |