CN112516596A - 一种三维场景生成方法、装置、设备和存储介质 - Google Patents

一种三维场景生成方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN112516596A
CN112516596A CN202011547610.5A CN202011547610A CN112516596A CN 112516596 A CN112516596 A CN 112516596A CN 202011547610 A CN202011547610 A CN 202011547610A CN 112516596 A CN112516596 A CN 112516596A
Authority
CN
China
Prior art keywords
scene
grid
terrain
scene element
elements
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
Application number
CN202011547610.5A
Other languages
English (en)
Other versions
CN112516596B (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.)
Shanghai Mihayou Network Science And Technology Co ltd
Original Assignee
Shanghai Mihayou Network Science And Technology 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 Shanghai Mihayou Network Science And Technology Co ltd filed Critical Shanghai Mihayou Network Science And Technology Co ltd
Priority to CN202011547610.5A priority Critical patent/CN112516596B/zh
Publication of CN112516596A publication Critical patent/CN112516596A/zh
Application granted granted Critical
Publication of CN112516596B publication Critical patent/CN112516596B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02ATECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE
    • Y02A90/00Technologies having an indirect contribution to adaptation to climate change
    • Y02A90/10Information and communication technologies [ICT] supporting adaptation to climate change, e.g. for weather forecasting or climate simulation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明实施例公开了一种三维场景生成方法、装置、设备和存储介质,该方法包括:获取三维场景中待生成的每个场景元素对应的元素数据,场景元素包括地形场景元素和非地形场景元素;根据非地形场景元素对应的元素数据,确定各个非地形场景元素中的不可交互场景元素;基于场景底平面,对各个不可交互场景元素进行网格碰撞检测,确定出与地形场景元素可堆叠的不可交互场景元素,作为第一场景元素;基于预设高度投影方式和元素数据,将地形场景元素与各个第一场景元素进行组合投影,生成组合地形模型。通过本发明实施例的技术方案,可以提高三维场景的生成效率。

Description

一种三维场景生成方法、装置、设备和存储介质
技术领域
本发明实施例涉及计算机技术,尤其涉及一种三维场景生成方法、装置、设备和存储介质。
背景技术
随着计算机技术的快速发展,三维场景所包含的场景元素越来越丰富。例如,场景元素可以包括可与用户进行交互的场景元素(比如,可移动的箱子等),以及不可与用户进行交互的场景元素(比如,地形、地上的树木、石头等)。
目前,现有的三维场景生成方式是:根据手动输入的地形高度图绘制地形,生成地形模型,再将其余的每个场景元素的元素数据逐个进行加载,在相应位置上生成每个场景元素对应的场景模型,从而完成三维场景的生成。可见,现有的三维场景中的每个场景元素都是单独生成的,大大降低了三维场景生成效率。
发明内容
本发明实施例提供了一种三维场景生成方法、装置、设备和存储介质,以提高三维场景的生成效率。
第一方面,本发明实施例提供了一种三维场景生成方法,包括:
获取三维场景中待生成的每个场景元素对应的元素数据,所述场景元素包括地形场景元素和非地形场景元素;
根据所述非地形场景元素对应的元素数据,确定各个所述非地形场景元素中的不可交互场景元素;
基于场景底平面,对各个所述不可交互场景元素进行网格碰撞检测,确定出与所述地形场景元素可堆叠的不可交互场景元素,作为第一场景元素;
基于预设高度投影方式和所述元素数据,将所述地形场景元素与各个所述第一场景元素进行组合投影,生成组合地形模型。
第二方面,本发明实施例还提供了一种三维场景生成装置,包括:
元素数据获取模块,用于获取三维场景中待生成的每个场景元素对应的元素数据,所述场景元素包括地形场景元素和非地形场景元素;
不可交互场景元素确定模块,用于根据所述非地形场景元素对应的元素数据,确定各个所述非地形场景元素中的不可交互场景元素;
第一场景元素确定模块,用于基于场景底平面,对各个所述不可交互场景元素进行网格碰撞检测,确定出与所述地形场景元素可堆叠的不可交互场景元素,作为第一场景元素;
组合地形模型生成模块,用于基于高度投影方式和所述元素数据,将所述地形场景元素与各个所述第一场景元素进行组合投影,生成组合地形模型。
第三方面,本发明实施例还提供了一种电子设备,所述电子设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任意实施例所提供的三维场景生成方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如本发明任意实施例所提供的三维场景生成方法。
上述发明中的实施例具有如下优点或有益效果:
通过根据三维场景中待生成的每个非地形场景元素对应的元素数据,确定各个非地形场景元素中的不可交互场景元素,并基于场景底平面,对各个不可交互场景元素进行网格碰撞检测,确定出与地形场景元素可堆叠的不可交互场景元素,作为第一场景元素,基于预设高度投影方式和元素数据,将三维场景中的地形场景元素与各个第一场景元素进行组合投影,生成组合地形模型,从而可以将三维场景中部分的不可交互场景元素作为地形的一部分,与地形场景元素一起生成,获得组合地形模型,进而大大提高了三维场景的生成效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的一种三维场景生成方法的流程图;
图2是本发明实施例二提供的一种三维场景生成方法的流程图;
图3是本发明实施例三提供的一种三维场景生成方法的流程图;
图4是本发明实施例三所涉及的一种网格合并过程的示例;
图5是本发明实施例三所涉及的一种待合并三角面的相交检测过程的示例;
图6是本发明实施例三所涉及的一种网格重新构造过程的示例;
图7是本发明实施例三所涉及的一种冗余三角面剔除过程的示例;
图8是本发明实施例四提供的一种三维场景生成装置的结构示意图;
图9是本发明实施例五提供的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种三维场景生成方法的流程图,本实施例可适用于任意需要生成三维场景的情况,尤其是可以用于生成游戏关卡对应的三维场景的情况。该方法可以由三维场景生成装置来执行,该装置可以由软件和/或硬件的方式来实现,集成于电子设备中。如图1所示,该方法具体包括以下步骤:
S110、获取三维场景中待生成的每个场景元素对应的元素数据,场景元素包括地形场景元素和非地形场景元素。
其中,三维场景可以是指需要构建三维模型的场景,比如三维游戏中的游戏关卡。场景元素可以是指三维场景中的每个待构建的三维物体。例如,场景元素可以但不限于地形、石头、树木、墙体等。场景元素对应的元素数据可以包括场景元素数据库中的预设元素数据和用户基于场景构建需求所输入的自定义元素数据。预设元素数据可以包括:每个场景元素对应的网格信息、材质信息和交互信息等。网格信息可以是指场景元素对应的三维模型的结构信息。材质信息可以是指场景元素显示的颜色、纹理、透明度等用于表示物体表面特性的信息。自定义元素数据可以包括:三维场景中需要构建的各个场景元素以及每个场景元素在三维场景中所处于的位置信息。地形场景元素可以是指三维场景中的大地。非地形场景元素可以是指三维场景中除了地形场景元素之外的其余场景元素。
具体地,可以预先配置每个预设场景元素的预设元素数据,并将配置的各个预设元素数据存储至场景元素数据库中。当需要生成三维场景时,用户可以基于业务需求输入待生成三维场景所需的各个场景元素以及每个场景元素在三维场景中所处于的位置信息,并基于用户输入的场景元素,从场景元素数据库中可以获取所输入的每个场景元素所对应的预设元素数据,从而可以获得待生成的每个场景元素对应的元素数据。
S120、根据非地形场景元素对应的元素数据,确定各个非地形场景元素中的不可交互场景元素。
其中,不可交互场景元素可以是指三维场景中不能与用户进行交互的非地形场景元素。例如,地上的树木、石头等。需要说明的是,地形场景元素本身也是一个不可交互场景元素。
具体地,可以通过检测每个非地形场景元素对应的元素数据中是否包含交互信息的方式确定出每个非地形场景元素是否为不可交互场景元素。例如,若非地形场景元素对应的元素数据中包含交互信息,则表明该非地形场景元素是可以基于交互信息进行交互的,此时可以确定该非地形场景元素是可交互场景元素。若非地形场景元素对应的元素数据中不包含交互信息,则表明该非地形场景元素不能与用户进行交互,此时可以确定该非地形场景元素是不可交互场景元素,从而可以对各个非地形场景元素进行分类,获得各个非地形场景元素中的所有不可交互场景元素。
S130、基于场景底平面,对各个不可交互场景元素进行网格碰撞检测,确定出与地形场景元素可堆叠的不可交互场景元素,作为第一场景元素。
其中,场景底平面可以是指三维场景中的地平面,例如,在三维场景对应的世界坐标系下,场景底平面可以是指Z值为零的XY平面。第一场景元素可以是指与地形场景元素相接触的不可交互场景元素,以便与地形场景元素一起堆叠组合生成。
具体地,可以利用unity的网格碰撞检测方式,基于场景底平面和每个不可交互场景元素的网格信息进行网格碰撞检测,从而确定出每个不可交互场景元素是否可以直接或者间接地与地形场景元素的地面相接触,以便获得后续可以与地形场景元素进行组合投影的其他不可交互场景元素。若检测到某个不可交互场景元素的网格与场景底平面存在网格碰撞,则表明该不可交互场景元素的底面与地形场景元素的地面相接触,此时可以将该不可交互场景元素作为第一场景元素。例如,该不可交互场景元素可以为地上的树木、草坪等。
S140、基于预设高度投影方式和元素数据,将地形场景元素与各个第一场景元素进行组合投影,生成组合地形模型。
其中,预设高度投影方式可以是指对地形场景元素与各个第一场景元素所组成的组合体中的每个位置点进行高度投影的方式。组合地形模型可以是指地形场景元素与各个第一场景元素组成的组合体所对应的三维模型。
具体地,由于各个第一场景元素的底面均与地形场景元素的地面完全接触,从而可以将各个第一场景元素作为地形的一部分,与地形场景元素一起组合投影生成,即作为地形(Terrain)一起生成,快速获得相应的组合地形模型,从而可以扩大Terrain系统的适用范围,并且无需单独生成地形场景元素和每个第一场景元素,节省开销,进而大大提高了三维场景的生成效率。
需要说明的是,对于三维场景中的各个可交互场景元素而言,由于每个可交互场景元素都是独立的,不可组合生成的,从而可以基于现有方式,将每个可交互场景元素对应的元素数据进行加载并生成相应的场景模型,以便可以直接生成三维场景中的各个可交互场景元素所对应的场景模型,进而保证三维场景生成的准确性。
本实施例的技术方案,通过根据三维场景中待生成的每个非地形场景元素对应的元素数据,确定各个非地形场景元素中的不可交互场景元素,并基于场景底平面,对各个不可交互场景元素进行网格碰撞检测,确定出与地形场景元素可堆叠的不可交互场景元素,作为第一场景元素,基于预设高度投影方式和元素数据,将三维场景中的地形场景元素与各个第一场景元素进行组合投影,生成组合地形模型,从而可以将三维场景中部分的不可交互场景元素作为地形的一部分,与地形场景元素一起生成,获得组合地形模型,进而大大提高了三维场景的生成效率。
在上述技术方案的基础上,S140可以包括:根据地形场景元素对应的位置信息和网格信息,在三维场景中相应位置上加载地形场景元素对应的网格;根据每个第一场景元素对应的位置信息和网格信息,在三维场景中相应位置上加载每个第一场景元素对应的网格;对加载的各个网格进行高度投影,生成地形高度图,并根据地形高度图生成组合地形;根据地形场景元素对应的位置信息和材质信息,以及各个第一场景元素对应的位置信息和材质信息,确定组合地形对应的材质通道图;基于材质通道图,对组合地形进行渲染,生成组合地形模型。
具体地,可以将地形场景元素对应的网格以及每个第一场景元素对应的网格均加载到三维场景中相应的展示位置上,从而可以初步构建出地形场景元素和每个第一场景元素所对应的三维模型。本实施例可以利用一块布,对加载的各个网格做高度投影,取出各个网格所组成的组合网格的表面,从而获得相应的地形高度图。相比于现有技术中的地形高度图的手动输入,本实施例可以自动生成地形高度图,无需手动输入,进一步提高了三维场景的生成效率。本实施例可以通过利用Terrain系统基于自动生成的地形高度图生成相应的组合地形,并且地形场景元素和所有第一场景元素中的交叠部分对于用户是不可见的,从而只需生成该交叠部分所相应的地形表面,无需生成内部具体的交叠构造,进一步也提高了三维场景的生成效率。根据地形场景元素对应的位置信息和材质信息,以及各个第一场景元素对应的位置信息和材质信息,可以确定出组合地形中的每个位置所对应的材质信息并进行拼接,从而可以获得相应的材质通道图,比如组合地形中的土场景是黑色,草场景是红色等。基于材质通道图可以对组合地形进行渲染,生成具有真实感的组合地形模型,从而实现了地形场景元素与各个第一场景元素的组合投影生成,大大提高了三维场景的生成效率。
实施例二
图2为本发明实施例二提供的一种三维场景生成方法的流程图,本实施例在上述各实施例的基础上,对“基于场景底平面,对各个不可交互场景元素进行网格碰撞检测,确定出与地形场景元素可堆叠的不可交互场景元素,作为第一场景元素”进行了优化。其中与上述各实施例相同或相应的术语的解释在此不再赘述。
参见图2,本实施例提供的三维场景生成方法具体包括以下步骤:
S210、获取三维场景中待生成的每个场景元素对应的元素数据,场景元素包括地形场景元素和非地形场景元素。
S220、根据非地形场景元素对应的元素数据,确定各个非地形场景元素中的不可交互场景元素。
S230、根据预先设置的每个不可交互场景元素对应的网格标签,对各个不可交互场景元素进行筛选,获得网格标签为基石网格的目标不可交互场景元素。
其中,网格标签可以是预先为场景元素数据库中的每个预设场景元素打上的,用于表征每个预设场景元素是否可以与地形场景元素完全接触。网格标签可以包括基石网格和非基石网格。基石网格可以是指预设场景元素的网格可以作为地面层基石,与地形场景元素完全接触,不会存在悬空点。非基石网格可以是指预设场景元素的网格不能作为地面层基石,会与地形场景元素之间存在悬空点。
具体地,可以从场景元素数据库中获取每个不可交互场景元素对应的网格标签,并将网格标签为基石网格的不可交互场景元素作为目标不可交互场景元素,从所有不可交互场景元素中首先筛选出可能与地形场景元素相接触的目标不可交互场景元素。由于目标不可交互场景元素可以基于业务需求在三维场景中的任意位置上进行展示,不一定与地面层接触,从而使得目标不可交互场景元素可能会与地形场景元素进行堆叠,也可能不会与地形场景元素进行堆叠,进而需要进行进一步判断。
需要说明的是,若不可交互场景元素对应的网格标签为非基石标签,则表明该不可交互场景元素无论展示在三维场景中的哪个位置上,该不可交互场景元素的底面下方一定会存在悬空点,不可与地形场景元素进行堆叠,此时可以直接将该不可交互场景元素作为与地形场景元素不可堆叠的第二场景元素。
示例性地,在S230之前,还可以包括:针对场景元素数据库中的每个预设场景元素而言,根据该预设场景元素对应的网格信息,确定该预设场景元素对应的各个网格顶点位置坐标信息;根据各个网格顶点位置坐标信息,检测该预设场景元素对应的每个网格顶点是否满足预设基石条件;若各个网格顶点均满足预设基石条件,则确定该预设场景元素对应的网格标签为基石网格,并存储该预设场景元素的底面位置信息;若存在至少一个网格顶点不满足预设基石条件,则确定该预设场景元素对应的网格标签为非基石网格。
其中,预设基石条件可以是预先设置的,预设场景元素的底面与地面层完全接触的条件。具体地,对于每个预设场景元素而言,可以根据该预设场景元素对应的网格信息,以网格中心为原点,确定出该网格中的每个网格顶点位置坐标信息。通过检测该预设场景元素的网格中的每个网格顶点是否满足预设基石条件确定出该预设场景元素的网格是否为基石网格。若检测出该网格中的所有网格顶点均满足预设基石条件,则表明该网格的底面可以与地面层完全接触,此时确定该预设场景元素对应的网格标签为基石网格。若检测出该网格中存在至少一个网格顶点不满足预设基石条件,则表明该网格的底面与地面层之间一定存在至少一个悬空点,此时可以确定出该预设场景元素对应的网格标签为非基石网格,从而对场景元素数据库中的每个预设场景元素打上相应的网格标签,以便后续可以更加快速地确定出底面下方不存在悬空点,可以与地形场景元素进行堆叠的不可交互场景元素,进而提高三维场景的生成效率。
需要说明的是,在预设场景元素的网格为基石网格时,该网格必然会存在与Z轴相垂直的底面,从而可以获得该底面各个特征点位置信息,并作为该预设场景元素的底面位置信息进行缓存,以便后续可以直接获取网格为基石网格的预设场景元素的底面位置信息,进一步提高场景生成效率。
示例性地,根据各个网格顶点位置坐标信息,检测该预设场景元素对应的每个网格顶点是否满足预设基石条件,可以包括:将该预设场景元素对应的每个网格顶点逐个作为第一网格顶点;检测第一网格顶点的X轴坐标值和Y轴坐标值是否均小于各个第二网格顶点的X轴坐标值和Y轴坐标值,其中,第二网格顶点是指与第一网格顶点处于同一平面象限内的,且Z轴坐标值小于第一网格顶点的Z轴坐标值的网格顶点;若是,则确定第一网格顶点满足预设基石条件,否则确定第一网格顶点不满足预设基石条件。
具体地,若检测到第一网格顶点的X轴坐标值小于每个第二网格顶点的X轴坐标值,并且第一网格顶点的Y轴坐标值也小于每个第二网格顶点的Y轴坐标值,则可以确定该第一网格顶点满足预设基石条件。若存在至少一个第二网格顶点的X轴坐标值大于第一网格顶点的X轴坐标值,或者至少一个第二网格顶点的Y轴坐标值大于第一网格顶点的Y轴坐标值,则可以直接确定出该第一网格顶点不满足预设基石条件。
S240、检测每个目标不可交互场景元素对应的目标网格是否与场景底平面存在网格碰撞,并将存在网格碰撞的目标不可交互场景元素添加至当前列表中。
具体地,可以基于每个目标不可交互场景元素在三维场景中所处于的位置信息和每个目标不可交互场景元素对应的目标网格信息,在三维场景对应的世界坐标系下,检测场景底平面是否与每个目标不可交互场景元素对应的目标网格相交,比如场景底平面处于目标不可交互场景元素对应的目标网格的内部,若是,则表明该目标不可交互场景元素与场景底平面存在网格碰撞,即该目标不可交互场景元素可以与地形场景元素进行堆叠,此时可以将该目标不可交互场景元素添加至当前列表中,从而可以从各个目标不可交互场景元素中首次筛选出与地形场景元素的底面直接接触的目标不可交互场景元素。
S250、检测当前剩余的各个目标不可交互场景元素中是否存在与当前列表中的至少一个目标不可交互场景元素存在网格碰撞的目标不可交互场景元素,若是,则进入步骤S260,若否,则进入步骤S270。
其中,当前剩余的各个目标不可交互场景元素可以是指当前未添加至当前列表中的目标不可交互场景元素。
具体地,可以检测当前剩余的每个目标不可交互场景元素是否与当前列表中的至少一个目标不可交互场景元素存在网格碰撞,以便从当前剩余的各个目标不可交互场景元素中确定出与地形场景元素的底面间接接触的目标不可交互场景元素。
示例性地,S250可以包括:针对当前剩余的每个目标不可交互场景元素而言,若检测到当前剩余的目标不可交互场景元素与当前列表中的至少一个目标不可交互场景元素存在网格交叠,则检测当前剩余的该目标不可交互场景元素的底面是否处于当前列表中存在网格交叠的目标不可交互场景元素的网格内部;若是,则确定当前剩余的该目标不可交互场景元素存在网格碰撞。
具体地,对于当前剩余的每个目标不可交互场景元素而言,可以检测当前剩余的该目标不可交互场景元素与当前列表中的至少一个目标不可交互场景元素是否存在网格交叠,即是否存在网格重叠部分,若是,则继续检测当前剩余的该目标不可交互场景元素的底面是否处于存在网格交叠的目标不可交互场景元素的网格内部,若是,则表明当前剩余的该目标不可交互场景元素通过当前列表中存在网格交叠的目标不可交互场景元素,间接地与地形场景元素相接触,此时可以将当前剩余的该目标不可交互场景元素确定为存在网格碰撞的目标不可交互场景元素,从而可以通过基于当前列表中的目标不可交互场景元素,从当前剩余的各个目标不可交互场景元素中确定出与地形场景元素间接接触的目标不可交互场景元素。
S260、将存在网格碰撞的当前剩余的目标不可交互场景元素添加至当前列表中,并基于更新后的当前剩余的目标不可交互场景元素和当前列表,返回执行S250的操作。
具体地,将从当前剩余的所有目标不可交互场景元素中,检测到的与当前列表中的至少一个目标不可交互场景元素存在网格碰撞的目标不可交互场景元素添加至当前列表中,以更新当前列表,使得当前列表中存储当前确定出的与地形场景元素可堆叠的所有目标不可交互场景元素,并将新添加至当前列表的目标不可交互场景元素从当前剩余的目标不可交互场景元素中删除,以更新当前剩余的目标不可交互场景元素。通过基于更新后的当前剩余的目标不可交互场景元素和当前列表,返回执行步骤S250的操作,确定出当前剩余的各个目标不可交互场景元素中是否还存在与地形场景元素间接接触的目标不可交互场景元素,直到当前剩余的各个目标不可交互场景元素与当前列表中的每个目标不可交互场景元素均不存在网格碰撞为止,从而可以通过循环方式依次确定出与地形场景元素可堆叠的所有目标不可交互场景元素。
S270、将当前列表中的每个目标不可交互场景元素确定为与地形场景元素可堆叠的第一场景元素。
具体地,在检测到当前剩余的各个目标不可交互场景元素中不存在与当前列表中的至少一个目标不可交互场景元素存在网格碰撞的目标不可交互场景元素,也就是,当前剩余的各个目标不可交互场景元素与当前列表中的每个目标不可交互场景元素均不存在网格碰撞时,可以将当前列表中的每个目标不可交互场景元素确定为与地形场景元素可堆叠的第一场景元素,从而获得与地形场景元素可直接或间接堆叠的所有目标不可交互场景元素。本实施例中通过利用unity的网格碰撞检测方式以及对网格标签的预先处理,可以更加快速准确地确定出可以与地形场景元素组合投影的第一场景元素,进一步提高了第一场景元素的生成效率和准确率。
需要说明的是,可以将当前剩余的每个目标不可交互场景元素,即未添加至当前列表的每个目标不可交互场景元素确定为与地形场景元素不可堆叠的第二场景元素。
S280、基于预设高度投影方式和元素数据,将地形场景元素与各个第一场景元素进行组合投影,生成组合地形模型。
本实施例的技术方案,通过根据预先设置的每个不可交互场景元素对应的网格标签,对各个不可交互场景元素进行筛选,获得网格标签为基石网格的目标不可交互场景元素,并检测每个目标不可交互场景元素对应的目标网格是否与场景底平面存在网格碰撞,并将存在网格碰撞的目标不可交互场景元素添加至当前列表中,从而可以获得与地形场景元素可直接堆叠的不可交互场景元素,并通过检测当前剩余的各个目标不可交互场景元素中是否存在与当前列表中的至少一个目标不可交互场景元素存在网格碰撞的目标不可交互场景元素,基于检测结果可以获得与地形场景元素可间接堆叠的不可交互场景元素,从而可以通过循环方式快速准确地确定出与地形场景元素可堆叠的所有第一场景元素,进一步提高了第一场景元素的生成效率和准确率。
实施例三
图3为本发明实施例三提供的一种三维场景生成方法的流程图,本实施例在上述各实施例的基础上,对与地形场景元素不可堆叠的各个不可交互场景元素所对应的三维组合模型的生成过程进行了详细描述。其中与上述各实施例相同或相应的术语的解释在此不再赘述。
参见图3,本实施例提供的三维场景生成方法具体包括以下步骤:
S310、获取三维场景中待生成的每个场景元素对应的元素数据,场景元素包括地形场景元素和非地形场景元素。
S320、根据非地形场景元素对应的元素数据,确定各个非地形场景元素中的不可交互场景元素。
S330、基于场景底平面,对各个不可交互场景元素进行网格碰撞检测,确定出与地形场景元素不可堆叠的不可交互场景元素,作为第二场景元素。
具体地,本实施例中基于场景底平面,对各个不可交互场景元素进行网格碰撞检测的过程可以参见上述实施例的详细描述。若检测到与场景底平面不存在网格直接碰撞,或者网格间接碰撞,则表明该不可交互场景元素的底面并不会与地形场景元素接触,无法将该不可交互场景元素与地形场景元素进行组合投影,此时可以将该不可交互场景元素作为第二场景元素。例如,该不可交互场景元素可以为地上的桥梁等。
S340、根据每个第二场景元素对应的位置信息和网格信息,在相应位置处加载每个第二场景元素对应的网格。
具体地,可以在每个第二场景元素对应的位置信息处加载相应的网格信息,从而获得各个第二场景元素对应的各个网格。
S350、基于预设网格合并方式,对各个第二场景元素对应的网格进行合并,获得目标网格。
其中,预设网格合并方式可以是预先设置的,将各个网格进行合并为一个网格的方式。例如,预设网格合并方式可以是但不限于区域腐蚀方式、边界缝合方式或者面片合并方式。其中,区域腐蚀方式容易切割出大量的碎小三角面。边界缝合方式在删除冗余三角面时容易产生过长的缝合线,导致拓扑结构改变。面片合并方式会容易改变网格特征。本实施例可以结合这三种方式设置一种新的预设网格合并方式,以克服现有合并方式的缺陷。例如,本实施例中的预设网格合并方式可以是以三角面切割为基础,将原三角面重新剖分为核心,根据剖分结果获得点与点关系、线与线关系,据此建立合并后的三角面,从而可以保留线与线的关系,更大程度地保留合并后的网格特征,并且不会产生过多的新点。
具体地,可以基于预设网格合并方式,对所有的第二场景元素对应的网格进行合并,获得合并后的目标网格。通过将各个第二场景元素对应的网格进行合并,可以减少生成第二场景元素的网格数量,从而降低关卡运行时的性能开销,避免出现关卡实际运行时的卡顿现象。
S360、对各个第二场景元素对应的UV坐标信息进行合并,确定目标UV坐标信息。
其中,UV坐标信息可以包括U和V两个坐标轴,用于表征第二场景元素对应的纹理贴图坐标。U代表横向坐标上的分布,V代表纵向坐标上的分布。
具体地,可以对所有第二场景元素对应的UV坐标信息进行合并,获得合并后的目标UV坐标信息,以便后续进行目标网格的统一渲染操作。
S370、根据各个第二场景元素对应的材质信息,对各个第二场景元素对应的贴图进行拼接,获得目标贴图。
具体地,将各个第二场景元素对应的贴图进行拼接为一个大的目标贴图,以便后续进行目标网格的统一渲染操作。
需要说明的是,此处不限定步骤S360和S370执行时的执行顺序,比如步骤S360和S370可以在步骤S350之后顺序执行,也可以在步骤S350之前执行。
S380、根据目标UV坐标信息和目标贴图,对目标网格进行渲染,生成各个第二场景元素对应的三维组合模型。
具体地,可以基于目标UV坐标信息和目标贴图,对目标网格中的每个位置进行渲染,从而获得各个第二场景元素对应的一个三维组合模型,完成了三维场景中的所有第二场景元素的生成操作,并且减少了网格数量,使得关卡实际运行时更加流畅,提升了用户体验。
本实施例的技术方案,通过基于预设网格合并方式,对与地形场景元素不可堆叠的各个第二场景元素对应的网格进行合并,获得目标网格,并对各个第二场景元素对应的UV坐标信息进行合并,确定目标UV坐标信息,以及根据各个第二场景元素对应的材质信息,对各个第二场景元素对应的贴图进行拼接,获得目标贴图,根据目标UV坐标信息和目标贴图,对目标网格进行渲染,生成各个第二场景元素对应的三维组合模型,从而可以减少生成第二场景元素的网格数量,降低了关卡运行时的性能开销,使得关卡实际运行时更加流畅,提升了用户体验。
在上述技术方案的基础上,图4给出了一种网格合并过程的示例。如图4所示,步骤S350可以通过如下步骤S410-S490描述的预设网格合并方式,对各个第二场景元素对应的网格进行合并,获得目标网格:
S410、根据每个第二场景元素对应的中心点位置信息,将各个第二场景元素进行排序,获得排序后的第二场景元素序列。
其中,中心点位置信息可以是指在世界坐标系下,第二场景元素对应的网格中心点的位置坐标信息。第二场景元素序列可以用于表征各个第二场景元素对应的网格进行一一合并的顺序。
具体地,可以根据每个第二场景元素对应的中心点位置信息和世界坐标系的原点,确定每个第二场景元素对应的中心点与原点之间的距离,并将各个距离按照从小到大的顺序进行升序排列,获得距离原点从近到远排列的第二场景元素序列,以便按照该序列进行网格的一一合并。
S420、建立一个空网格,并将该空网格更新为第二场景元素序列中的第一个第二场景元素所对应的网格,作为当前第一网格,以及提取出第二场景元素序列中的第二个第二场景元素对应的网格作为当前第二网格。
其中,空网格可以是建立的一个新的网格体,以便存储合并后的网格信息。当前第一网格和当前第二网格可以是指当前待合并的两个网格。
具体地,将建立的空网格更新为第二场景元素序列中的第一个第二场景元素所对应的网格,并将更新后的空网格(即第一个第二场景元素所对应的网格)作为当前第一网格。提取出第二场景元素序列中的第二个第二场景元素对应的网格,并将该网格作为当前第二网格,以便首先对第二场景元素序列中的前两个网格进行合并。
S430、通过包围盒提取当前第一网格与当前第二网格之间的待合并区域。
其中,包围盒可以是将网格完全包容起来的一个封闭空间。例如,可以将复杂的网格封装在简单的包围盒中,从而可以更加便捷地表征网格位置信息。待合并区域可以是指当前第一网格与当前第二网格之间的网格交叠区域。
具体地,可以基于当前第一网格对应的第一包围盒和当前第二网格对应的第二包围盒,检测当前第一网格与当前第二网格之间是否存在待合并区域,若是,则表明当前第一网格与当前第二网格需要进行网格合并,此时基于提取出的待合并区域进行后续合并流程。若否,则表明当前第一网格与当前第二网格不需要进行网格合并,此时可以将当前第二网格作为当前第一网格,以及将基于第二场景元素序列,将下一个第二场景元素对应的网格作为当前第二网格返回执行S430的操作,也就是对第二场景元素序列中的第二个网格和第三个网格进行网格合并。
S440、将待合并区域的三角面均添加至当前第一网格对应的第一待合并三角面序列和当前第二网格对应的第二待合并三角面序列中。
其中,三角面可以是指由三个网格顶点所组成的面。具体地,可以将当前第一网格的待合并区域中的所有待合并的三角面添加至当前第一网格对应的第一待合并三角面序列中,以及将当前第二网格的待合并区域中的所有待合并的三角面添加至当前第二网格对应的第二待合并三角面序列中。
S450、对第一待合并三角面序列中的每个待合并三角面与第二待合并三角面序列中的每个待合并三角面进行相交检测,获得两个待合并三角面序列中的每个待合并三角面对应的相交结果,并根据每个待合并三角面对应的相交结果,在每个待合并三角面中插入待合并顶点。
具体地,可以循环地从第一待合并三角面序列和第二待合并三角面序列中各取出一个待合并三角面,并对每次取出的两个待合并三角面进行相交检测,以筛选出需要合并的三角面,并建立存在相交情况的相交结果与相应的待合并三角面的对应关系,从而获得每个待合并三角面对应的相交结果,并根据相交结果分别处理每个待合并三角面,获得插入的待合并顶点。
示例性地,图5给出了一种待合并三角面的相交检测过程的示例。如图5所示,步骤S450的具体实现过程为:循环地从第一待合并三角面序列和第二待合并三角面序列中各取出一个待合并三角面,并获取所取出的两个三角面所指向的面,并检测所取出的两个面是否共面,若是,则只需进行三角面的二维相交计算,若否,则进行三维相交计算,并检测获得的相交结果是否有交点,若是,则将交点作为待合并三角面中的待合并顶点,若否,则表明两个不相交,此时可以重新提取两个待合并三角面进行相交检测。继续检测相交结果是否为线段或者多边形,若是,则将相交结果拆分为线段结果,并保存线段端点的序号;若否,则可以重新提取两个待合并三角面进行相交检测。
S460、基于第一预设三角剖分方式和待合并顶点,对待合并三角面进行剖分,获得待合并三角面对应的目标三角面序列。
其中,第一预设三角面剖分方式可以是但不限于Delaunay三角剖分Bowyer-Waston方式。
具体地,可以基于第一预设三角剖分方式,通过利用待合并顶点对待合并三角面进行剖分,获得由剖分后的小的三角面所组成的目标三角面序列。
S470、根据线段和三角面相交关系,在目标三角面序列中的每个目标三角面上插入待合并线段序列,并根据目标三角面序列和待合并线段序列,对当前第一网格进行重新构造,获得当前第三网格。
具体地,可以根据线段和三角面相交关系确定出如何在目标三角面序列中的每个目标三角面上插入待合并线段序列。例如,可以用枚举方式分别判断如何选择线段剖分三角面,并将新剖分的面添加至目标三角面序列中,新产生的交点待合并顶点序列中,以同时保留相交结果的点关系和线关系。基于目标三角面序列和待合并顶点序列,可以重新构造当前第一网格,获得构造后的当前第三网格。
示例性地,图6给出了一种网格重新构造过程的示例。如图6所示,步骤S460和S470的具体实现过程为:利用Bowyer-Waston方式对待合并三角进行三角面剖分,并保存剖分后的目标三角面序列。检测线段序列中的每个线段是否存在对应的三角面,若是,则进行三角面的二维相交计算。若不相交且包含线段,则获得三角面内相交线段信息。若相交且为单点,则计算三角面内线段的端点,并获得三角面内相交线段信息。将三角面的顶点分别与线段端点组成六条新的线段,并进行六组线段的相交计算,划分为五个三角面并删除原三角面,从而获得重构合并后的网格数据,即当前第三网格。本实施例将待合并三角面根据相交关系,先以交点剖分三角面,确保电鱼点关系,再与交线作相交判断,相关的三角面中再插入新点,从而完成边关系确定的三角面。
S480、剔除当前第三网格中的不可见三角面和无用网格顶点,并对当前第三网格中的有用网格顶点进行平滑。
具体地,可以利用顶点法线深度检测方式,剔除当前第三网格中的不可见三角面和无用网格顶点。可以利用Laplace光顺方式,对当前第三网格中的网格顶点进行平滑。示例性地,图7给出了一种冗余三角面剔除过程的示例。如图7所示,利用顶点法线深度检测方式剔除当前第三网格中的不可见三角面和无用网格顶点,从而大大简化了网格结构,进一步降低了关卡运行时的性能开销。
S490、基于第二预设三角剖分方式,对当前第三网格进行空洞贴补,并将贴补后的当前第三网格作为当前第一网格,以及基于第二场景元素序列,将下一个第二场景元素对应的网格作为当前第二网格返回执行S430的操作。
其中,第二预设三角面剖分方式可以是但不限于采用最短边优先-不添加辅助点的三角剖分法。具体地,可以通过利用第二预设三角剖分方式,对当前第三网格进行空洞贴补,获得优化后的当前第三网格,从而将当前第一网格与当前第二网格进行网格合并为当前第三网格。通过将当前第三网格作为当前第一网格,并将第二场景元素序列中的下一个第二场景元素对应的网格作为当前第二网格,以对当前第一网格和当前第二网格进行更新,并通过重新执行S430-S490的操作,依次对下一个第二场景元素对应的网格进行网格合并,直到述第二场景元素序列中的各个第二场景元素均进行网格合并为止,从而获得最终的目标网格。
以下是本发明实施例提供的三维场景生成装置的实施例,该装置与上述各实施例的三维场景生成方法属于同一个发明构思,在三维场景生成装置的实施例中未详尽描述的细节内容,可以参考上述三维场景生成方法的实施例。
实施例四
图8为本发明实施例四提供的一种三维场景生成装置的结构示意图,本实施例可适用于任意需要生成三维场景的情况,该装置具体包括:元素数据获取模块810、不可交互场景元素确定模块820、第一场景元素确定模块830和组合地形模型生成模块840。
其中,元素数据获取模块810,用于获取三维场景中待生成的每个场景元素对应的元素数据,场景元素包括地形场景元素和非地形场景元素;不可交互场景元素确定模块820,用于根据非地形场景元素对应的元素数据,确定各个非地形场景元素中的不可交互场景元素;第一场景元素确定模块830,用于基于场景底平面,对各个不可交互场景元素进行网格碰撞检测,确定出与地形场景元素可堆叠的不可交互场景元素,作为第一场景元素;组合地形模型生成模块840,用于基于高度投影方式和元素数据,将地形场景元素与各个第一场景元素进行组合投影,生成组合地形模型。
可选地,组合地形模型生成模块840,具体用于:
根据地形场景元素对应的位置信息和网格信息,在三维场景中相应位置上加载地形场景元素对应的网格;根据每个第一场景元素对应的位置信息和网格信息,在三维场景中相应位置上加载每个第一场景元素对应的网格;对加载的各个网格进行高度投影,生成地形高度图,并根据地形高度图生成组合地形;根据地形场景元素对应的位置信息和材质信息,以及各个第一场景元素对应的位置信息和材质信息,确定组合地形对应的材质通道图;基于材质通道图,对组合地形进行渲染,生成组合地形模型。
可选地,第一场景元素确定模块830,包括:
筛选单元,用于根据预先设置的每个不可交互场景元素对应的网格标签,对各个不可交互场景元素进行筛选,获得网格标签为基石网格的目标不可交互场景元素;
第一网格碰撞检测单元,用于检测每个目标不可交互场景元素对应的目标网格是否与场景底平面存在网格碰撞,并将存在网格碰撞的目标不可交互场景元素添加至当前列表中;
第二网格碰撞检测单元,用于检测当前剩余的各个目标不可交互场景元素中是否存在与当前列表中的至少一个目标不可交互场景元素存在网格碰撞的目标不可交互场景元素;
添加单元,用于若是,则将存在网格碰撞的当前剩余的目标不可交互场景元素添加至当前列表中,并基于更新后的当前剩余的目标不可交互场景元素和当前列表,返回执行检测当前剩余的各个目标不可交互场景元素中是否存在与当前列表中的至少一个目标不可交互场景元素存在网格碰撞的目标不可交互场景元素的操作;
第一场景元素确定单元,用于若否,则将当前列表中的每个目标不可交互场景元素确定为与地形场景元素可堆叠的第一场景元素。
可选地,第二网格碰撞检测单元,具体用于:针对当前剩余的每个目标不可交互场景元素而言,若检测到当前剩余的目标不可交互场景元素与当前列表中的至少一个目标不可交互场景元素存在网格交叠,则检测当前剩余的该目标不可交互场景元素的底面是否处于当前列表中存在网格交叠的目标不可交互场景元素的网格内部;若是,则确定当前剩余的该目标不可交互场景元素存在网格碰撞。
可选地,该装置还包括:
坐标信息确定模块,用于在根据预先设置的每个不可交互场景元素对应的网格标签,对各个不可交互场景元素进行筛选,获得网格标签为基石网格的目标不可交互场景元素之前,针对场景元素数据库中的每个预设场景元素而言,根据该预设场景元素对应的网格信息,确定该预设场景元素对应的各个网格顶点位置坐标信息;
网格顶点检测模块,用于根据各个网格顶点位置坐标信息,检测该预设场景元素对应的每个网格顶点是否满足预设基石条件;
第一网格标签确定模块,用于若各个网格顶点均满足预设基石条件,则确定该预设场景元素对应的网格标签为基石网格,并存储该预设场景元素的底面位置信息;
第二网格标签确定模块,用于若存在至少一个网格顶点不满足预设基石条件,则确定该预设场景元素对应的网格标签为非基石网格。
可选地,网格顶点检测模块,具体用于:将该预设场景元素对应的每个网格顶点逐个作为第一网格顶点;检测第一网格顶点的X轴坐标值和Y轴坐标值是否均小于各个第二网格顶点的X轴坐标值和Y轴坐标值,其中,第二网格顶点是指与第一网格顶点处于同一平面象限内的,且Z轴坐标值小于第一网格顶点的Z轴坐标值的网格顶点;若是,则确定第一网格顶点满足预设基石条件,否则确定第一网格顶点不满足预设基石条件。
可选地,该装置还包括:
第二场景元素确定模块,用于确定出与地形场景元素不可堆叠的不可交互场景元素,作为第二场景元素;
网格加载模块,用于根据每个第二场景元素对应的位置信息和网格信息,在相应位置处加载每个第二场景元素对应的网格;
网格合并模块,用于基于预设网格合并方式,对各个第二场景元素对应的网格进行合并,获得目标网格;
目标UV坐标信息确定模块,用于对各个第二场景元素对应的UV坐标信息进行合并,确定目标UV坐标信息;
贴图拼接模块,用于根据各个第二场景元素对应的材质信息,对各个第二场景元素对应的贴图进行拼接,获得目标贴图;
目标网格渲染模块,用于根据目标UV坐标信息和目标贴图,对目标网格进行渲染,生成各个第二场景元素对应的三维组合模型。
可选地,网格合并模块,具体用于:
根据每个第二场景元素对应的中心点位置信息,将各个第二场景元素进行排序,获得排序后的第二场景元素序列;建立一个空网格,并将该空网格更新为第二场景元素序列中的第一个第二场景元素所对应的网格,作为当前第一网格,以及提取出第二场景元素序列中的第二个第二场景元素对应的网格作为当前第二网格;通过包围盒提取当前第一网格与当前第二网格之间的待合并区域;将待合并区域的三角面均添加至当前第一网格对应的第一待合并三角面序列和当前第二网格对应的第二待合并三角面序列中;对第一待合并三角面序列中的每个待合并三角面与第二待合并三角面序列中的每个待合并三角面进行相交检测,获得两个待合并三角面序列中的每个待合并三角面对应的相交结果,并根据每个待合并三角面对应的相交结果,在每个待合并三角面中插入待合并顶点;基于第一预设三角剖分方式和待合并顶点,对待合并三角面进行剖分,获得待合并三角面对应的目标三角面序列;根据线段和三角面相交关系,在目标三角面序列中的每个目标三角面上插入待合并线段序列,并根据目标三角面序列和待合并线段序列,对当前第一网格进行重新构造,获得当前第三网格;剔除当前第三网格中的不可见三角面和无用网格顶点,并对当前第三网格中的有用网格顶点进行平滑;基于第二预设三角剖分方式,对当前第三网格进行空洞贴补,并将贴补后的当前第三网格作为当前第一网格,以及基于第二场景元素序列,将下一个第二场景元素对应的网格作为当前第二网格返回执行通过包围盒提取当前第一网格与当前第二网格之间的待合并区域的操作,直到第二场景元素序列中的各个第二场景元素均进行网格合并为止。
本发明实施例所提供的三维场景生成装置可执行本发明任意实施例所提供的三维场景生成方法,具备执行三维场景生成方法相应的功能模块和有益效果。
值得注意的是,上述三维场景生成装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
实施例五
图9是本发明实施例五提供的一种电子设备的结构示意图。参见图9,该电子设备包括:
一个或多个处理器910;
存储器920,用于存储一个或多个程序;
当一个或多个程序被一个或多个处理器910执行,使得一个或多个处理器910实现如上述实施例中任意实施例所提供的三维场景生成方法。
图9中以一个处理器910为例;电子设备中的处理器910和存储器920可以通过总线或其他方式连接,图9中以通过总线连接为例。
存储器920作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的三维场景生成方法对应的程序指令/模块(例如,三维场景生成装置中的元素数据获取模块810、不可交互场景元素确定模块820、第一场景元素确定模块830和组合地形模型生成模块840)。处理器910通过运行存储在存储器920中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述的三维场景生成方法。
存储器920主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器920可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器920可进一步包括相对于处理器910远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本实施例提出的电子设备与上述实施例提出的三维场景生成方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述实施例,并且本实施例具备执行三维场景生成方法相同的有益效果。
实施例六
本实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所提供的三维场景生成方法。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所提供的三维场景生成方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (11)

1.一种三维场景生成方法,其特征在于,包括:
获取三维场景中待生成的每个场景元素对应的元素数据,所述场景元素包括地形场景元素和非地形场景元素;
根据所述非地形场景元素对应的元素数据,确定各个所述非地形场景元素中的不可交互场景元素;
基于场景底平面,对各个所述不可交互场景元素进行网格碰撞检测,确定出与所述地形场景元素可堆叠的不可交互场景元素,作为第一场景元素;
基于预设高度投影方式和所述元素数据,将所述地形场景元素与各个所述第一场景元素进行组合投影,生成组合地形模型。
2.根据权利要求1所述的方法,其特征在于,基于预设高度投影方式和所述元素数据,将所述地形场景元素与各个所述第一场景元素进行组合投影,生成组合地形模型,包括:
根据所述地形场景元素对应的位置信息和网格信息,在三维场景中相应位置上加载所述地形场景元素对应的网格;
根据每个所述第一场景元素对应的位置信息和网格信息,在三维场景中相应位置上加载每个所述第一场景元素对应的网格;
对加载的各个网格进行高度投影,生成地形高度图,并根据所述地形高度图生成组合地形;
根据所述地形场景元素对应的位置信息和材质信息,以及各个所述第一场景元素对应的位置信息和材质信息,确定所述组合地形对应的材质通道图;
基于所述材质通道图,对所述组合地形进行渲染,生成组合地形模型。
3.根据权利要求1所述的方法,其特征在于,基于场景底平面,对各个所述不可交互场景元素进行网格碰撞检测,确定出与所述地形场景元素可堆叠的不可交互场景元素,作为第一场景元素,包括:
根据预先设置的每个所述不可交互场景元素对应的网格标签,对各个所述不可交互场景元素进行筛选,获得网格标签为基石网格的目标不可交互场景元素;
检测每个所述目标不可交互场景元素对应的目标网格是否与场景底平面存在网格碰撞,并将存在网格碰撞的目标不可交互场景元素添加至当前列表中;
检测当前剩余的各个目标不可交互场景元素中是否存在与当前列表中的至少一个目标不可交互场景元素存在网格碰撞的目标不可交互场景元素;
若是,则将存在网格碰撞的当前剩余的目标不可交互场景元素添加至当前列表中,并基于更新后的当前剩余的目标不可交互场景元素和当前列表,返回执行所述检测当前剩余的各个目标不可交互场景元素中是否存在与当前列表中的至少一个目标不可交互场景元素存在网格碰撞的目标不可交互场景元素的操作;
若否,则将当前列表中的每个目标不可交互场景元素确定为与所述地形场景元素可堆叠的第一场景元素。
4.根据权利要求3所述的方法,其特征在于,检测当前剩余的各个目标不可交互场景元素中是否存在与当前列表中的至少一个目标不可交互场景元素存在网格碰撞的目标不可交互场景元素,包括:
针对当前剩余的每个目标不可交互场景元素而言,若检测到当前剩余的目标不可交互场景元素与当前列表中的至少一个目标不可交互场景元素存在网格交叠,则检测当前剩余的该目标不可交互场景元素的底面是否处于当前列表中存在网格交叠的目标不可交互场景元素的网格内部;
若是,则确定当前剩余的该目标不可交互场景元素存在网格碰撞。
5.根据权利要求3所述的方法,其特征在于,在根据预先设置的每个所述不可交互场景元素对应的网格标签,对各个所述不可交互场景元素进行筛选,获得网格标签为基石网格的目标不可交互场景元素之前,还包括:
针对场景元素数据库中的每个预设场景元素而言,根据该预设场景元素对应的网格信息,确定该预设场景元素对应的各个网格顶点位置坐标信息;
根据各个网格顶点位置坐标信息,检测该预设场景元素对应的每个网格顶点是否满足预设基石条件;
若各个网格顶点均满足预设基石条件,则确定该预设场景元素对应的网格标签为基石网格,并存储该预设场景元素的底面位置信息;
若存在至少一个网格顶点不满足预设基石条件,则确定该预设场景元素对应的网格标签为非基石网格。
6.根据权利要求5所述的方法,其特征在于,根据各个网格顶点位置坐标信息,检测该预设场景元素对应的每个网格顶点是否满足预设基石条件,包括:
将该预设场景元素对应的每个网格顶点逐个作为第一网格顶点;
检测第一网格顶点的X轴坐标值和Y轴坐标值是否均小于各个第二网格顶点的X轴坐标值和Y轴坐标值,其中,所述第二网格顶点是指与所述第一网格顶点处于同一平面象限内的,且Z轴坐标值小于所述第一网格顶点的Z轴坐标值的网格顶点;
若是,则确定所述第一网格顶点满足预设基石条件,否则确定所述第一网格顶点不满足预设基石条件。
7.根据权利要求1-6任一所述的方法,其特征在于,所述方法还包括:
确定出与所述地形场景元素不可堆叠的不可交互场景元素,作为第二场景元素;
根据每个所述第二场景元素对应的位置信息和网格信息,在相应位置处加载每个所述第二场景元素对应的网格;
基于预设网格合并方式,对各个所述第二场景元素对应的网格进行合并,获得目标网格;
对各个所述第二场景元素对应的UV坐标信息进行合并,确定目标UV坐标信息;
根据各个所述第二场景元素对应的材质信息,对各个所述第二场景元素对应的贴图进行拼接,获得目标贴图;
根据所述目标UV坐标信息和所述目标贴图,对所述目标网格进行渲染,生成各个所述第二场景元素对应的三维组合模型。
8.根据权利要求7所述的方法,其特征在于,基于预设网格合并方式,对各个所述第二场景元素对应的网格进行合并,获得目标网格,包括:
根据每个所述第二场景元素对应的中心点位置信息,将各个所述第二场景元素进行排序,获得排序后的第二场景元素序列;
建立一个空网格,并将该空网格更新为所述第二场景元素序列中的第一个第二场景元素所对应的网格,作为当前第一网格,以及提取出第二场景元素序列中的第二个第二场景元素对应的网格作为当前第二网格;
通过包围盒提取当前第一网格与当前第二网格之间的待合并区域;
将所述待合并区域的三角面均添加至当前第一网格对应的第一待合并三角面序列和当前第二网格对应的第二待合并三角面序列中;
对所述第一待合并三角面序列中的每个待合并三角面与所述第二待合并三角面序列中的每个待合并三角面进行相交检测,获得两个待合并三角面序列中的每个待合并三角面对应的相交结果,并根据每个待合并三角面对应的相交结果,在每个待合并三角面中插入待合并顶点;
基于第一预设三角剖分方式和所述待合并顶点,对所述待合并三角面进行剖分,获得所述待合并三角面对应的目标三角面序列;
根据线段和三角面相交关系,在所述目标三角面序列中的每个目标三角面上插入待合并线段序列,并根据所述目标三角面序列和所述待合并线段序列,对当前第一网格进行重新构造,获得当前第三网格;
剔除当前第三网格中的不可见三角面和无用网格顶点,并对当前第三网格中的有用网格顶点进行平滑;
基于第二预设三角剖分方式,对当前第三网格进行空洞贴补,并将贴补后的当前第三网格作为当前第一网格,以及基于所述第二场景元素序列,将下一个第二场景元素对应的网格作为当前第二网格返回执行通过包围盒提取当前第一网格与当前第二网格之间的待合并区域的操作,直到所述第二场景元素序列中的各个第二场景元素均进行网格合并为止。
9.一种三维场景生成装置,其特征在于,包括:
元素数据获取模块,用于获取三维场景中待生成的每个场景元素对应的元素数据,所述场景元素包括地形场景元素和非地形场景元素;
不可交互场景元素确定模块,用于根据所述非地形场景元素对应的元素数据,确定各个所述非地形场景元素中的不可交互场景元素;
第一场景元素确定模块,用于基于场景底平面,对各个所述不可交互场景元素进行网格碰撞检测,确定出与所述地形场景元素可堆叠的不可交互场景元素,作为第一场景元素;
组合地形模型生成模块,用于基于高度投影方式和所述元素数据,将所述地形场景元素与各个所述第一场景元素进行组合投影,生成组合地形模型。
10.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-8中任一所述的三维场景生成方法。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-8中任一所述的三维场景生成方法。
CN202011547610.5A 2020-12-24 2020-12-24 一种三维场景生成方法、装置、设备和存储介质 Active CN112516596B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011547610.5A CN112516596B (zh) 2020-12-24 2020-12-24 一种三维场景生成方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011547610.5A CN112516596B (zh) 2020-12-24 2020-12-24 一种三维场景生成方法、装置、设备和存储介质

Publications (2)

Publication Number Publication Date
CN112516596A true CN112516596A (zh) 2021-03-19
CN112516596B CN112516596B (zh) 2024-02-06

Family

ID=74976063

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011547610.5A Active CN112516596B (zh) 2020-12-24 2020-12-24 一种三维场景生成方法、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN112516596B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114245031A (zh) * 2021-12-20 2022-03-25 北京字跳网络技术有限公司 图像展示方法、装置、电子设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013167255A2 (de) * 2012-05-09 2013-11-14 Db Systel Gmbh Verfahren, signalfolge sowie rechneranlage zum erstellen, verwalten, komprimieren und auswerten von 3d-daten eines dreidimensionalen geländemodells und ein computerprogramm mit programmcode zur durchführung des verfahrens auf einem computer
CN109701273A (zh) * 2019-01-16 2019-05-03 腾讯科技(北京)有限公司 游戏数据的处理方法、装置、电子设备及可读存储介质
CN110310354A (zh) * 2019-07-04 2019-10-08 珠海金山网络游戏科技有限公司 一种三维场景中的顶点识别方法及装置
CN111383349A (zh) * 2018-12-27 2020-07-07 珠海金山网络游戏科技有限公司 一种地形场景编辑方法及装置、计算设备及存储介质
CN111957045A (zh) * 2020-09-01 2020-11-20 网易(杭州)网络有限公司 地形形变方法、装置、设备及存储介质
CN112085856A (zh) * 2020-09-11 2020-12-15 深圳市大富网络技术有限公司 固态地形编辑方法、装置、电子设备及计算机存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013167255A2 (de) * 2012-05-09 2013-11-14 Db Systel Gmbh Verfahren, signalfolge sowie rechneranlage zum erstellen, verwalten, komprimieren und auswerten von 3d-daten eines dreidimensionalen geländemodells und ein computerprogramm mit programmcode zur durchführung des verfahrens auf einem computer
CN111383349A (zh) * 2018-12-27 2020-07-07 珠海金山网络游戏科技有限公司 一种地形场景编辑方法及装置、计算设备及存储介质
CN109701273A (zh) * 2019-01-16 2019-05-03 腾讯科技(北京)有限公司 游戏数据的处理方法、装置、电子设备及可读存储介质
CN110310354A (zh) * 2019-07-04 2019-10-08 珠海金山网络游戏科技有限公司 一种三维场景中的顶点识别方法及装置
CN111957045A (zh) * 2020-09-01 2020-11-20 网易(杭州)网络有限公司 地形形变方法、装置、设备及存储介质
CN112085856A (zh) * 2020-09-11 2020-12-15 深圳市大富网络技术有限公司 固态地形编辑方法、装置、电子设备及计算机存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114245031A (zh) * 2021-12-20 2022-03-25 北京字跳网络技术有限公司 图像展示方法、装置、电子设备及存储介质
CN114245031B (zh) * 2021-12-20 2024-02-23 北京字跳网络技术有限公司 图像展示方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN112516596B (zh) 2024-02-06

Similar Documents

Publication Publication Date Title
CN106683167B (zh) 复杂建筑物高精度模型自动建模方法
CN106582023B (zh) 一种游戏寻路方法和装置
TW550521B (en) Method for re-building 3D model of house in a semi-automatic manner using edge segments of buildings
CN110368694B (zh) 游戏场景的数据处理方法、装置、设备及可读存储介质
CN106934826B (zh) 一种岩质边坡结构精细化建模及块体识别方法
CN112561788B (zh) 一种bim模型的二维展开方法及纹理贴图方法、装置
CN114627219A (zh) 三维场景数据的渲染方法及装置、存储介质、电子装置
CN113593030A (zh) 基于三维模型的地质剖面图生成方法、系统、终端及介质
CN112516596B (zh) 一种三维场景生成方法、装置、设备和存储介质
CN108346174B (zh) 一种支持单模型交互的三维模型合并方法
CN111035925A (zh) 游戏中虚拟交通道路网模型的生成方法、装置及电子装置
CN111476885B (zh) 考古多源数据融合方法、装置、设备和存储介质
CN114119939A (zh) 数据轻量化处理方法、装置、存储介质及电子设备
CN108205565A (zh) 电子地图元素抽稀方法、装置及终端
CN112516597B (zh) 一种三维场景生成方法、装置、设备和存储介质
CN107507117A (zh) 海量地表覆盖缝隙快速检查方法以及系统
CN110503727B (zh) 一种cad任意多段线批量快速拼接方法
CN112562054A (zh) 一种三维场景生成方法、装置、设备和存储介质
CN112200906A (zh) 一种面向倾斜三维模型的实体提取方法及其系统
CN115779424A (zh) 一种导航网格寻路方法、装置、设备及介质
Namouchi et al. Piecewise horizontal 3d roof reconstruction from aerial lidar
KR102243453B1 (ko) 하천 공간위상 구조를 이용한 도시하천 홍수범람지도의 갱신 방법 및 이를 기록한 기록매체
CN113674294A (zh) 一种3d模型切片处理方法及装置
CN115115800A (zh) 一种bim模型简化方法及装置
CN110096562A (zh) 存储器、gis平台中三维模型构建方法、装置和设备

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