CN111921202B - 虚拟场景的数据处理方法、装置、设备及可读存储介质 - Google Patents
虚拟场景的数据处理方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN111921202B CN111921202B CN202010973938.7A CN202010973938A CN111921202B CN 111921202 B CN111921202 B CN 111921202B CN 202010973938 A CN202010973938 A CN 202010973938A CN 111921202 B CN111921202 B CN 111921202B
- Authority
- CN
- China
- Prior art keywords
- processed
- vertex
- line segment
- collision
- ray detection
- 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/55—Controlling game characters or game objects based on the game progress
- A63F13/57—Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game
- A63F13/577—Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game using determination of contact between game characters or objects, e.g. to avoid collision between virtual racing cars
-
- 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/70—Game security or game management aspects
- A63F13/77—Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
- G06T17/205—Re-meshing
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Geometry (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- General Business, Economics & Management (AREA)
- Processing Or Creating Images (AREA)
- Image Generation (AREA)
Abstract
本发明公开了一种虚拟场景的数据处理方法、装置、设备及可读存储介质,涉及图像处理技术领域,基于待处理三角面的顶点、边界线段和内部线段,做射线检测,确定是否需要剔除,无需提交绘制全部三角面,优化效率和内存占用。所述方法包括:在目标虚拟场景中确定至少一个目标碰撞体;选取待处理三角面,将待处理三角面中的任一顶点作为第一顶点,基于第一顶点,做射线检测;在第一顶点的射线检测指示发生碰撞且发生碰撞的碰撞点的法线方向和射线方向的点积大于等于默认取值的情况下,基于待处理三角面的边界线段和内部线段,做射线检测;当边界线段和内部线段的射线检测指示未发生碰撞时,在目标虚拟场景中将待处理三角面从待处理模型中剔除。
Description
技术领域
本发明涉及图像处理技术领域,特别是涉及一种虚拟场景的数据处理方法、装置、设备及可读存储介质。
背景技术
随着图像处理技术的快速发展,3D(Three Dimension,三维)技术在成熟度、完善度、易用性、人性化和经济性等各方面都取得了巨大的突破,通过3D技术做出来的游戏、电影等等已经成为人们工作和生活中不可缺少的一部分。在3D技术的实际应用过程中,有些待使用3D技术渲染的虚拟场景中含有大量堆砌的物体,比如有些虚拟场景中有大量的山体或者很多堆叠的石块,这些虚拟场景中物体与物体之间的重叠部分较多,重叠的面是不可见的。为了减小引擎的渲染工作量,保证游戏、应用等的流畅运行,在采用3D技术进行虚拟场景的渲染之前,往往会对虚拟场景进行数据处理,将虚拟场景中因为重叠而不可见的三角面剔除,仅对当前可见的物体以及三角面进行渲染。
相关技术中,在对虚拟场景进行数据处理时,通常采用预计算潜在可见集的方法。也即先绘制整个虚拟场景在当前帧的视锥下的深度图,检测在当前帧的虚拟场景中物体的遮挡关系,在虚拟场景中物体模型的全部三角面中确定因为被遮挡而需要隐藏的三角面,将这些三角面剔除。
在实现本发明的过程中,发明人发现相关技术至少存在以下问题:
采用预计算潜在可见集的方法进行遮挡剔除时,可以剔除相机在特定位置以及特定朝向下的被其他模型完全遮挡的模型,没有被完全遮挡的模型仍然需要提交绘制该模型的所有三角面。另外,预计算潜在可见集的数据需要占用运行时的内存,内存大小和剔除精度成正比,导致遮挡剔除的过程不仅准确度不高,而且很繁琐,数据处理的效率低,占用大量的运行内存。
发明内容
有鉴于此,本发明提供了一种虚拟场景的数据处理方法、装置、设备及可读存储介质,主要目的在于解决目前遮挡剔除的过程不仅准确度不高,而且很繁琐,数据处理的效率低,占用大量的运行内存的问题。
依据本发明第一方面,提供了一种虚拟场景的数据处理方法,该方法包括:
在目标虚拟场景中为待处理模型确定至少一个目标碰撞体,所述至少一个目标碰撞体是基于所述待处理模型向所述目标虚拟场景中的多个网格碰撞体做射线检测后命中的网格碰撞体,所述多个网格碰撞体是根据所述目标虚拟场景中的多个实体模型生成的;
选取所述待处理模型中的任一三角面作为待处理三角面,将所述待处理三角面中的任一顶点作为第一顶点,基于所述第一顶点,向所述至少一个目标碰撞体做射线检测;
在所述第一顶点的射线检测指示发生碰撞且发生碰撞的碰撞点的法线方向和射线方向的点积大于等于默认取值的情况下,基于所述待处理三角面的边界线段和内部线段,向所述至少一个目标碰撞体做射线检测,所述内部线段基于所述边界线段的中点和所述待处理三角面的顶点构建;
当所述边界线段和所述内部线段的射线检测指示未发生碰撞时,在所述目标虚拟场景中将所述待处理三角面从所述待处理模型中剔除。
在另一个实施例中,所述在目标虚拟场景中为待处理模型确定至少一个目标碰撞体,包括:
确定所述目标虚拟场景包括的所述多个实体模型;
根据所述多个实体模型的顶点信息,生成多个网格碰撞体;
选取所述多个实体模型中的任一实体模型作为所述待处理模型,构建所述待处理模型的包围盒;
基于所述包围盒向所述多个网格碰撞体做射线检测,在所述多个网格碰撞体中确定所述射线检测指示发生碰撞的网格碰撞体作为所述至少一个目标碰撞体。
在另一个实施例中,所述选取所述待处理模型中的任一三角面作为待处理三角面,将所述待处理三角面中的任一顶点作为第一顶点,基于所述第一顶点,向所述至少一个目标碰撞体做射线检测之后,所述方法还包括:
在所述第一顶点的射线检测指示未发生碰撞或发生碰撞的所述碰撞点的法线方向和射线方向的点积小于所述默认取值的情况下,结束当前流程;
同时或顺序在所述待处理模型中选取除所述待处理三角面外的其他任一三角面作为新的待处理三角面,并重新基于所述新的待处理三角面的顶点向所述至少一个目标碰撞体做射线检测。
在另一个实施例中,所述基于所述待处理三角面的边界线段和内部线段,向所述至少一个目标碰撞体做射线检测,包括:
在所述待处理三角面的边界线段中提取第一子边界,基于所述第一子边界,向所述至少一个目标碰撞体做射线检测,所述第一子边界是所述边界线段中以所述第一顶点为端点的任一边界线段;
在所述第一子边界的射线检测指示未发生碰撞的情况下,采用所述边界线段的中点和所述待处理三角面的顶点构建所述内部线段;
在所述边界线段中提取除所述第一子边界外的第二子边界和第三子边界,基于所述第二子边界、第三子边界和所述内部线段,向所述至少一个目标碰撞体做射线检测。
在另一个实施例中,所述采用所述边界线段的中点和所述待处理三角面的顶点构建所述内部线段,包括:
分别获取所述第一子边界、所述第二子边界和所述第三子边界的三个中点;
在所述待处理三角面中提取除所述第一顶点外的第二顶点和第三顶点;
对于所述第一顶点,在所述三个中点中提取所述第一顶点对应的第一中点,构建以所述第一顶点和所述第一中点为端点的线段作为所述第一子线段,所述第一中点是所述第二顶点和所述第三顶点所在的边界线段的中点;
对于所述第二顶点,在所述三个中点中提取所述第二顶点对应的第二中点,构建以所述第二顶点和所述第二中点为端点的线段作为所述第二子线段,所述第二中点是所述第一顶点和所述第三顶点所在的边界线段的中点;
对于所述第三顶点,在所述三个中点中提取所述第三顶点对应的第三中点,构建以所述第三顶点和所述第三中点为端点的线段作为所述第三子线段,所述第三中点是所述第一顶点和所述第二顶点所在的边界线段的中点;
将所述第一子线段、所述第二子线段和所述第三子线段作为所述内部线段。
在另一个实施例中,所述在所述待处理三角面的边界线段中提取第一子边界,基于所述第一子边界,向所述至少一个目标碰撞体做射线检测之后,所述方法还包括:
当所述第一子边界的射线检测指示发生碰撞时,结束当前流程;
同时或顺序在所述待处理模型中选取除所述待处理三角面外的其他任一三角面作为新的待处理三角面,并重新基于所述新的待处理三角面的顶点向所述至少一个目标碰撞体做射线检测。
在另一个实施例中,所述在所述第一顶点的射线检测指示发生碰撞且发生碰撞的碰撞点的法线方向和射线方向的点积大于等于默认取值的情况下,基于所述待处理三角面的边界线段和内部线段,向所述至少一个目标碰撞体做射线检测之后,所述方法还包括:
当所述边界线段和所述内部线段中任一线段的射线检测指示发生碰撞时,结束当前流程;
同时或顺序在所述待处理模型中选取除所述待处理三角面外的其他任一三角面作为新的待处理三角面,并重新基于所述新的待处理三角面的顶点向所述至少一个目标碰撞体做射线检测。
在另一个实施例中,所述当所述边界线段和所述内部线段的射线检测指示未发生碰撞时,在所述目标虚拟场景中将所述待处理三角面从所述待处理模型中剔除之后,所述方法还包括:
继续同时或顺序执行所述待处理模型中除所述待处理三角面外的其他三角面向所述至少一个目标碰撞体的射线检测,直至所述待处理模型中全部三角面完成处理;
在所述目标虚拟场景中保存处理后的所述待处理模型;
同时或顺序对所述目标虚拟场景中除所述待处理模型外的其他实体模型进行三角面的射线检测以及剔除,直至所述目标虚拟场景中多个实体模型均完成处理;
将处理后的所述目标虚拟场景中生成的多个网格碰撞体全部清除,保存清除后的所述目标虚拟场景。
依据本发明第二方面,提供了一种虚拟场景的数据处理装置,该装置包括:
确定模块,用于在目标虚拟场景中为待处理模型确定至少一个目标碰撞体,所述至少一个目标碰撞体是基于所述待处理模型向所述目标虚拟场景中的多个网格碰撞体做射线检测后命中的网格碰撞体,所述多个网格碰撞体是根据所述目标虚拟场景中的多个实体模型生成的;
检测模块,用于选取所述待处理模型中的任一三角面作为待处理三角面,将所述待处理三角面中的任一顶点作为第一顶点,基于所述第一顶点,向所述至少一个目标碰撞体做射线检测;
所述检测模块,还用于在所述第一顶点的射线检测指示发生碰撞且发生碰撞的碰撞点的法线方向和射线方向的点积大于等于默认取值的情况下,基于所述待处理三角面的边界线段和内部线段,向所述至少一个目标碰撞体做射线检测,所述内部线段基于所述边界线段的中点和所述待处理三角面的顶点构建;
剔除模块,用于当所述边界线段和所述内部线段的射线检测指示未发生碰撞时,在所述目标虚拟场景中将所述待处理三角面从所述待处理模型中剔除。
在另一个实施例中,所述确定模块,包括:
所述确定模块,包括:
确定单元,用于确定所述目标虚拟场景包括的所述多个实体模型;
生成单元,用于根据所述多个实体模型的顶点信息,生成多个网格碰撞体;
构建单元,用于选取所述多个实体模型中的任一实体模型作为所述待处理模型,构建所述待处理模型的包围盒;
检测单元,用于基于所述包围盒向所述多个网格碰撞体做射线检测,在所述多个网格碰撞体中确定所述射线检测指示发生碰撞的网格碰撞体作为所述至少一个目标碰撞体。
在另一个实施例中,所述装置还包括:
第一结束模块,用于当所述第一顶点的射线检测指示未发生碰撞或发生碰撞的所述碰撞点的法线方向和射线方向的点积小于所述默认取值时,结束当前流程;
所述检测模块,还用于同时或顺序在所述待处理模型中选取除所述待处理三角面外的其他任一三角面作为新的待处理三角面,并重新基于所述新的待处理三角面的顶点向所述至少一个目标碰撞体做射线检测。
在另一个实施例中,所述检测模块,包括:
检测单元,用于在所述待处理三角面的边界线段中提取第一子边界,基于所述第一子边界,向所述至少一个目标碰撞体做射线检测,所述第一子边界是所述边界线段中以所述第一顶点为端点的任一边界线段;
构建单元,用于在所述第一子边界的射线检测指示未发生碰撞的情况下,采用所述边界线段的中点和所述待处理三角面的顶点构建所述内部线段;
所述检测单元,还用于在所述边界线段中提取除所述第一子边界外的第二子边界和第三子边界,基于所述第二子边界、第三子边界和所述内部线段,向所述至少一个目标碰撞体做射线检测。
在另一个实施例中,所述构建单元,用于分别获取所述第一子边界、所述第二子边界和所述第三子边界的三个中点;在所述待处理三角面中提取除所述第一顶点外的第二顶点和第三顶点;对于所述第一顶点,在所述三个中点中提取所述第一顶点对应的第一中点,构建以所述第一顶点和所述第一中点为端点的线段作为所述第一子线段,所述第一中点是所述第二顶点和所述第三顶点所在的边界线段的中点;对于所述第二顶点,在所述三个中点中提取所述第二顶点对应的第二中点,构建以所述第二顶点和所述第二中点为端点的线段作为所述第二子线段,所述第二中点是所述第一顶点和所述第三顶点所在的边界线段的中点;对于所述第三顶点,在所述三个中点中提取所述第三顶点对应的第三中点,构建以所述第三顶点和所述第三中点为端点的线段作为所述第三子线段,所述第三中点是所述第一顶点和所述第二顶点所在的边界线段的中点;将所述第一子线段、所述第二子线段和所述第三子线段作为所述内部线段。
在另一个实施例中,所述检测模块,还包括:
保留单元,用于当所述第一子边界的射线检测指示发生碰撞时,结束当前流程;
所述检测单元,还用于同时或顺序在所述待处理模型中选取除所述待处理三角面外的其他任一三角面作为新的待处理三角面,并重新基于所述新的待处理三角面的顶点向所述至少一个目标碰撞体做射线检测。
在另一个实施例中,所述装置还包括:
第二结束模块,用于当所述边界线段和所述内部线段中任一线段的射线检测指示发生碰撞时,结束当前流程;
所述检测模块,用于同时或顺序在所述待处理模型中选取除所述待处理三角面外的其他任一三角面作为新的待处理三角面,并重新基于所述新的待处理三角面的顶点向所述至少一个目标碰撞体做射线检测。
在另一个实施例中,所述装置还包括:
所述检测模块,还用于继续同时或顺序执行所述待处理模型中除所述待处理三角面外的其他三角面向所述至少一个目标碰撞体的射线检测,直至所述待处理模型中全部三角面完成处理;
保存模块,用于在所述目标虚拟场景中保存处理后的所述待处理模型;
所述检测模块,还用于同时或顺序对所述目标虚拟场景中除所述待处理模型外的其他实体模型进行三角面的射线检测以及剔除,直至所述目标虚拟场景中多个实体模型均完成处理;
清除模块,用于将处理后的所述目标虚拟场景中生成的多个网格碰撞体全部清除,保存清除后的所述目标虚拟场景。
依据本发明第三方面,提供了一种设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述方法的步骤。
依据本发明第四方面,提供了一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的方法的步骤。
借由上述技术方案,本发明提供的一种虚拟场景的数据处理方法、装置、设备及可读存储介质,本发明在目标虚拟场景中为待处理模型确定附近的目标碰撞体,分别基于待处理模型的待处理三角面的顶点、边界线段和内部线段,向目标碰撞体做射线检测,从而确定待处理三角面是否处于其他实体模型内部,确定是否需要将待处理三角面剔除,可以在游戏的制作阶段直接剔除虚拟场景中每个实体模型在正常摄像机视角下无法看见的三角面,无需提交绘制每个实体模型的全部三角面,在不改变开发人员工作流程的情况下,极大的减少需要提交绘制的三角面数量,减小资源量,使游戏在实际运行时的场景资源数量以及占用内存减少,优化游戏运行时的效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的一种虚拟场景的数据处理方法流程示意图;
图2A示出了本发明实施例提供的一种虚拟场景的数据处理方法流程示意图;
图2B示出了本发明实施例提供的一种虚拟场景的数据处理方法的示意图;
图2C示出了本发明实施例提供的一种虚拟场景的数据处理方法的示意图;
图2D示出了本发明实施例提供的一种虚拟场景的数据处理方法流程示意图;
图3A示出了本发明实施例提供的一种虚拟场景的数据处理装置的结构示意图;
图3B示出了本发明实施例提供的一种虚拟场景的数据处理装置的结构示意图;
图3C示出了本发明实施例提供的一种虚拟场景的数据处理装置的结构示意图;
图3D示出了本发明实施例提供的一种虚拟场景的数据处理装置的结构示意图;
图3E示出了本发明实施例提供的一种虚拟场景的数据处理装置的结构示意图;
图3F示出了本发明实施例提供的一种虚拟场景的数据处理装置的结构示意图;
图3G示出了本发明实施例提供的一种虚拟场景的数据处理装置的结构示意图;
图4示出了本发明实施例提供的一种计算机设备的装置结构示意图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
本发明实施例提供了一种虚拟场景的数据处理方法,如图1所示,该方法包括:
101、在目标虚拟场景中为待处理模型确定至少一个目标碰撞体,至少一个目标碰撞体是基于待处理模型向目标虚拟场景中的多个网格碰撞体做射线检测后命中的网格碰撞体,多个网格碰撞体是根据目标虚拟场景中的多个实体模型生成的。
102、选取待处理模型中的任一三角面作为待处理三角面,将待处理三角面中的任一顶点作为第一顶点,基于第一顶点,向至少一个目标碰撞体做射线检测。
103、在第一顶点的射线检测指示发生碰撞且发生碰撞的碰撞点的法线方向和射线方向的点积大于等于默认取值的情况下,基于待处理三角面的边界线段和内部线段,向至少一个目标碰撞体做射线检测,内部线段基于边界线段的中点和待处理三角面的顶点构建。
104、当边界线段和内部线段的射线检测指示未发生碰撞时,在目标虚拟场景中将待处理三角面从待处理模型中剔除。
本发明实施例提供的方法,在目标虚拟场景中为待处理模型确定附近的目标碰撞体,分别基于待处理模型的待处理三角面的顶点、边界线段和内部线段,向目标碰撞体做射线检测,从而确定待处理三角面是否处于其他实体模型内部,确定是否需要将待处理三角面剔除,可以在游戏的制作阶段直接剔除虚拟场景中每个实体模型在正常摄像机视角下无法看见的三角面,无需提交绘制每个实体模型的全部三角面,在不改变开发人员工作流程的情况下,极大的减少需要提交绘制的三角面数量,减小资源量,使游戏在实际运行时的场景资源数量以及占用内存减少,优化游戏运行时的效率。
本发明实施例提供了一种虚拟场景的数据处理方法,如图2A所示,该方法包括:
201、确定目标虚拟场景包括的多个实体模型,根据多个实体模型的顶点信息,生成多个网格碰撞体。
目前在对虚拟场景进行数据处理将摄像机不可见的三角面剔除时,采用的方法多为运行时剔除,例如视锥体剔除方法、背面剔除方法、基于预计算潜在可见集的遮挡剔除方法。其中,视锥体剔除方法针对的对象一般是整个实体模型,而不是实体模型中的三角面,对于部分处于视锥体内的实体模型,需要提交绘制该实体模型的所有三角面。背面剔除方法虽然可以剔除实体模型背对摄像机的三角面,但是无法剔除实体模型中那些虽然面对摄像机,但却被更靠近摄像机的实体模型完全遮挡住的三角面。基于预计算潜在可见集的遮挡剔除方法可以剔除摄像机在特定位置特定朝向下的被其他实体模型完全遮挡的模型模型,没有被完全遮挡的实体模型需要提交绘制该实体模型的所有三角面。同时预计算潜在可见集的遮挡剔除方法中产生的中间数据需要占用运行时的内存,内存大小和剔除精度成正比。发明人认识到,现在很多复杂的虚拟场景在构建时通常是使用大量基础模型组合摆放,尤其是在自然场景中,开发人员会使用几种基础的山石模型堆叠出复杂的地貌,造成虚拟场景中有大量的三角面是在重叠的物体内部或地面之下不可见的,而采用上述方式对虚拟场景进行数据处理时,需要对每一个基础模型的全部三角面进行绘制提交,对全部三角面进行处理,而且对于在重叠的物体内部或地面之下不可见的三角面,很有可能发生遗漏。因此,本发明提出了一种虚拟场景的数据处理方法,在场景编辑完成后,按照固定的逻辑,根据每个三角面做射线检测,确定哪些三角面无需处理,哪些三角面需要提出,使得可以直接剔除虚拟场景中每个实体模型在正常摄像机视角下无法看见的三角面,在不改变开发人员工作流程的情况下,可以极大的减少需要提交绘制的三角面数量,优化运行时的效率和内存占用。
在本发明实施例中,将待进行三角面剔除处理的虚拟场景设置为目标虚拟场景。实际应用的过程中,目标虚拟场景中会包括大量的实体模型,有些实体模型的周围不存在任何其他的实体模型且体积很小,不会发生任何的遮挡,而有些实体模型很明显在当前的位置上被其他的实体模型所遮挡,因此,确定目标虚拟场景包括的多个实体模型,以便后续对这些实体模型进行数据的处理,实现不可见三角面的剔除操作。而为了根据各个实体模型的三角面做射线检测,根据多个实体模型的顶点信息,生成多个网格碰撞体,在后续根据三角面向网格碰撞体做射线检测,从而确定三角面是否需要被剔除。需要说明的是,目前存在一些综合型游戏开发工具,因此,在生成多个网格碰撞体时,可以基于综合型游戏开发工具的Mesh Collider(网格碰撞体)功能直接生成。
202、选取多个实体模型中的任一实体模型作为待处理模型,构建待处理模型的包围盒,基于包围盒向多个网格碰撞体做射线检测,在多个网格碰撞体中确定射线检测指示发生碰撞的网格碰撞体作为至少一个目标碰撞体。
在本发明实施例中,在确定了目标虚拟场景包括的多个实体模型后,选取多个实体模型中的任一实体模型作为待处理模型,后续以对该待处理模型进行处理为例进行说明,而在实际应用的过程中,目标虚拟场景中每一个实体模型都采用本发明所示的方法进行处理。
在确定了待处理模型后,由于只有待处理模型附近的网格碰撞体在射线检测中才具有参考价值,距离待处理模型过远的网格碰撞体是射线检测无法触及的,因此,需要构建待处理模型的包围盒,基于包围盒向多个网格碰撞体做射线检测,在多个网格碰撞体中确定射线检测指示发生碰撞的网格碰撞体作为至少一个目标碰撞体,从而得到待处理模型附近的所有网格碰撞体。需要说明的是,根据包围盒向多个网格碰撞体做射线检测可以通过综合型游戏开发工具的OverlapBox(相交判断)功能实现。
通过上述过程,在目标虚拟场景中便为待处理模型确定至少一个目标碰撞体,具体地,至少一个目标碰撞体是根据待处理模型做射线检测确定的,后续可以基于这至少一个目标碰撞体实现对三角面的处理。
203、选取待处理模型中的任一三角面作为待处理三角面,将待处理三角面中的任一顶点作为第一顶点,基于第一顶点,向至少一个目标碰撞体做射线检测,在第一顶点的射线检测指示未发生碰撞或发生碰撞的碰撞点的法线方向和射线方向的点积小于默认取值的情况下,执行下述步骤204。在第一顶点的射线检测指示发生碰撞且发生碰撞的碰撞点的法线方向和射线方向的点积大于等于默认取值的情况下,执行下述步骤205。
在本发明实施例中,当确定了待处理模型周围的目标碰撞体后,开始对待处理模型进行处理。其中,对于待处理模型中的每一个三角面,均采用下述的方式进行一系列的检测以及处理,因此,在这里,以待处理三角面为例进行说明,该待处理三角面可以是待处理模型中的任一三角面。
在对待处理三角面进行处理时,首先,选取待处理模型中的任一三角面作为待处理三角面,将待处理三角面中的任一顶点作为第一顶点,基于待处理三角面的第一顶点,向至少一个目标碰撞体做射线检测,其中,该第一顶点是待处理三角面中的任一顶点。随后,根据射线检测返回的内容,确定射线检测是否发生碰撞。在第一顶点的射线检测指示未发生碰撞的情况下,表示该第一顶点不在其他实体模型的内部,是不能直接剔除的,无需再对该待处理三角面执行后续的操作,所以,跳过该待处理三角面,并结束当前流程,所以,执行下述步骤204。而在第一顶点的射线检测指示发生碰撞的情况下,并不能完全确定该第一顶点一定位于其他实体模型的内部,需要进一步确定发生碰撞的碰撞点的法线方向和射线方向,计算法线方向和射线方向的点积。若法线方向和射线方向的点积大于等于默认取值,表示该第一顶点不在其他实体模型的内部,是不能直接剔除的,所以,执行下述步骤204。这样,综合上述需要执行步骤204的情况可以得出,在第一顶点的射线检测指示未发生碰撞或发生碰撞的碰撞点的法线方向和射线方向的点积小于默认取值的情况下,均执行步骤204。而若法线方向和射线方向的点积小于默认取值,表示该第一顶点是处于其他实体模型内部的,需要根据该待处理三角面的其他顶点以及边界等做进一步的判断,所以,执行下述步骤205。其中,需要说明的是,本步骤中提及的默认取值通常为0,也即将法线方向和射线方向的点积与0进行比对,从而确定应该执行哪种操作。
204、在第一顶点的射线检测指示未发生碰撞或发生碰撞的碰撞点的法线方向和射线方向的点积小于默认取值的情况下,结束当前流程,同时或顺序在待处理模型中选取除待处理三角面外的其他任一三角面作为新的待处理三角面,并重新基于新的待处理三角面的顶点向至少一个目标碰撞体做射线检测。
在本发明实施例中,在第一顶点的射线检测指示未发生碰撞或发生碰撞的碰撞点的法线方向和射线方向的点积小于默认取值的情况下,表示该第一顶点不在其他实体模型的内部,是不能直接剔除的,无需再对该待处理三角面执行后续的操作,所以,跳过该待处理三角面,并结束当前流程。而由于待处理模型中除待处理三角面外还有其他三角面等待处理,因此,同时或顺序在待处理模型中选取除待处理三角面外的其他任一三角面作为新的待处理三角面,并重新基于新的待处理三角面的顶点向至少一个目标碰撞体做射线检测,也即基于新的待处理三角面重复步骤203中的过程,此处不再进行赘述。其中,针对于同一个待处理模型,该待处理模型中全部的三角面可以同时进行检测,也即并行实现多个三角面的检测,从而缩短实体模型的处理时间。或者也可以顺序进行检测,也即一个三角面检测完毕后再执行下一个三角面的检测,以便降低负载。本申请对三角面的检测是同时进行还是顺序进行不做具体限定。
需要说明的是,在实际应用的过程中,当确定待处理三角面不能直接剔除时,可将该待处理三角面保留在待处理模型中,这样,在遍历该待处理模型的所有三角面后,待处理模型中会有保留的三角面,就不用重复对待处理模型进行剔除处理了,提高了剔除效率。
205、在第一顶点的射线检测指示发生碰撞且发生碰撞的碰撞点的法线方向和射线方向的点积大于等于默认取值的情况下,在待处理三角面的边界线段中提取第一子边界,基于第一子边界,向至少一个目标碰撞体做射线检测,当第一子边界的射线检测指示发生碰撞时,执行下述步骤206。当第一子边界的射线检测指示未发生碰撞时,执行下述步骤207和步骤208。
在本发明实施例中,在第一顶点的射线检测指示发生碰撞且发生碰撞的碰撞点的法线方向和射线方向的点积大于等于默认取值的情况下,表示该第一顶点是处于其他实体模型内部的,需要根据该待处理三角面的其他顶点以及边界等做进一步的判断,因此,在待处理三角面的边界线段中提取第一子边界,基于第一子边界,向至少一个目标碰撞体做射线检测,其中,第一子边界是边界线段中以第一顶点为端点的任一边界线段。例如,参见图2B,设待处理三角面的三个顶点分别为A、B和C,其中,A为第一顶点,则第一子边界可为线段AB。
在基于第一子边界向至少一个目标碰撞体做射线检测后,根据射线检测返回的内容确定本次的射线检测是否发生了碰撞。当第一子边界的射线检测指示发生碰撞时,表示待处理三角面不完全在其他实体模型的内部,是不可以直接剔除的,需要保留,因此,执行下述步骤206。当第一子边界的射线检测指示未发生碰撞时,表示该第一子边界是处于其他实体模型内部的,需要根据该待处理三角面的其他顶点以及边界等做进一步的判断,因此,执行下述步骤207至步骤208。
206、当第一子边界的射线检测指示发生碰撞时,结束当前流程,同时或顺序在待处理模型中选取除待处理三角面外的其他任一三角面作为新的待处理三角面,并重新基于新的待处理三角面的顶点向至少一个目标碰撞体做射线检测。
在本发明实施例中,当第一子边界的射线检测指示发生碰撞时,表示待处理三角面不完全在其他实体模型的内部,是不可以直接剔除的,结束当前流程。同时或顺序在待处理模型中选取除待处理三角面外的其他任一三角面作为新的待处理三角面,并重新基于新的待处理三角面的顶点向至少一个目标碰撞体做射线检测,具体过程与上述步骤203中的过程一致,此处不再进行赘述。
207、当第一子边界的射线检测指示未发生碰撞时,采用边界线段的中点和待处理三角面的顶点构建内部线段。
在本发明实施例中,当第一子边界的射线检测指示未发生碰撞时,表示该第一子边界是处于其他实体模型内部的,需要根据该待处理三角面的其他顶点以及边界等做进一步的判断,因此,采用边界线段的中点和待处理三角面的顶点构建内部线段,以便将待处理三角面整体考虑进来。
其中,在构建内部线段时,首先,需要分别获取第一子边界、第二子边界和第三子边界的三个中点,并在待处理三角面中提取除第一顶点外的第二顶点和第三顶点。随后,对于第一顶点,在三个中点中提取第一顶点对应的第一中点,构建以第一顶点和第一中点为端点的线段作为第一子线段,第一中点是第二顶点和第三顶点所在的边界线段的中点。对于第二顶点,在三个中点中提取第二顶点对应的第二中点,构建以第二顶点和第二中点为端点的线段作为第二子线段,第二中点是第一顶点和第三顶点所在的边界线段的中点。对于第三顶点,在三个中点中提取第三顶点对应的第三中点,构建以第三顶点和第三中点为端点的线段作为第三子线段,第三中点是第一顶点和第二顶点所在的边界线段的中点。最后,将第一子线段、第二子线段和第三子线段作为内部线段。
以图2C为例,设第一顶点为A,第二顶点为B,第三顶点为C,第一子边界为AB,第二子边界为BC,第三子边界为CD,AB的中点为F,BC的中点为D,AC的中点为E,则对于第一顶点A,确定的第一中点为D,也即第二顶点B和第三顶点C所在的边界线段BC的中点,这样,第一顶点A和第一中点D构建的第一子线段即为AD。对于第二顶点B,确定的第二中点为E,也即第一顶点A和第三顶点C所在的边界线段AC的中点,这样,第二顶点B和第二中点E构建的第二子线段即为BE。对于第三顶点C,确定的第三中点为F,也即第一顶点A和第二顶点B所在的边界线段AB的中点,这样,第三顶点C和第三中点F构建的第三子线段即为CF。综上,第一子线段AD、第二子线段BE以及第三子线段CF便作为内部线段。
208、在边界线段中提取除第一子边界外的第二子边界和第三子边界,基于第二子边界、第三子边界和内部线段,向至少一个目标碰撞体做射线检测,当边界线段和内部线段的射线检测指示未发生碰撞时,执行下述步骤209。当边界线段和内部线段中任一线段的射线检测指示发生碰撞时,执行下述步骤210。
在本发明实施例中,在获取到内部线段后,由于第一子边界的射线检测已经指示未发生碰撞,因此,在边界线段中提取除第一子边界外的第二子边界和第三子边界,基于第二子边界、第三子边界和内部线段,向至少一个目标碰撞体做射线检测,并根据射线检测返回的结果依次确定是否与至少一个目标碰撞体发生了碰撞。
当边界线段和内部线段的射线检测指示未发生碰撞时,表示该待处理三角面是完全处于其他实体模型的内部的,属于摄像机在正常视角下无法看见的三角面,需要剔除,也即执行下述步骤209。而当边界线段和内部线段中任一线段的射线检测指示发生碰撞时,表示该待处理三角面并不完全处于其他实体模型的内部的,仍旧需要在后续对该三角面进行渲染等处理,不能直接剔除,也即执行下述步骤210。
209、当边界线段和内部线段的射线检测指示未发生碰撞时,在目标虚拟场景中将待处理三角面从待处理模型中剔除。
在本发明实施例中,当边界线段和内部线段的射线检测指示未发生碰撞时,表示该待处理三角面是完全处于其他实体模型的内部的,属于摄像机在正常视角下无法看见的三角面,需要剔除,因此,在目标虚拟拟场景中将待处理三角面从待处理模型中剔除。
210、当边界线段和内部线段中任一线段的射线检测指示发生碰撞时,结束当前流程,同时或顺序在待处理模型中选取除待处理三角面外的其他任一三角面作为新的待处理三角面,并重新基于新的待处理三角面的顶点向至少一个目标碰撞体做射线检测。
在本发明实施例中,当边界线段和内部线段中任一线段的射线检测指示发生碰撞时,表示该待处理三角面并不完全处于其他实体模型的内部的,仍旧需要在后续对该三角面进行渲染等处理,不能直接剔除,因此,结束当前流程,同时或顺序在待处理模型中选取除待处理三角面外的其他任一三角面作为新的待处理三角面,并重新基于新的待处理三角面的顶点向至少一个目标碰撞体做射线检测,具体过程与上述步骤203中的过程一致,此处不再进行赘述。
通过上述过程便完成了对当前选中的待处理三角面的处理。而实际上待处理模型是包括很多三角面的,因此,需要继续执行待处理模型中除待处理三角面外的其他三角面向至少一个目标碰撞体的射线检测,同时或顺序对待处理模型中的每一个三角面进行检测,确定是否需要将三角面剔除。确定剔除的三角面直接剔除即可,确定不能剔除的三角面按照原始位置保留即可,直至待处理模型中全部三角面完成处理。
待处理模型中全部三角面完成处理后,该待处理模型便完成了整个处理过程,在目标虚拟场景中保存处理后的待处理模型。而目标虚拟场景中还存在其他需要处理的待处理模型,因此,继续对目标虚拟场景中除待处理模型外的其他实体模型进行三角面的射线检测以及剔除,直至目标虚拟场景中的多个实体模型均完成处理。需要说明的是,目标虚拟场景中的多个实体模型可以同时或顺序进行三角面的剔除操作,也即并行对多个实体模型进行处理,无需等待上一个实体模型处理完毕。或者,还可以顺序执行实体模型的处理,也即当前的实体模型处理完毕后再执行下一个实体模型的处理,本申请对同时还是顺序对实体模型进行处理不做具体限定。
当目标虚拟场景中全部的待处理模型均处理完毕后,需要将处理后的目标虚拟场景中生成的多个网格碰撞体全部清除,保存清除后的目标虚拟场景,后续可以根据当前目标虚拟场景中保留下来的三角面进行后续的渲染工作。
综上所述,整个虚拟场景的数据处理过程总结如下:
参见图2D,生成虚拟场景中所有需要参与剔除的实体模型的网格碰撞体,选取实体模型中的任一实体模型作为待处理模型,根据待处理模型的包围盒做射线检测,确定该待处理模型附近的目标碰撞体。选取待处理模型中的任一三角面作为待处理三角面,取待处理三角面的第一顶点,基于第一顶点向目标碰撞体做射线检测,如果没有发生碰撞,则表示第一顶点不在其他实体模型的内部,保留该待处理三角面并继续处理其他的三角面。如果发生了碰撞且碰撞点的法线方向和射线方向点积小于0,则表示该第一顶点不在其他实体模型的内部,保留该待处理三角面并继续处理其他的三角面。如果发生了碰撞且碰撞点的法线方向和射线方向点积大于等于0,则使用待处理三角面中第一顶点所处的第一子边界向目标碰撞体做射线检测。如果发生碰撞,表示待处理三角面不完全在其他实体模型内部,则保留该待处理三角面并继续处理其他的三角面。如果没有发生碰撞,则构建待处理三角面的内部线段,基于除第一子边界外的其他子边界以及内部线段,向目标碰撞体做射线检测。如果发生碰撞,表示待处理三角面不完全在其他实体模型内部,则保留该待处理三角面并继续处理其他的三角面。如果没有发生碰撞,表示待处理三角面完全在其他实体模型内部,属于摄像机在正常视角下无法看见的三角面,直接剔除。重复执行上述过程,对待处理模型中的全部三角面进行保留以及剔除操作,并保存剔除三角面后的待处理模型。当目标虚拟场景中全部的实体模型均完成三角面的剔除后,将生成的全部网格碰撞体删除,保存目标虚拟场景即可。
本发明实施例提供的方法,在目标虚拟场景中为待处理模型确定附近的目标碰撞体,分别基于待处理模型的待处理三角面的顶点、边界线段和内部线段,向目标碰撞体做射线检测,从而确定待处理三角面是否处于其他实体模型内部,确定是否需要将待处理三角面剔除,可以在游戏的制作阶段直接剔除虚拟场景中每个实体模型在正常摄像机视角下无法看见的三角面,无需提交绘制每个实体模型的全部三角面,在不改变开发人员工作流程的情况下,极大的减少需要提交绘制的三角面数量,减小资源量,使游戏在实际运行时的场景资源数量以及占用内存减少,优化游戏运行时的效率。
进一步地,作为图1所述方法的具体实现,本发明实施例提供了一种虚拟场景的数据处理装置,如图3A所示,所述装置包括:确定模块301,检测模块302和剔除模块303。
该确定模块301,用于在目标虚拟场景中为待处理模型确定至少一个目标碰撞体,所述至少一个目标碰撞体是基于所述待处理模型向所述目标虚拟场景中的多个网格碰撞体做射线检测后命中的网格碰撞体,所述多个网格碰撞体是根据所述目标虚拟场景中的多个实体模型生成的;
该检测模块302,用于选取所述待处理模型中的任一三角面作为待处理三角面,将所述待处理三角面中的任一顶点作为第一顶点,基于所述第一顶点,向所述至少一个目标碰撞体做射线检测;
该检测模块302,还用于在所述第一顶点的射线检测指示发生碰撞且发生碰撞的碰撞点的法线方向和射线方向的点积大于等于默认取值的情况下,基于所述待处理三角面的边界线段和内部线段,向所述至少一个目标碰撞体做射线检测,所述内部线段基于所述边界线段的中点和所述待处理三角面的顶点构建;
该剔除模块303,用于当所述边界线段和所述内部线段的射线检测指示未发生碰撞时,在所述目标虚拟场景中将所述待处理三角面从所述待处理模型中剔除。
在具体的应用场景中,如图3B所示,该确定模块301,包括:确定单元3011,生成单元3012,构建单元3013和检测单元3014。
该确定单元3011,用于确定所述目标虚拟场景包括的所述多个实体模型;
该生成单元3012,用于根据所述多个实体模型的顶点信息,生成多个网格碰撞体;
该构建单元3013,用于选取所述多个实体模型中的任一实体模型作为所述待处理模型,构建所述待处理模型的包围盒;
该检测单元3014,用于基于所述包围盒向所述多个网格碰撞体做射线检测,在所述多个网格碰撞体中确定所述射线检测指示发生碰撞的网格碰撞体作为所述至少一个目标碰撞体。
在具体的应用场景中,如图3C所示,该装置还包括:第一结束模块304。
该第一结束模块304,用于在所述第一顶点的射线检测指示未发生碰撞或发生碰撞的所述碰撞点的法线方向和射线方向的点积小于所述默认取值的情况下,结束当前流程;
该检测模块302,还用于同时或顺序在所述待处理模型中选取除所述待处理三角面外的其他任一三角面作为新的待处理三角面,并重新基于所述新的待处理三角面的顶点向所述至少一个目标碰撞体做射线检测。
在具体的应用场景中,如图3D所示,该检测模块302,包括:检测单元3021和构建单元3022。
该检测单元3021,用于在所述待处理三角面的边界线段中提取第一子边界,基于所述第一子边界,向所述至少一个目标碰撞体做射线检测,所述第一子边界是所述边界线段中以所述第一顶点为端点的任一边界线段;
该构建单元3022,用于在所述第一子边界的射线检测指示未发生碰撞的情况下,采用所述边界线段的中点和所述待处理三角面的顶点构建所述内部线段;
该检测单元3021,还用于在所述边界线段中提取除所述第一子边界外的第二子边界和第三子边界,基于所述第二子边界、第三子边界和所述内部线段,向所述至少一个目标碰撞体做射线检测。
在具体的应用场景中,该构建单元3022,用于分别获取所述第一子边界、所述第二子边界和所述第三子边界的三个中点;在所述待处理三角面中提取除所述第一顶点外的第二顶点和第三顶点;对于所述第一顶点,在所述三个中点中提取所述第一顶点对应的第一中点,构建以所述第一顶点和所述第一中点为端点的线段作为所述第一子线段,所述第一中点是所述第二顶点和所述第三顶点所在的边界线段的中点;对于所述第二顶点,在所述三个中点中提取所述第二顶点对应的第二中点,构建以所述第二顶点和所述第二中点为端点的线段作为所述第二子线段,所述第二中点是所述第一顶点和所述第三顶点所在的边界线段的中点;对于所述第三顶点,在所述三个中点中提取所述第三顶点对应的第三中点,构建以所述第三顶点和所述第三中点为端点的线段作为所述第三子线段,所述第三中点是所述第一顶点和所述第二顶点所在的边界线段的中点;将所述第一子线段、所述第二子线段和所述第三子线段作为所述内部线段。
在具体的应用场景中,如图3E所示,该检测模块302,还包括:保留单元3023。
该保留单元3023,用于当所述第一子边界的射线检测指示发生碰撞时,结束当前流程;
该检测单元3021,还用于同时或顺序在在所述待处理模型中选取除所述待处理三角面外的其他任一三角面作为新的待处理三角面,并重新基于所述新的待处理三角面的顶点向所述至少一个目标碰撞体做射线检测。
在具体的应用场景中,如图3F所示,该装置还包括:第二结束模块305。
该第二结束模块305,用于当所述边界线段和所述内部线段中任一线段的射线检测指示发生碰撞时,结束当前流程;
该检测模块302,用于同时或顺序在在所述待处理模型中选取除所述待处理三角面外的其他任一三角面作为新的待处理三角面,并重新基于所述新的待处理三角面的顶点向所述至少一个目标碰撞体做射线检测。
在具体的应用场景中,如图3G所示,该装置还包括:保存模块306和清除模块307。
该检测模块302,还用于继续同时或顺序在执行所述待处理模型中除所述待处理三角面外的其他三角面向所述至少一个目标碰撞体的射线检测,直至所述待处理模型中全部三角面完成处理;
该保存模块306,用于在所述目标虚拟场景中保存处理后的所述待处理模型;
该检测模块302,还用于同时或顺序在对所述目标虚拟场景中除所述待处理模型外的其他实体模型进行三角面的射线检测以及剔除,直至所述目标虚拟场景中多个实体模型均完成处理;
该清除模块307,用于将处理后的所述目标虚拟场景中生成的多个网格碰撞体全部清除,保存清除后的所述目标虚拟场景。
本发明实施例提供的装置,在目标虚拟场景中为待处理模型确定附近的目标碰撞体,分别基于待处理模型的待处理三角面的顶点、边界线段和内部线段,向目标碰撞体做射线检测,从而确定待处理三角面是否处于其他实体模型内部,确定是否需要将待处理三角面剔除,可以在游戏的制作阶段直接剔除虚拟场景中每个实体模型在正常摄像机视角下无法看见的三角面,无需提交绘制每个实体模型的全部三角面,在不改变开发人员工作流程的情况下,极大的减少需要提交绘制的三角面数量,减小资源量,使游戏在实际运行时的场景资源数量以及占用内存减少,优化游戏运行时的效率。
需要说明的是,本发明实施例提供的一种虚拟场景的数据处理装置所涉及各功能单元的其他相应描述,可以参考图1和图2A中的对应描述,在此不再赘述。
在示例性实施例中,参见图4,还提供了一种设备,该设备400包括通信总线、处理器、存储器和通信接口,还可以包括、输入输出接口和显示设备,其中,各个功能单元之间可以通过总线完成相互间的通信。该存储器存储有计算机程序,处理器,用于执行存储器上所存放的程序,执行上述实施例中的虚拟场景的数据处理方法。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的虚拟场景的数据处理方法的步骤。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本申请所必须的。
本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本申请序号仅仅为了描述,不代表实施场景的优劣。
以上公开的仅为本申请的几个具体实施场景,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。
Claims (11)
1.一种虚拟场景的数据处理方法,其特征在于,包括:
在目标虚拟场景中为待处理模型确定至少一个目标碰撞体,所述至少一个目标碰撞体是基于所述待处理模型的包围盒向所述目标虚拟场景中的多个网格碰撞体做射线检测后命中的网格碰撞体,所述多个网格碰撞体是根据所述目标虚拟场景中的多个实体模型的顶点信息生成的,所述待处理模型是所述多个实体模型中的任一实体模型;
选取所述待处理模型中的任一三角面作为待处理三角面,将所述待处理三角面中的任一顶点作为第一顶点,基于所述第一顶点,向所述至少一个目标碰撞体做射线检测;
在所述第一顶点的射线检测指示发生碰撞且发生碰撞的碰撞点的法线方向和射线方向的点积大于等于默认取值的情况下,基于所述待处理三角面的边界线段和内部线段,向所述至少一个目标碰撞体做射线检测,所述内部线段基于所述边界线段的中点和所述待处理三角面的顶点构建;
当所述边界线段和所述内部线段的射线检测指示未发生碰撞时,在所述目标虚拟场景中将所述待处理三角面从所述待处理模型中剔除。
2.根据权利要求1所述的方法,其特征在于,所述在目标虚拟场景中为待处理模型确定至少一个目标碰撞体,包括:
确定所述目标虚拟场景包括的所述多个实体模型;
根据所述多个实体模型的顶点信息,生成多个网格碰撞体;
选取所述多个实体模型中的任一实体模型作为所述待处理模型,构建所述待处理模型的包围盒;
基于所述包围盒向所述多个网格碰撞体做射线检测,在所述多个网格碰撞体中确定所述射线检测指示发生碰撞的网格碰撞体作为所述至少一个目标碰撞体。
3.根据权利要求1所述的方法,其特征在于,所述选取所述待处理模型中的任一三角面作为待处理三角面,将所述待处理三角面中的任一顶点作为第一顶点,基于所述第一顶点,向所述至少一个目标碰撞体做射线检测之后,所述方法还包括:
在所述第一顶点的射线检测指示未发生碰撞或发生碰撞的所述碰撞点的法线方向和射线方向的点积小于所述默认取值的情况下,结束当前流程;
同时或顺序在所述待处理模型中选取除所述待处理三角面外的其他任一三角面作为新的待处理三角面,并重新基于所述新的待处理三角面的顶点向所述至少一个目标碰撞体做射线检测。
4.根据权利要求1所述的方法,其特征在于,所述基于所述待处理三角面的边界线段和内部线段,向所述至少一个目标碰撞体做射线检测,包括:
在所述待处理三角面的边界线段中提取第一子边界,基于所述第一子边界,向所述至少一个目标碰撞体做射线检测,所述第一子边界是所述边界线段中以所述第一顶点为端点的任一边界线段;
在所述第一子边界的射线检测指示未发生碰撞的情况下,采用所述边界线段的中点和所述待处理三角面的顶点构建所述内部线段;
在所述边界线段中提取除所述第一子边界外的第二子边界和第三子边界,基于所述第二子边界、第三子边界和所述内部线段,向所述至少一个目标碰撞体做射线检测。
5.根据权利要求4所述的方法,其特征在于,所述采用所述边界线段的中点和所述待处理三角面的顶点构建所述内部线段,包括:
分别获取所述第一子边界、所述第二子边界和所述第三子边界的三个中点;
在所述待处理三角面中提取除所述第一顶点外的第二顶点和第三顶点;
对于所述第一顶点,在所述三个中点中提取所述第一顶点对应的第一中点,构建以所述第一顶点和所述第一中点为端点的线段作为所述第一子线段,所述第一中点是所述第二顶点和所述第三顶点所在的边界线段的中点;
对于所述第二顶点,在所述三个中点中提取所述第二顶点对应的第二中点,构建以所述第二顶点和所述第二中点为端点的线段作为所述第二子线段,所述第二中点是所述第一顶点和所述第三顶点所在的边界线段的中点;
对于所述第三顶点,在所述三个中点中提取所述第三顶点对应的第三中点,构建以所述第三顶点和所述第三中点为端点的线段作为所述第三子线段,所述第三中点是所述第一顶点和所述第二顶点所在的边界线段的中点;
将所述第一子线段、所述第二子线段和所述第三子线段作为所述内部线段。
6.根据权利要求4所述的方法,其特征在于,所述在所述待处理三角面的边界线段中提取第一子边界,基于所述第一子边界,向所述至少一个目标碰撞体做射线检测之后,所述方法还包括:
当所述第一子边界的射线检测指示发生碰撞时,结束当前流程;
同时或顺序在所述待处理模型中选取除所述待处理三角面外的其他任一三角面作为新的待处理三角面,并重新基于所述新的待处理三角面的顶点向所述至少一个目标碰撞体做射线检测。
7.根据权利要求1所述的方法,其特征在于,所述在所述第一顶点的射线检测指示发生碰撞且发生碰撞的碰撞点的法线方向和射线方向的点积大于等于默认取值的情况下,基于所述待处理三角面的边界线段和内部线段,向所述至少一个目标碰撞体做射线检测之后,所述方法还包括:
当所述边界线段和所述内部线段中任一线段的射线检测指示发生碰撞时,结束当前流程;
同时或顺序在所述待处理模型中选取除所述待处理三角面外的其他任一三角面作为新的待处理三角面,并重新基于所述新的待处理三角面的顶点向所述至少一个目标碰撞体做射线检测。
8.根据权利要求1所述的方法,其特征在于,所述当所述边界线段和所述内部线段的射线检测指示未发生碰撞时,在所述目标虚拟场景中将所述待处理三角面从所述待处理模型中剔除之后,所述方法还包括:
继续同时或顺序执行所述待处理模型中除所述待处理三角面外的其他三角面向所述至少一个目标碰撞体的射线检测,直至所述待处理模型中全部三角面完成处理;
在所述目标虚拟场景中保存处理后的所述待处理模型;
同时或顺序对所述目标虚拟场景中除所述待处理模型外的其他实体模型进行三角面的射线检测以及剔除,直至所述目标虚拟场景中多个实体模型均完成处理;
将处理后的所述目标虚拟场景中生成的多个网格碰撞体全部清除,保存清除后的所述目标虚拟场景。
9.一种虚拟场景的数据处理装置,其特征在于,包括:
确定模块,用于在目标虚拟场景中为待处理模型确定至少一个目标碰撞体,所述至少一个目标碰撞体是基于所述待处理模型的包围盒向所述目标虚拟场景中的多个网格碰撞体做射线检测后命中的网格碰撞体,所述多个网格碰撞体是根据所述目标虚拟场景中的多个实体模型的顶点信息生成的,所述待处理模型是所述多个实体模型中的任一实体模型;
检测模块,用于选取所述待处理模型中的任一三角面作为待处理三角面,将所述待处理三角面中的任一顶点作为第一顶点,基于所述第一顶点,向所述至少一个目标碰撞体做射线检测;
所述检测模块,还用于在所述第一顶点的射线检测指示发生碰撞且发生碰撞的碰撞点的法线方向和射线方向的点积大于等于默认取值的情况下,基于所述待处理三角面的边界线段和内部线段,向所述至少一个目标碰撞体做射线检测,所述内部线段基于所述边界线段的中点和所述待处理三角面的顶点构建;
剔除模块,用于当所述边界线段和所述内部线段的射线检测指示未发生碰撞时,在所述目标虚拟场景中将所述待处理三角面从所述待处理模型中剔除。
10.一种虚拟场景的数据处理设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述方法的步骤。
11.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010973938.7A CN111921202B (zh) | 2020-09-16 | 2020-09-16 | 虚拟场景的数据处理方法、装置、设备及可读存储介质 |
PCT/CN2020/130372 WO2022057079A1 (zh) | 2020-09-16 | 2020-11-20 | 虚拟场景的数据处理方法、装置、计算机程序及可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010973938.7A CN111921202B (zh) | 2020-09-16 | 2020-09-16 | 虚拟场景的数据处理方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111921202A CN111921202A (zh) | 2020-11-13 |
CN111921202B true CN111921202B (zh) | 2021-01-08 |
Family
ID=73334946
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010973938.7A Active CN111921202B (zh) | 2020-09-16 | 2020-09-16 | 虚拟场景的数据处理方法、装置、设备及可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111921202B (zh) |
WO (1) | WO2022057079A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111921202B (zh) * | 2020-09-16 | 2021-01-08 | 成都完美天智游科技有限公司 | 虚拟场景的数据处理方法、装置、设备及可读存储介质 |
CN112233253B (zh) * | 2020-12-14 | 2021-03-16 | 成都完美时空网络技术有限公司 | 虚拟球体的形变控制方法、装置、电子设备及存储介质 |
CN113244622B (zh) * | 2021-06-22 | 2022-11-08 | 腾讯科技(深圳)有限公司 | 碰撞数据处理方法和装置、存储介质及电子设备 |
CN114419299A (zh) * | 2022-01-21 | 2022-04-29 | 北京字跳网络技术有限公司 | 虚拟物体的生成方法、装置、设备及存储介质 |
CN115187589B (zh) * | 2022-09-07 | 2022-12-09 | 腾讯科技(深圳)有限公司 | 多边形修正及生成方法、装置、设备及可读存储介质 |
CN115861500B (zh) * | 2022-12-09 | 2023-08-18 | 上海哔哩哔哩科技有限公司 | 2d模型碰撞体生成方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108434734A (zh) * | 2018-01-30 | 2018-08-24 | 网易(杭州)网络有限公司 | 游戏场景中虚拟资源处理方法、装置、终端和存储介质 |
CN109236298A (zh) * | 2018-10-23 | 2019-01-18 | 西安科技大学 | 一种基于vr的煤矿综采设备碰撞检测与预警方法 |
CN110634177A (zh) * | 2018-06-21 | 2019-12-31 | 华为技术有限公司 | 一种物体建模运动方法、装置与设备 |
CN111105491A (zh) * | 2019-11-25 | 2020-05-05 | 腾讯科技(深圳)有限公司 | 场景渲染方法、装置、计算机可读存储介质和计算机设备 |
CN111514586A (zh) * | 2020-04-08 | 2020-08-11 | 完美世界(北京)软件科技发展有限公司 | 运动模糊的实现方法及装置、存储介质、电子装置 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100889602B1 (ko) * | 2006-12-05 | 2009-03-20 | 한국전자통신연구원 | 광선 추적을 위한 광선-삼각형 충돌 처리 방법 및 장치 |
US9196083B2 (en) * | 2012-01-16 | 2015-11-24 | Intel Corporation | Time-continuous collision detection using 3D rasterization |
CN105719310B (zh) * | 2014-08-13 | 2019-12-20 | 北京毕普创新科技有限公司 | 碰撞检测方法及装置 |
CN108460832B (zh) * | 2018-03-02 | 2020-05-01 | 盈嘉互联(北京)科技有限公司 | 一种基于建筑信息模型的外壳提取方法 |
CN109147050B (zh) * | 2018-08-02 | 2022-07-15 | 苏州蜗牛数字科技股份有限公司 | 基于Unity引擎地形系统的道路网格创建方法及装置 |
CN109745704B (zh) * | 2018-11-19 | 2022-09-09 | 苏州蜗牛数字科技股份有限公司 | 一种体素地形的管理方法 |
CN109783842B (zh) * | 2018-12-05 | 2022-07-15 | 苏州蜗牛数字科技股份有限公司 | 一种基于体素数据的射线检测方法及系统 |
CN109671154B (zh) * | 2018-12-11 | 2021-05-25 | 中南大学 | 三角网格表示的曲面非迭代重新网格化方法 |
CN110379240A (zh) * | 2019-06-24 | 2019-10-25 | 南方电网调峰调频发电有限公司 | 一种基于虚拟现实技术的水电站检修仿真培训系统 |
CN110368694B (zh) * | 2019-08-22 | 2023-05-16 | 网易(杭州)网络有限公司 | 游戏场景的数据处理方法、装置、设备及可读存储介质 |
CN111062980B (zh) * | 2019-11-22 | 2022-03-25 | 西安理工大学 | 一种软体碰撞检测方法 |
CN111167120A (zh) * | 2019-12-31 | 2020-05-19 | 网易(杭州)网络有限公司 | 游戏中虚拟模型的处理方法和装置 |
CN111523159B (zh) * | 2020-04-16 | 2023-04-28 | 深圳云甲科技有限公司 | 网格模型的塑形方法、终端及存储介质 |
CN111652908A (zh) * | 2020-04-17 | 2020-09-11 | 国网山西省电力公司晋中供电公司 | 一种虚拟现实场景的操作碰撞检测方法 |
CN111921202B (zh) * | 2020-09-16 | 2021-01-08 | 成都完美天智游科技有限公司 | 虚拟场景的数据处理方法、装置、设备及可读存储介质 |
-
2020
- 2020-09-16 CN CN202010973938.7A patent/CN111921202B/zh active Active
- 2020-11-20 WO PCT/CN2020/130372 patent/WO2022057079A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108434734A (zh) * | 2018-01-30 | 2018-08-24 | 网易(杭州)网络有限公司 | 游戏场景中虚拟资源处理方法、装置、终端和存储介质 |
CN110634177A (zh) * | 2018-06-21 | 2019-12-31 | 华为技术有限公司 | 一种物体建模运动方法、装置与设备 |
CN109236298A (zh) * | 2018-10-23 | 2019-01-18 | 西安科技大学 | 一种基于vr的煤矿综采设备碰撞检测与预警方法 |
CN111105491A (zh) * | 2019-11-25 | 2020-05-05 | 腾讯科技(深圳)有限公司 | 场景渲染方法、装置、计算机可读存储介质和计算机设备 |
CN111514586A (zh) * | 2020-04-08 | 2020-08-11 | 完美世界(北京)软件科技发展有限公司 | 运动模糊的实现方法及装置、存储介质、电子装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2022057079A1 (zh) | 2022-03-24 |
CN111921202A (zh) | 2020-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111921202B (zh) | 虚拟场景的数据处理方法、装置、设备及可读存储介质 | |
CN110443893B (zh) | 大规模建筑场景渲染加速方法、系统、装置和存储介质 | |
US10504253B2 (en) | Conservative cell and portal graph generation | |
CN110990516B (zh) | 地图数据的处理方法、装置和服务器 | |
US10417803B2 (en) | Multiple-pass rendering of a digital three-dimensional model of a structure | |
WO2013138061A1 (en) | Visibility-based state updates in graphical processing units | |
CN107578467B (zh) | 一种医疗器械三维建模方法及装置 | |
CN111063032B (zh) | 模型渲染方法、系统及电子装置 | |
JP6721333B2 (ja) | オブジェクトのセットの視点の選択 | |
CN114494649B (zh) | 有限元网格划分几何清理方法、设备和存储介质 | |
CN107203962B (zh) | 一种利用2d图片制作伪3d图像的方法及电子设备 | |
CN112825199A (zh) | 碰撞检测方法、装置、设备及存储介质 | |
US20080266293A1 (en) | Method for converting polygonal surfaces to levelsets | |
CN110751732B (zh) | 一种2d图像转3d图像的方法 | |
US20230260211A1 (en) | Three-Dimensional Point Cloud Generation Method, Apparatus and Electronic Device | |
CN112686992A (zh) | 用于智慧城市occ树的几何图形视锥体实现方法、装置及存储介质 | |
CN107393019B (zh) | 一种基于粒子的布料模拟方法与装置 | |
CN114418829A (zh) | 静态场景遮挡处理方法、装置、电子设备及可读介质 | |
CN115690364A (zh) | Ar模型的获取方法、电子设备和可读存储介质 | |
CN112200908B (zh) | 一种用于智能放煤的散体顶煤颗粒三维重建方法及系统 | |
CN112837416A (zh) | 基于三角剖分的多边形渲染方法、装置及存储介质 | |
CN108346170A (zh) | 电子地图的缝隙填充方法及装置 | |
US11488347B2 (en) | Method for instant rendering of voxels | |
CN112991451B (zh) | 图像识别方法、相关装置及计算机程序产品 | |
CN116758241A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |