CN114491914A - 模型简化方法、装置、终端设备及可读存储介质 - Google Patents
模型简化方法、装置、终端设备及可读存储介质 Download PDFInfo
- Publication number
- CN114491914A CN114491914A CN202011275338.XA CN202011275338A CN114491914A CN 114491914 A CN114491914 A CN 114491914A CN 202011275338 A CN202011275338 A CN 202011275338A CN 114491914 A CN114491914 A CN 114491914A
- Authority
- CN
- China
- Prior art keywords
- model
- drawing instruction
- grid
- patch
- patches
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 96
- 238000003860 storage Methods 0.000 title abstract description 34
- 238000009877 rendering Methods 0.000 claims abstract description 57
- 238000004590 computer program Methods 0.000 claims description 28
- 238000009826 distribution Methods 0.000 claims description 16
- 230000009467 reduction Effects 0.000 claims description 10
- 238000005070 sampling Methods 0.000 claims description 7
- 238000013507 mapping Methods 0.000 claims 1
- 238000005516 engineering process Methods 0.000 abstract description 15
- 238000004364 calculation method Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 17
- 238000004891 communication Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 11
- 230000000007 visual effect Effects 0.000 description 10
- 238000007726 management method Methods 0.000 description 9
- 230000005236 sound signal Effects 0.000 description 8
- 238000001514 detection method Methods 0.000 description 5
- 238000010295 mobile communication Methods 0.000 description 5
- 238000005215 recombination Methods 0.000 description 4
- 230000006798 recombination Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000003825 pressing Methods 0.000 description 2
- 230000008521 reorganization Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012876 topography Methods 0.000 description 2
- 244000025254 Cannabis sativa Species 0.000 description 1
- 208000003028 Stuttering Diseases 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 238000005316 response function Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000010897 surface acoustic wave method Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 239000010409 thin film Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
- G06F30/23—Design optimisation, verification or simulation using finite element methods [FEM] or finite difference methods [FDM]
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请涉及图像处理领域,提供了一种模型简化方法、装置、终端设备及可读存储介质,该模型简化方法,包括:当绘制目标对象时,根据该目标对象的第一模型的绘制指令获取绘制第一模型时的负载信息。当该负载信息满足预设条件时,根据第一模型的绘制指令,获取LOD模型的绘制指令,然后绘制并显示该LOD模型简化后的目标对象。在应用LOD技术时,无论应用程序是否提供第一模型对应的LOD模型,均可根据第一模型的绘制指令获取LOD模型,使得LOD技术可以有效地应用于每一个应用程序,增加了LOD技术的应用场景,在终端设备的渲染算力不变的情况下,增加了应用程序运行的流畅度。
Description
技术领域
本申请涉及图像处理技术领域,尤其涉及一种模型简化方法、装置、终端设备及可读存储介质。
背景技术
多级精细度(levels of detail,LOD)技术,可以在应用程序渲染模型并显示时,根据模型的顶点在显示环境中所处的位置和重要度,决定渲染模型的精细程度。例如,可以降低非重要物体的面数和细节,从而减少渲染同等画质的画面时所需要的渲染算力。
现有技术中,在使用LOD技术时,需要先为模型制作生成额外的LOD模型。然后应用程序在渲染模型时,根据模型的顶点在显示环境中所处的位置和重要度,确定应用哪个级别精细度的模型进行绘制并显示。
但是,很多应用程序在发布时并未提供与模型对应的LOD模型,或者提供的LOD模型很简陋,导致无法有效应用LOD技术。
发明内容
本申请实施例提供了一种模型简化方法、装置、终端设备及可读存储介质,可以改善由于应用程序在发布时并未提供与模型对应的LOD模型,或者提供的LOD模型很简陋,导致无法有效应用LOD技术的问题。
第一方面,本申请实施例提供了一种模型简化方法,该方法包括:根据第一模型的绘制指令,获取绘制第一模型时的负载信息。当负载信息满足预设条件时,根据第一模型的绘制指令,获取对应的第二模型的绘制指令。根据第二模型的绘制指令绘制第二模型并进行显示。
第一方面提供的模型简化方法可以应用于手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,AR)、虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)等终端设备上,本申请实施例对终端设备的具体类型不作任何限制。
其中,第二模型的复杂程度小于第一模型,模型的复杂程度可以通过模型绘制时的节点、索引数量等参数进行度量。
在第一方面中,当根据第一模型的绘制指令,确定绘制第一模型的负载信息满足预设条件时,可以根据第一模型的绘制指令获取对应的第二模型的绘制指令。然后根据第二模型的绘制指令绘制第二模型并进行显示。即,在应用LOD技术时,无论应用程序是否提供第一模型对应的LOD模型,均可根据第一模型的绘制指令获取第二模型的绘制指令,将绘制得到的第二模型作为第一模型的LOD模型进行显示。使得LOD技术可以有效的应用于每一个应用程序,增加了LOD技术的应用场景,在终端设备的渲染算力不变的情况下,增加了应用程序运行的流畅度。
一些实施方式中,根据第一模型的绘制指令,获取对应的第二模型的绘制指令,包括:为第一模型匹配对应的第二模型。当匹配成功时,获取第二模型的绘制指令。当匹配失败时,生成第二模型的绘制指令。
先为第一模型匹配对应的第二模型,如果能够匹配到对应的第二模型,则可以直接获取匹配的第二模型的绘制指令。当匹配失败时,再去生成第二模型的绘制指令。对于多次出现的第一模型,可以无需每次都生成第二模型的绘制指令,而是调用已经生成好的第二模型的绘制指令。实现了节省等待生成第二模型的绘制指令的时间,从而有效提高模型的绘制效率。
一些实施方式中,当匹配失败时,生成第二模型的绘制指令,包括:获取第一模型的模型结构类别。根据模型结构类别和第一模型的绘制指令,生成第二模型的绘制指令。
一些实施方式中,绘制指令包括多个顶点和多组索引顺序,每组索引顺序包括多个按顺序排列的索引值,每个索引值对应一个顶点,模型结构类别包括网格结构或面片结构;获取第一模型的模型结构类别,包括:获取第一模型的绘制指令中,每组索引顺序包括的索引值。根据每组索引顺序内的索引值,确定第一模型的模型结构为网格结构或面片结构。
一些实施方式中,根据每组索引顺序内的索引值,确定第一模型的模型结构为网格结构或面片结构,包括:若每组索引顺序内的索引值的数量为6,且6个索引值中包括2对相同的索引值和2个与其他索引值均不相同的索引值时,则确定模型结构为面片结构。否则,确定模型结构为网格结构。
根据每组索引顺序内的索引值数量、索引值的数值确定模型结构,可以准确地识别模型结构,进而针对不同的模型结构采取不同的模型简化方法,更有针对性的对模型进行简化。使生成的第二模型的绘制指令在进行绘制时,绘制效率更高,绘制的模型的视觉效果更好。
一些实施方式中,当模型结构类别为面片结构时,每组索引顺序用于绘制一个面片。
根据模型结构类别和第一模型的绘制指令,生成第二模型的绘制指令,包括:当模型结构类别为面片结构时,根据第一模型的绘制指令,获取每个面片在第一模型中的分布特征。根据分布特征和第一模型的绘制指令,生成第二模型的绘制指令。
一些实施方式中,获取每个面片在第一模型中的分布特征,包括:将每个面片映射至空间网格坐标系内。获取空间网格坐标系内每个网格的密度、以及每个面片在网格内的出现次数,每个网格的密度包括每个网格内包含的面片数量。
一些实施方式中,根据分布特征和第一模型的绘制指令,生成第二模型的绘制指令,包括:根据每个网格的密度对网格进行排序。根据面片的出现次数,对排序后网格密度最大的i个网格中的面片进行排序。根据排序后面片出现次数最多的k个面片,对排序后网格的密度最大的i个网格进行稀疏,减少每个网格中的面片数量,得到稀疏后的网格,i和k为大于1的整数。根据每个稀疏后的网格中面片对应的索引顺序,生成第二模型的绘制指令。
一些实施方式中,根据排序后面片出现次数最多的k个面片,对每个网格进行稀疏,减少网格中的面片数量,得到稀疏后的网格,包括:获取排序后网格密度最小的j个网格中出现的面片,j为自然数。根据网格密度最小的j个网格中出现的面片、排序后面片出现次数最多的k个面片,对每个网格进行稀疏,减少网格中的面片数量,得到稀疏后的网格。
当模型结构类别为面片结构时,根据每个面片在空间网格坐标系的每个网格中出现的次数、每个网格的密度对第一模型进行简化。即,根据面片的出现次数对密度较大的网格进行,使得网格的密度和面片的出现次数相对平均,减少重复绘制面片的情况。实现了在保证模型视觉效果的基础上,对进行模型简化。
一些实施方式中,获取空间网格坐标系内每个网格的密度,包括:获取每个面片的特征点,面片的特征点包括面片的顶点以及设置于面片内部的至少一个采样点。获取网格中包括的特征点,根据每个特征点对应的面片,确定网格的密度。
一些实施方式中,获取绘制第一模型时的负载信息,包括:获取绘制指令中包括的顶点数量和/或索引值数量、绘制指令的指令类型对应的负载阈值。
负载信息满足预设条件,包括:顶点数量和/或索引值数量大于或等于负载阈值。
一些实施方式中,为第一模型匹配对应的第二模型,包括:获取第一模型的绘制指令中包括的顶点和/或索引值。根据顶点和/或索引值,在预先存储的多细节层次匹配表中匹配与第一模型对应的第二模型,多细节层次匹配表中包括第一模型的绘制指令与第二模型的对应关系。
一些实施方式中,根据第一模型的绘制指令,获取绘制第一模型时的负载信息之后,方法还包括:根据第一模型的绘制指令绘制第一模型并进行显示。
一些实施方式中,当负载信息满足预设条件时,根据第一模型的绘制指令,获取对应的第二模型的绘制指令,包括:获取第二模型的绘制指令的生成状态。若第二模型的绘制指令的生成状态为未完成,则根据第一模型的绘制指令绘制第一模型并进行显示。
在未确定是否对第一模型进行简化,或者第一模型的简化工作尚未完成时,先根据第一模型的绘制指令绘制第一模型并进行显示,保证显示的画面中的第一模型能够正常显示。
一些实施方式中,当负载信息满足预设条件时,根据第一模型的绘制指令,获取对应的第二模型的绘制指令,包括:获取第二模型的绘制指令的生成状态。若第二模型的绘制指令的生成状态为已完成,则生成第一模型的绘制指令与第二模型的对应关系,并存入多细节层次匹配表中。
在第一模型的简化工作完成后,将生成第一模型的绘制指令与第二模型的对应关系,并存入多细节层次匹配表。当需要再次对第一模型进行简化时,可以直接匹配调用与第一模型的绘制指令对应的第二模型的绘制指令进行绘制,无需再次生成,提高了模型的绘制效率。
一些实施方式中,根据第二模型的绘制指令绘制第二模型并进行显示,包括:根据第二模型的绘制指令绘制第二模型。将第二模型在第一模型的显示区域进行显示。
第二方面,本申请实施例提供了一种模型简化装置,该装置包括:获取模块,用于根据第一模型的绘制指令,获取绘制第一模型时的负载信息。获取模块,还用于当负载信息满足预设条件时,根据第一模型的绘制指令,获取对应的第二模型的绘制指令。绘制模块,用于根据第二模型的绘制指令绘制第二模型并进行显示。
一些实施方式中,获取模块,具体用于为第一模型匹配对应的第二模型。
当匹配成功时,获取模块,具体用于获取第二模型的绘制指令。
当匹配失败时,该装置还包括生成模块,用于生成第二模型的绘制指令。
一些实施方式中,当匹配失败时,生成模块,具体用于获取第一模型的模型结构类别。根据模型结构类别和第一模型的绘制指令,生成第二模型的绘制指令。
一些实施方式中,绘制指令包括多个顶点和多组索引顺序,每组索引顺序包括多个按顺序排列的索引值,每个索引值对应一个顶点,模型结构类别包括网格结构或面片结构。生成模块,具体用于获取第一模型的绘制指令中,每组索引顺序包括的索引值。根据每组索引顺序内的索引值,确定第一模型的模型结构为网格结构或面片结构。
一些实施方式中,生成模块,具体用于若每组索引顺序内的索引值的数量为6,且6个索引值中包括2对相同的索引值和2个与其他索引值均不相同的索引值时,则确定模型结构为面片结构。否则,确定模型结构为网格结构。
一些实施方式中,当模型结构类别为面片结构时,每组索引顺序用于绘制一个面片。
生成模块,具体用于当模型结构类别为面片结构时,根据第一模型的绘制指令,获取每个面片在第一模型中的分布特征。根据分布特征和第一模型的绘制指令,生成第二模型的绘制指令。
一些实施方式中,生成模块,具体用于将每个面片映射至空间网格坐标系内。获取空间网格坐标系内每个网格的密度、以及每个面片在网格内的出现次数,每个网格的密度包括每个网格内包含的面片数量。
一些实施方式中,生成模块,具体用于根据每个网格的密度对网格进行排序。根据面片的出现次数,对排序后网格密度最大的i个网格中的面片进行排序。根据排序后面片出现次数最多的k个面片,对排序后网格的密度最大的i个网格进行稀疏,减少每个网格中的面片数量,得到稀疏后的网格,i和k为大于1的整数。根据每个稀疏后的网格中面片对应的索引顺序,生成第二模型的绘制指令。
一些实施方式中,生成模块,具体用于获取排序后网格密度最小的j个网格中出现的面片,j为自然数。根据网格密度最小的j个网格中出现的面片、排序后面片出现次数最多的k个面片,对每个网格进行稀疏,减少网格中的面片数量,得到稀疏后的网格。
一些实施方式中,生成模块,具体用于获取每个面片的特征点,面片的特征点包括面片的顶点以及设置于面片内部的至少一个采样点。获取网格中包括的特征点,根据每个特征点对应的面片,确定网格的密度。
一些实施方式中,获取模块,具体用于获取绘制指令中包括的顶点数量和/或索引值数量、绘制指令的指令类型对应的负载阈值。
其中,负载信息满足预设条件,包括:顶点数量和/或索引值数量大于或等于负载阈值。
一些实施方式中,获取模块,具体用于获取第一模型的绘制指令中包括的顶点和/或索引值。根据顶点和/或索引值,在预先存储的多细节层次匹配表中匹配与第一模型对应的第二模型,多细节层次匹配表中包括第一模型的绘制指令与第二模型的对应关系。
一些实施方式中,根据第一模型的绘制指令,获取绘制第一模型时的负载信息之后,绘制模块,还用于根据第一模型的绘制指令绘制第一模型并进行显示。
一些实施方式中,当负载信息满足预设条件时,获取模块,具体用于获取第二模型的绘制指令的生成状态。若第二模型的绘制指令的生成状态为未完成,则根据第一模型的绘制指令绘制第一模型并进行显示。
一些实施方式中,当负载信息满足预设条件时,获取模块,具体用于获取第二模型的绘制指令的生成状态。若第二模型的绘制指令的生成状态为已完成,则生成第一模型的绘制指令与第二模型的对应关系,并存入多细节层次匹配表中。
一些实施方式中,绘制模块,具体用于根据第二模型的绘制指令绘制第二模型。将第二模型在第一模型的显示区域进行显示。
第三方面,本申请实施例提供了一种终端设备,包括:至少一个处理器、存储器以及存储在存储器中并可在至少一个处理器上运行的计算机程序。处理器执行计算机程序实现第一方面提供的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现如第一方面提供的方法。
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面提供的方法。
第六方面,本申请实施例提供了一种芯片系统,芯片系统包括存储器和处理器,处理器执行存储器中存储的计算机程序,以实现第一方面提供的方法。
第七方面,本申请实施例提供了一种芯片系统,芯片系统包括处理器,处理器与第四方面提供的计算机可读存储介质耦合,处理器执行计算机可读存储介质中存储的计算机程序,以实现第一方面提供的方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
图1为多级精细度技术的应用场景示意图;
图2为本申请实施例提供的终端设备的结构示意图;
图3为本申请实施例提供的终端设备的软件构架示意图;
图4为本申请实施例提供的一种模型简化方法的流程示意图;
图5为模型结构中网格结构的示意图;
图6为模型结构中面片结构的示意图;
图7为本申请实施例提供的模型简化方法中面片的特征点以及空间网格坐标系的示意图;
图8为本申请实施例提供的模型简化方法中网格密度的统计图;
图9为本申请实施例提供的模型简化方法中对第一模型简化后的网格密度统计图;
图10为本申请实施例提供的模型简化方法中第一模型和第二模型的示意图;
图11为本申请实施例提供的模型简化方法应用时的场景示意图;
图12为本申请实施例提供的模型简化方法应用时的模块时序示意图;
图13为本申请实施例提供的另一种模型简化方法的流程示意图;
图14为本申请另一实施例中面片结构的第一模型和第二模型的示意图;
图15为本申请另一实施例中网格结构的第一模型和第二模型的示意图;
图16为本申请另一实施例中网格结构的第一模型和第二模型的示意图;
图17为本申请另一实施例中网格结构的第一模型和第二模型的示意图;
图18为本申请实施例提供的一种模型简化装置的结构示意图;
图19为本申请实施例提供的另一种模型简化装置的结构示意图;
图20为本申请另一实施例提供的终端设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到”或“响应于检测到”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
目前,通过如智能手机、平板电脑、笔记本电脑或者个人电脑等终端设备运行应用程序时,可能会存在需要渲染模型的场景。例如,通过终端设备运行游戏应用,需要大量渲染模型,以构建游戏场景。为了获得更加逼真的视觉效果,在设计模型时会对每个模型的进行精细化的处理,得到的模型视觉效果逼真,但是会相对复杂。
渲染大量复杂的模型会占用GPU的大量资源,导致终端设备功耗增加、出现卡顿。为了在保证视觉效果的同时,减少渲染时的资源占用,一般可以采用多细节层次(levelsof detail,LOD)技术对模型进行处理。即为场景中的同一个物体构造多个模型,各个模型之间的区别在于细节描述程度的不同,用这些具有多层次结构的模型集合描述一个场景。
作为示例,图1示出了一种现有的运用LOD技术进行模型渲染的示例。
参照图1,现有技术在运用LOD技术进行前,需要先为一个模型制作多个层级的LOD模型,记为LODX模型,其中,X为模型的层级,层级数越大,对原始模型的简化程度越大,渲染后的模型精度越低,X为0时,即渲染未进行简化的原始模型。参考图1中树的模型,模型11为LOD0,模型12为LOD1,模型13为LOD2。
确定模型11、模型12和模型13的LOD级别时,可以根据每个模型在场景中的重要程度进行不同级别的简化。例如,可以根据模型与视角相机在场景中的距离,以及模型所占屏幕的百分比确定其重要程度。
其中,视角相机是指在场景中能够提供屏幕所显示的画面视角的虚拟相机。例如,若运行的程序为第一人称游戏,则视角相机位于虚拟人物的眼睛位置。若运行的程序为非第一人称游戏,则视角相机可以设置在虚拟人物的周围,其具体的位置可以通过接收到用户的操作指令进行调整。
当视角相机的位置或角度发生变化时,会导致模型与视角相机在场景中的距离、以及模型所占屏幕的百分比随之变化。这个情况下,可以根据变化后模型的重要程度,更新每个模型的LOD层级。
对于面片结构的模型,模型的精度可以通过面片的精度和数量来反映,当此物体在远处时,则可以采用少量低精度的面片,相应的,较近时则可以采用大量高精度面片。
当前的LOD技术需要开发者在设计模型时,为一个模型设置好多个层级的LOD模型,在运行应用程序时直接调用。但是,许多开发者并未提供对应的LOD模型,或者提供的LOD模型较为简陋,视觉效果不佳。导致LOD技术无法有效的应用于每一个需要LOD的应用程序,影响用户的使用体验。
为此,本身请提供了一种模型简化方法,该方法包括:根据第一模型的绘制指令,获取绘制第一模型时的负载信息。当负载信息满足预设条件时,根据第一模型的绘制指令,获取对应的第二模型的绘制指令。根据第二模型的绘制指令绘制第二模型并进行显示。以实现在应用LOD技术时,无论应用程序是否提供第一模型对应的LOD模型,均可根据第一模型的绘制指令获取第二模型的绘制指令,将绘制得到的第二模型作为第一模型的LOD模型进行显示。使得LOD技术可以有效的应用于每一个应用程序,增加了LOD技术的应用场景,在终端设备的渲染算力不变的情况下,增加了应用程序运行的流畅度,提高了用户的使用体验。
本申请实施例提供的模型简化方法可以应用于手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)等终端设备上,本申请实施例对终端设备的具体类型不作任何限制。
在此以手机为例,对终端设备的硬件结构进行说明。
如图2所示,该终端设备可以包括:处理器110、音频模块120、屏幕130、摄像模块140、存储模块150、接口160、电源模块170、输入模块180、通信模块190、硬件转码模块200等部件。本领域技术人员可以理解,图2中示出的终端设备结构并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图2对终端设备的各个构成部件及模块进行具体的介绍:
处理器110是终端设备的控制中心,处理器110可以包括CPU111和GPU112。CPU110可以利用各种接口和线路连接终端设备的各个部分,通过运行或执行存储在存储模块150内的软件程序和/或模块,以及调用存储在存储模块150内的数据,执行终端设备的各种功能和处理数据。而GPU112则是可以进行图像和图形相关运算工作的微处理器。GPU112的形式有多种,例如,GPU112可以设置在显卡中,或者集成在CPU111中,再或者,也可以以独立的GPU芯片的形式存在。
其中,GPU在进行图像和图形的绘制和渲染时,可将图像或图形绘制或渲染至缓存(buffer)中。对于设置在显卡中的GPU来说,缓存即为显卡中集成的显存(也被叫做帧缓存)。而对于集成在CPU中或以独立的GPU芯片的形式存在的GPU,缓存则可以是终端设备的运行内存中的一部分,如随机存取存储器(Random Access Memory,RAM)中的部分空间。
一些实施方式中,CPU111可包括一个或多个处理单元。例如,可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
还有一些实施方式中,处理器110中还可集成调制解调处理器。调制解调处理器主要处理无线通信相关的数据。本申请对此不作限制。
音频模块120,用于处理音频信号。例如,音频模块120可以将麦克风123接收到的模拟音频信号转换为数字音频数据并发送给处理器110。或者,将处理器110发送的数字音频数据转换为扬声器121和受话器122能够播放的模拟信号并发送给扬声器121或受话器122。
屏幕130用于通过视觉输出,展示终端设备输出的内容。例如,可以显示用户输入的信息、展示提供给用户的信息、显示终端设备的系统界面、以及在终端设备上运行的应用程序的界面等。屏幕130显示面板的材质可以为液晶显示器(Liquid Crystal Display,LCD)、薄膜晶体管(Thin Film Transistor,TFT)、发光半导体(Light-Emitting Diode,LED)、有机发光半导体(Organic Light-Emitting Diode,OLED)等,在此不做限制。
一些实施方式中,屏幕的显示面板上还可以覆盖有触控面板。当触控面板检测到在其上或附近的触摸操作后,传送给处理器110以确定触摸事件的类型,随后处理器110根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图2中屏幕和触控面板(未示出)为互相独立的两个部件来实现手机的输入和输入功能,但是在一些实施方式中,可以将触控面板与显示面板集成而实现手机的输入和输出功能。
摄像模块140包括至少1个摄像头,摄像头可以是前置摄像头141或者后置摄像头142。
仅为作为示例,终端设备可以为单摄像头、双摄像头、三摄像头或四摄像头。例如,为四摄像头时,一个摄像头为前置摄像头141,三个为后置摄像头142。三个后置摄像头142可以为不同焦距的摄像头。如一个等效焦距35mm的主摄像头、一个等效焦距20mm的广角摄像头和一个等效焦距105mm的长焦摄像头。本申请实施例对此不作限定。
需要说明的是,当终端设备包括多个摄像头时,这多个摄像头可以全部前置,或者全部后置,或者一部分前置、另一部分后置,本申请实施例对此不作限定。
其中,存储模块150中包括内部存储器151和外部存储器接口152,内部存储器151可以是闪存、硬盘、运算内存等。例如,内部存储器可以包括至少一个硬盘或闪存,一个运算内存。外部存储器接口152用于连接外部存储器,外部存储器可以包括内存卡、移动硬盘、U盘、光碟等。
存储模块150可用于存储软件程序以及模块,处理器110通过运行存储在存储模块150的软件程序以及模块,从而执行终端设备的各种功能应用以及数据处理。存储模块150可主要包括存储程序区和存储数据区。其中,存储程序区通常位于内部存储器151上,可存储操作系统、至少一个功能所需的应用程序(如声音播放功能、触摸响应功能)。存储数据区可以位于内部存储器151上,或者位于与外部存储器接口152连接的外部存储器上,或者同时位于内部存储器和外部存储器上。存储数据区可存储根据手机的使用所创建的数据(如音频数据、图像数据、视频数据)。
接口160包括但不限于用户识别(Subscriber Identity Module,SIM)卡接口161、USB接口162、耳机接口163。SIM卡接口用于插入运营商提供的SIM卡,以使得终端设备通过移动通信模块191与基站通信连接时,识别验证用户身份,并在通过验证后,向基站发送通话请求、数据请求以及接收基站转发的通话、数据、短信等。
USB接口162可以通过USB数据线将终端设备与电脑连接,进行数据交换。同时,USB接口162还与电源模块170连接,USB数据线在接入电脑或充电插口时,可以将输入电能传输给电源模块170,对终端设备进行充电。其中,USB接口162可以为micro-USB、mini-USB、USBType-c等,在此不做限制。
耳机接口163用于接入耳机。耳机接口163可以为独立的接口,例如,耳机接口163可以为3.5mm耳机插孔。或者,耳机接口163还可以集成于USB接口162中,例如,耳机接口可以集成在USB Type-c中。当耳机接口163中插入了耳机时,音频模块120可以不再将输出的模拟音频信号发送给扬声器121或受话器122,而是通过耳机接口163发送给耳机,通过耳机播放音频。在插入耳机时,若检测到耳机不包括麦克风,此时音频模块依然接收麦克风123发送的模拟音频信号。若检测到耳机包括麦克风,则音频模块接收耳机麦克风发送的模拟音频信号,对其进行处理并发送给处理器110。
终端设备还包括给各个部件供电的电源模块170。电源模块可以包括电池、电源管理模块等。电源管理模块可以与处理器110逻辑相连,从而通过电源管理模块实现管理电池的充电、放电、以及功耗管理等功能。
输入模块180可用于接收输入的信息和按键信号,输入的信息包括数字或字符信息、触控信息等,按键信号包括物理按键的按压信号、虚拟按键的按压信号等。
一种实施方式中,输入模块180可包括触控面板以及其他输入设备。触控面板与屏幕130可组成触摸屏,触控面板可收集用户在其上或附近的触摸操作(如用户使用手指、触控笔等能够在触控面板上产生触摸信号的物体或附件在触控面板上或在触摸屏附近的操作),并根据预先设定的程式驱动执行相应的功能。可选的,触控面板可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器。触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器110,处理器110接收发送的触点坐标,将其转换为触控指令并加以执行。可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板。其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆中的一种或多种。
通信模块190包括移动通信模块191和无线通信模块192。移动通信模块191可以支持任一通信标准或协议,包括但不限于全球移动通讯系统(Global System of Mobilecommunication,GSM)、通用分组无线服务(General Packet Radio Service,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址(Wideband Code DivisionMultiple Access,WCDMA)、长期演进(Long Term Evolution,LTE)、时分复用WCDMA(Time-Division WCDMA,TD-WCDMA)、时分复用LTE(Time-Division LTE,TD-LTE)、第五代新无线(the 5th generation New Radio,5G NR)等。而无线通信模块192则可以支持蓝牙(Bluetooth)、无线保真(Wireless Fidelity,Wi-Fi)、近场通信(Near FieldCommunication,NFC)等。
移动通信模块191可以用于通过天线与通信基站连接,以建立终端设备与其他终端设备之间通话链路,收发通话音频。无线通信模块192则用于与外置设备无线连接,其中,外置设备可以是蓝牙耳机、蓝牙音响等具有放音、收音功能的外置设备,也可以是蓝牙鼠标、蓝牙键盘等用于输入的外置设备,在此不做限制。
硬件转码模块200则可以为硬件转码芯片、硬件转码网关或者是CPU中提供硬件转码功能的模块等。
终端设备的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的安卓(Android)系统为例,示例性说明终端设备的软件结构。
图3是本申请实施例的终端设备的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,可将Android系统分为四层,从上至下分别为应用程序层(APP),应用程序框架层(framework,FWK),系统运行库层,以及内核层。
如图3所示,应用程序层可以一系列应用程序包,应用程序包可以包括短信息,日历,相机,视频,导航,图库,通话,游戏等应用程序。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供终端设备的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
系统运行库层包括系统库和安卓运行时(Android Runtime)。Android Runtime则包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如,常规的功能模块可以包括表面管理器(surface manager)、媒体库(Media Libraries)、三维图形处理库(例如:OpenGL ES)、2D图形引擎(例如:SGL)等。在本申请中,系统库中还可以包括指令重组(command streamdynamic reconstruction,CSDR)模块和实时简模模块,用以实现本申请提供的模型简化方法。
指令重组模块用于捕获APP调用图形接口API的指令并进行动态优化,优化操作可以包括各种可能的调整操作,例如重组、合并等。其中,图形接口API可基于开放图形库(open graphics library,OpenGL)或Vulkan等图形编程接口(application programminginterface,API)实现相关操作。由于参照统一的标准API,本申请实施例的技术方案可以利用标准API的参数得到模型的相关信息。
实时简模模块则可以包括识别模块、精简模块、替换模块以及数据库。
识别模块用于识别是否对指令重组模块中接收到的绘制指令进行精简,即是否对绘制指令对应的模型进行简化。
如果进行精简,则使用精简模块对绘制指令进行精简处理,得到精简后的绘制指令。
然后再使用替换模块将指令重组模块中接收到的绘制指令替换为精简后的绘制指令。
最后通过指令重组模块将精简后的绘制指令发送给图形处理器进行绘制渲染。
其中,数据库中则可以存储如多细节层次匹配表等数据,用于为识别模块、精简模块和/或替换模块提供数据支持。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图、图像渲染、合成以及图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动等。
在本申请中,内核层还包含了图形处理器(graphics processing unit,GPU)驱动。GPU驱动用于接收指令重组模块发送的绘制指令,并根据绘制指令调用GPU进行模型绘制渲染。
图4示出了本申请提供的一种模型简化方法的示意性流程图,作为示例而非限定,该方法可以应用于上述终端设备中。
参考图4,该方法包括:
S301、根据第一模型的绘制指令,获取绘制第一模型时的负载信息。
参考图3,第一模型在绘制时,APP通过图形API向GPU驱动发送第一模型的绘制指令,然后GPU驱动根据接收到的绘制指令绘制并显示。在本申请中,可以通过CSDR模块截取API向GPU驱动发送第一模型的绘制指令。
一些实施方式中,绘制指令中包括多个顶点和多组索引顺序,每组索引顺序包括多个按顺序排列的索引值,每个索引值对应一个顶点。通过根据索引值的顺序,将与索引值对应的顶点连接绘制,即可得到相应的模型。当索引值或顶点越多时,绘制的模型也就越复杂。相应的,绘制该模型时的负载也就越大。因此,可以将顶点的数量和索引值的数量中的至少一个作为绘制模型时的负载信息。例如,若第一模型的绘制指令中,包括了5235个索引值,则可以将“5235个索引值”作为负载信息。
S302、当负载信息不满足预设条件时,执行S306;当负载信息满足预设条件时,执行S303。
其中,确定第一模型的负载信息是否满足预设条件时,可以先获取第一模型的绘制指令的类型,不同类型的绘制对应不同的负载阈值,即可根据第一模型的绘制指令的类型确定对应的负载阈值。例如,可以使用嵌入式系统三维图形库(OpenGL for embeddedsystems,GLES)中的glDrawElements指令,绘制含有索引的网格模型。使用glDrawElementInstanced指令同时绘制多个含有相同索引或顶点的模型。例如,可以使用glDrawElementInstanced指令绘制如树、草地、花、石头等。
作为示例,使用glDrawElementInstanced指令作为绘制指令时,绘制指令中包括了绘制一个模型所需的索引数量、以及绘制模型的个数。可以根据索引数量以及绘制模型的个数确定该指令对应的负载阈值。
例如,若绘制指令指示绘制5个索引值数量为1500的模型,该绘制指令的负载信息为7500个索引值。根据终端设备的硬件参数、运行状态等信息,可以判断进行7500个索引值的模型绘制会造成较大的负载,则可将负载阈值设置为4500,对第一模型进行简化,降低负载。
当S301中获取的第一模型的负载信息大于对应的负载阈值时,确定第一模型的负载信息满足预设条件。
一个示例中,参考S301中的示例,若第一模型的负载信息为“5235个索引值”,对应的负载阈值为4500个索引值。第一模型的负载信息大于对应的负载阈值(5235>4500),即第一模型的负载信息满足预设条件。第一模型需要进行模型简化。
另一个示例中,若第一模型的负载信息为“3324个索引值”,对应的负载阈值为“4500个索引值”,则第一模型的负载信息小于对应的负载阈值(3324<4500),即第一模型的负载信息不满足预设条件。无需对第一模型进行简化,可直接使用第一模型进行显示。
需要说明的是,在本申请中,模型简化指的是根据第一模型的绘制指令生成第一模型的LODX模型,例如,若原始的第一模型为LOD0,则模型简化可以生成第一模型的LOD1模型。或者,还可以相应的生成LOD2模型、LOD3模型等,生成LOD模型的数量在此不做限制。其中,LODX模型可以一次生成多个,以便于后续使用,也可以在需要的时候生成对应的LOD模型,本申请对此亦不做限制。
S303、为第一模型匹配对应的第二模型,若匹配成功,执行S304;若匹配失败,则执行S305和S306。
S304、获取第二模型的绘制指令。
一些实施方式中,为第一模型匹配对应的第二模型,可以先获取第一模型的绘制指令中包括的顶点和/或索引值。然后根据顶点和/或索引值,在预先存储的多细节层次匹配表中匹配与第一模型对应的第二模型。
需要说明的是,多细节层次匹配表中包括第一模型的绘制指令与第二模型的对应关系。多细节层次匹配表可以存储在图3中示出的数据库中,数据库可以是终端设备本地的数据库也可以是设置在其他设备上的数据库,如服务器端的数据库或者云端的数据库等。
如果在多细节层次匹配表中匹配到与第一模型对应的第二模型,则表明在数据库中预存了与第一模型对应的第二模型的绘制指令。这个情况下,可以在数据库中查找并获取该第二模型的绘制指令。
一种可能的实施方式中,一个第一模型可以对应多个第二模型,每个第二模型即是第一模型对应的LODX模型,具体使用哪个层级的LOD模型作为第一模型对应的第二模型,可以根据LOD的调用策略确定。
作为示例,若第一模型与视角相机在场景中的距离小于20米,则可以确定第一模型的LOD层级为LOD0;若第一模型与视角相机在场景中的距离大于20米且小于100米,则可以确定第一模型的LOD层级为LOD1;若第一模型与视角相机在场景中的距离大于100米,则可以确定第一模型的LOD层级为LOD2。
可选的,在确定LOD层级时,还可以考虑第一模型占用的像素点在整个显示屏幕的像素点中的占用比例、第一模型显示的时长等因素,本申请对此不作限制。
还有一些实施方式中,若匹配失败,则还需获取第一模型的模型结构类别,以便于根据第一模型的模型结构类别进行模型简化,生成第二模型的绘制指令。
其中,模型结构类别包括网格结构或面片结构,网格结构的模型是使用网格绘制模型的表面形态建立的模型。例如,参考图5示出的峡谷模型,通过网格绘制了峡谷的表面地形,再在网格上对应渲染地形对应的贴图,即可得到峡谷模型。
面片结构的模型则是绘制多个独立的面片后,再将多个面片聚合为一个模型。例如,图1中树的模型即为面片结构的模型,在模型中,将树叶的贴图渲染在一个绘制好的面片上,再将每个面片聚合在树干和树枝上,即可得到树的模型。
一种可能的实现方式中,可以根据第一模型的绘制指令中,每组索引顺序内的索引值,确定第一模型的模型结构为网格结构或面片结构。由于绘制第一模型时,是根据索引值寻找对应的顶点,然后根据顶点绘制第一模型。所以,索引值的数量以及索引值之间的数值关系可以用于识别第一模型的模型结构。
一种实现方式中,若每组索引顺序内的索引值的数量为6,且6个索引值中包括2对相同的索引值和2个与其他索引值均不相同的索引值时,则确定模型结构为面片结构。否则,确定模型结构为网格结构。
作为示例,可以参考图6示出的面片结构,1、2、3、4为面片结构的四个顶点。由于在绘制模型时,只能绘制三边面,所以一个面片结构需由两个三边面组成。在绘制时,该面片的索引顺序为“1-2-3-1-3-4”,也就是其中包括2个“1”、2个“3”、1个“2”和1个“4”。即索引顺序符合这个规律的模型,可以确定为面片结构的模型,否则确定为网格结构的模型。
S305、根据第一模型的绘制指令,生成第二模型的绘制指令。
一些实施方式中,如果在多细节层次匹配表中未匹配到与第一模型对应的第二模型,则表明在数据库中没有与第一模型对应的第二模型的绘制指令。这个情况下,可以根据第一模型的绘制指令,生成第二模型的绘制指令。
需要说明的是,生成第二模型的绘制指令时,可以根据LOD的调用策略确定生成的第二模型的LOD层级,并生成对应层级的LODX模型。或者,也可以生成多个第二模型,每个第二模型对应不同层级的LOD模型,如可生成两个第二模型,一个为LOD1模型,另一个为LOD2模型。生成多个层级的LOD模型时,可以根据LOD的调用策略,优先生成需调用的LODX模型,然后在空闲时再生成其余的LODX模型。例如,若LOD的调用策略确定需要显示LOD1模型,在生成多个第二模型时,可以先生成LOD1模型,然后在空闲时继续生成LOD2模型。
在此,以根据第一模型的绘制指令,生成一个第二模型的绘制指令为例进行说明,本领域技术人员应明确,在生成多个第二模型时,也可以根据以下方法实现。
在生成第二模型的绘制指令时,需要考虑第一模型的模型结构。对于网格结构或面片结构,会采取不同的简化方法。
一些实施方式中,当模型结构类别为网格结构时,可以采用三维网格精简算法(quadratic error metrics)对网格表面进行简化,在进行简化时,不改变顶点值,只对索引值进行简化,这样在指令重构层中无需创建新的顶点,仅需创建新的索引顺序,可以提高绘制效率,同时可以使生成的数据库更小。
另一些实施方式中,当模型结构类别为面片结构时,则可以采取基于空间密度的简化方法,对第一模型简化并得到第二模型的绘制指令。
其中,空间密度指的是面片在第一模型中分布的密集程度,为了量化空间密度,可以先获取每个面片在第一模型中的分布特征,用于表示面片在第一模型中的分布。
一些实施方式中,参考图7,可以将每个面片映射至空间网格坐标系(X,Y,Z)内。其中,图7示出了第一面片71、第二面片72以及第三面片73。为了更加清楚的进行量化,需要获取每个面片的特征点,面片的特征点包括面片的顶点以及设置于面片内部的至少一个采样点。作为示例,在第一面片71中可以设置3个采样点712。则第一面片的特征点包括第一面片71的4个顶点711、以及3个采样点712。
在将每个面片映射至空间网格坐标系后,面片的特征点会分布在空间网格坐标系的多个网格中。然后,可以获取空间网格坐标系内每个网格的密度、以及每个面片在网格内的出现次数,作为量化空间密度的参数。
其中,每个网格的密度包括每个网格内包含的面片数量。在获取网格的密度时,可以根据网格坐标系中每个网格包括的特征点,以及每个特征点对应的面片,确定网格的密度。相应的,在获取到所有的网格密度后,也可以统计得到每个面片在网格内出现的次数。
作为示例,设空间网格坐标系中有21个网格,存在11个面片,则面片标号为面片0至面片11。对网格密度进行统计,可以得到表1示出的网格密度统计表:
表1
根据表1进行统计,可以得到图8示出的统计图。参考表1和图8,可以得到,网格0的网格密度最小,其中只有1个面片5,而网格4和网格14的网格密度最大,包括了9个不同的面片。也就是说,在网格4和网格14中会进行多次的绘制,而这些绘制的面片相互重叠,存在重复绘制的情况。
一些实施方式中,可以采取递归剔除的方式对网格进行简化。
一种可能的实施方式中,可以根据每个网格的密度对网格进行排序。然后,根据面片的出现次数,对排序后网格密度最大的i个网格中的面片进行排序。最后,根据排序后面片出现次数最多的k个面片、以及排序后网格密度最小的j个网格中出现的面片,对网格进行稀疏,减少每个网格中的面片数量,得到稀疏后的网格,i和k为大于1的整数,j为自然数。
需要说明的是,在进行稀疏时,可以保留排序后网格密度最小的j个网格中出现的面片,以防止稀疏后的网格出现空网格。
其中,在进行递归剔除时可以控制对网格进行稀疏的力度,以得到不同的LOD级别的模型。作为示例,在每个网格中保留1-3个面片,可以生成LOD1模型。在每个网格中保留0-2个面片,可以生成LOD2模型。网格中保留面片的数量与LOD级别的关系仅为示例,在此并不做限制。
作为示例,参考表1和图8,对表1中的网格密度进排列,得到表2。
其中,根据表2对网格进行稀疏时,以LOD1为例进行。
表2
在本实施例中,设k为7,i为10,j为3。则先对前10行网格进行统计,得到表3,再对后3行网格进行统计,得到表4:
表3
面片标号 | 前10行中出现的次数 |
7 | 10 |
2 | 9 |
3 | 9 |
5 | 9 |
4 | 8 |
1 | 7 |
6 | 7 |
8 | 6 |
9 | 6 |
10 | 3 |
0 | 2 |
表4
一种实施方式中,可以将后3行(网格3、网格6和网格0)中出现的面片保留,防止进行稀疏后,网格3、网格6和网格0中的面片被删除,导致网格3、网格6和网格0中没有面片,影响模型的视觉效果。
其中,排序后面片出现次数最多的面片依次为面片7、面片2、面片3、面片5、面片4、面片1、面片6、面片8、面片9、面片10、面片0。要保留的面片为面片4、面片5、面片6和面片7。所以,可以将网格中的面片2、面片3、面片5、面片1、面片8、面片9、面片10剔除。需要说明的是,面片0由于出现的频率较低,因此可以不予剔除。
对网格中面片进行剔除后,可得到表5:
表5
网格号 | 面片标号 | 面片标号 | 面片标号 | 面片标号 | 密度 |
0 | 5 | 1 | |||
1 | 4 | 1 | |||
2 | 4 | 6 | 5 | 7 | 4 |
3 | 4 | 7 | 2 | ||
4 | 6 | 5 | 4 | 7 | 4 |
5 | 5 | 4 | 7 | 3 | |
6 | 5 | 4 | 7 | 0 | 4 |
7 | 5 | 4 | 7 | 6 | 4 |
8 | 6 | 7 | 2 | ||
9 | 5 | 1 | |||
10 | 4 | 7 | 5 | 6 | 4 |
11 | 6 | 7 | 5 | 3 | |
12 | 6 | 7 | 5 | 4 | 4 |
13 | 5 | 7 | 2 | ||
14 | 7 | 4 | 5 | 0 | 4 |
15 | 5 | 7 | 6 | 4 | 4 |
16 | 5 | 6 | 2 | ||
17 | 6 | 5 | 4 | 3 | |
18 | 7 | 0 | 6 | 3 | |
19 | 6 | 5 | 7 | 3 | |
20 | 6 | 1 |
根据表5进行统计,可以得到图9示出的统计图。可以看出,图9中的网格密度更加平均,高密度网格中面片的数量也明显减少。
最后,可根据每个稀疏后的网格中面片对应的索引顺序,生成第二模型的绘制指令。
一些实施方式中,可参考图10,其中包括第一模型1001、以及基于空间密度的简化方法简化得到的第二模型1002。从图10中可以明显看出,第二模型1002的外形轮廓与第一模型1001接近,但是其内部较第一模型1001更为稀疏。实现了在降低树叶稀疏程度的同时,尽量保留了树叶的边界结构,使其具有良好的视觉效果。
在一些实施方式中,生成第二模型的绘制指令时,还可以先获取第二模型的绘制指令的生成状态。若第二模型的绘制指令的生成状态为未完成,则继续根据第一模型的绘制指令绘制第一模型并进行显示。若第二模型的绘制指令的生成状态为已完成,则生成第一模型的绘制指令与第二模型的对应关系,并存入多细节层次匹配表中。
在本实施例中,由于对第一模型进行简化并得到第二模型的绘制指令需要一定的时间。在这个过程中,视角相机可能会发生变化,如转向和/或移动。当视角相机发生变化时,场景中的模型位置也随之变化。导致需要重新绘制第一模型。在重新绘制第一模型之前,获取第二模型的绘制指令的生成状态。若还未生成,则继续绘制第一模型;若已生成,则生成第一模型的绘制指令与第二模型的对应关系,并存入多细节层次匹配表中,执行后续步骤。
S306、根据第一模型的绘制指令绘制第一模型并进行显示。
一些实施方式中,由于在进行场景渲染时,尚未确定第一模型是否需要进行模型简化,所以可以先将第一模型绘制渲染并显示,以展示完整的场景。当确定当第一模型的负载信息不满足预设条件时,即第一模型无需进行模型简化时,继续使用第一模型进行显示。
S307、根据第二模型的绘制指令绘制第二模型。
S308、将第二模型在第一模型的显示区域进行显示。
一些实施方式中,参考图11,图11中的a示出了未进行替换时的场景,在该场景中,包括了两个第一模型1001。两个第一模型距离视角相机的距离不同,但是在场景建立时未获取到与第一模型对应的LOD模型,因此无法利用LOD技术对距离较远的第一模型1001进行简化。
在本实施例中,在获取到第二模型的绘制指令后,根据第二模型的绘制指令绘制第二模型,在第二模型完成绘制后,停止需要替换的第一模型(如图11中的a示出的较远的第一模型1001)。然后将绘制渲染好的第二模型替换至需要替换的第一模型的显示区域。例如,参考图11中的b,在完成替换后,原来较远的第一模型1001已经被替换为第二模型1002。
图12示出了本申请提供的模型简化方法的应用场景示意图。
一些实施方式中,参考图3和图12,模型简化应用于识别模块、精简模块以及替换模块。其中,S301-S304以及S306的步骤可以由识别模块执行,识别模块运行在主线程中,即S301-S304以及S306由主线程执行。其中,主线程是指进行模型绘制的APP所占用的线程,主线程可运行在CPU的大核中。
而S305则由精简模块执行,精简模块在执行S305中的方法时,可以先建立一个简模线程,专门用于对第一模型进行简化,简模线程可以运行在CPU的小核中。建立好的简模线程接受主线程发送的模型简化请求,然后根据模型简化请求对第一模型进行简化,得到第二模型的绘制指令。其中,模型简化请求可以包括第一模型的绘制指令、第一模型的模型结构类型。最后,在得到第二模型的绘制指令后,精简模块将第二模型的绘制指令发送给替换模块。
一些实施方式中,在精简模块完成对第一模型的简化后,可以销毁简模线程,直到再次进行模型简化时,重新建立简模线程。
替换模块在接收到第二模型的绘制指令后,执行S307和S308中的方法。其中,替换模块也运行在主线程上。替换模块可先将第二模型的绘制指令发送给指令重组模块,指令重组模块根据接收到的第二模型的绘制指令,对绘制指令进行优化重组,然后发送至GPU驱动进行绘制渲染,得到第二模型。最后,替换模块再根据第二模型的LOD层级、视角相机与模型间的距离的等参数,将第二模型替换至场景中。
如图12所示,在将第二模型替换至场景中后,终端设备展示画面时的每秒帧数(frames per second,FPS)得到了有效的提高,也就是说,展示的画面更加流畅了。
图13示出了另一种模型简化方法的流程示意图。
参考图13,在本实施例中,模型简化方法包括:
S1301、获取第一模型的绘制指令。
S1302、根据第一模型的绘制指令,获取第一模型的绘制指令中索引值的数量。
S1303、索引值的数量是否大于或等于预设阈值,若大于或等于则执行S1304;若小于则执行S1305。
S1304、在多细节层次匹配表中,是否根据第一模型的绘制指令匹配到对应的第二模,若匹配到,则执行S1310;若未匹配到,则执行S1305和S1306。
S1305、根据第一模型的绘制指令,绘制第一模型并进行显示。
S1306、根据第一模型的绘制指令,获取第一模型的模型结构。
S1307、第一模型的模型结构是否为面片结构,若是则执行S1308,若不是则执行S1309。
S1308、通过基于空间密度的简化方法对第一模型进行简化,生成第二模型的绘制指令,执行S1311。
S1309、通过三维网格精简算法对第一模型进行简化,生成第二模型的绘制指令,执行S1311。
S1310、获取第二模型的绘制指令。
S1311、根据第二模型的绘制指令绘制第二模型。
S1312、停止绘制第一模型。
S1313、将第二模型在第一模型的显示区域进行显示。
其中,S1301-S1313中各步骤方法的实施方式与S301-S309中相同,在此不做赘述。
在S1301-S1313的基础上,以游戏应用为例,对本申请提供的模型简化方法做进一步说明。
一些实施方式中,针对不同游戏应用,以及开发游戏应用时使用的引擎,还可以针对性的增加负载信息以及面片结构的判断条件,使得判断是否需要进行模型简化以及模型是否为面片结构时,结果更加准确。例如,对于NeoX引擎,可以增加索引计数(indexcount)、绘制调用偏移量(draw call offset)作为负载信息。还可以根据glDarwElementInstanced函数,辅助判断模型结构是否为面片结构。
作为示例,在对第一模型进行简化时,以树的模型为例,可以设置面片的剔除率为16%,即剔除掉16%的高频面片。设置空间网格的尺寸为24*48*24,在每个面片上设置26个采样点,也就是每个面片上包括30个特征点。
参考图14,图14中的a为第一模型,其中包括5235个索引值,在剔除16%的面片后,索引值为4389个,即得到图14中的b所示的第二模型。
相应的,对于网格结构的模型,可以参照图15、图16、以及图17。
其中,图15中的a为第一模型,其中包括6144个索引值,在剔除16%的面片后,索引值为2316个,即得到图15中的b所示的第二模型。
图16中的a为第一模型,其中包括23070个索引值,在剔除16%的面片后,索引值为9642个,即得到图16中的b所示的第二模型。
图17中的a为第一模型,其中包括6702个索引值,在剔除16%的面片后,索引值为3486个,即得到图17中的b所示的第二模型。
游戏应用在经过本申请提供的模型简化方法处理后,面片的剔除率在15%~17%的范围内,游戏画面的帧数提高了7%~10%。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
对应于上文实施例提供的方法,图18示出了本申请实施例提供的模型简化装置的结构框图,为了便于说明,仅示出了与本申请实施例相关的部分。
参照图18,该装置包括:
获取模块1801,用于根据第一模型的绘制指令,获取绘制第一模型时的负载信息。
获取模块1801,还用于当负载信息满足预设条件时,根据第一模型的绘制指令,获取对应的第二模型的绘制指令。
绘制模块1802,用于根据第二模型的绘制指令绘制第二模型并进行显示。
一些实施方式中,为第一模型匹配对应的第二模型。
当匹配成功时,获取模块1801,具体用于获取第二模型的绘制指令。
当匹配失败时,参考图19,该装置还包括生成模块1803,用于生成第二模型的绘制指令。
一些实施方式中,当匹配失败时,生成模块1803,具体用于获取第一模型的模型结构类别。根据模型结构类别和第一模型的绘制指令,生成第二模型的绘制指令。
一些实施方式中,绘制指令包括多个顶点和多组索引顺序,每组索引顺序包括多个按顺序排列的索引值,每个索引值对应一个顶点,模型结构类别包括网格结构或面片结构。
生成模块1803,具体用于获取第一模型的绘制指令中,每组索引顺序包括的索引值。根据每组索引顺序内的索引值,确定第一模型的模型结构为网格结构或面片结构。
一些实施方式中,生成模块1803,具体用于若每组索引顺序内的索引值的数量为6,且6个索引值中包括2对相同的索引值和2个与其他索引值均不相同的索引值时,则确定模型结构为面片结构。否则,确定模型结构为网格结构。
一些实施方式中,当模型结构类别为面片结构时,每组索引顺序用于绘制一个面片。
生成模块1803,具体用于当模型结构类别为面片结构时,根据第一模型的绘制指令,获取每个面片在第一模型中的分布特征。根据分布特征和第一模型的绘制指令,生成第二模型的绘制指令。
一些实施方式中,生成模块1803,具体用于将每个面片映射至空间网格坐标系内。获取空间网格坐标系内每个网格的密度、以及每个面片在网格内的出现次数,每个网格的密度包括每个网格内包含的面片数量。
一些实施方式中,生成模块1803,具体用于根据每个网格的密度对网格进行排序。根据面片的出现次数,对排序后网格密度最大的i个网格中的面片进行排序。根据排序后面片出现次数最多的k个面片,对排序后网格的密度最大的i个网格进行稀疏,减少每个网格中的面片数量,得到稀疏后的网格,i和k为大于1的整数。根据每个稀疏后的网格中面片对应的索引顺序,生成第二模型的绘制指令。
一些实施方式中,生成模块1803,具体用于获取排序后网格密度最小的j个网格中出现的面片,j为自然数。根据网格密度最小的j个网格中出现的面片、排序后面片出现次数最多的k个面片,对每个网格进行稀疏,减少网格中的面片数量,得到稀疏后的网格。
一些实施方式中,生成模块1803,具体用于获取每个面片的特征点,面片的特征点包括面片的顶点以及设置于面片内部的至少一个采样点。获取网格中包括的特征点,根据每个特征点对应的面片,确定网格的密度。
一些实施方式中,获取模块1801,具体用于获取绘制指令中包括的顶点数量和/或索引值数量、绘制指令的指令类型对应的负载阈值。
其中,负载信息满足预设条件,包括:顶点数量和/或索引值数量大于或等于负载阈值。
一些实施方式中,获取模块1801,具体用于获取第一模型的绘制指令中包括的顶点和/或索引值。根据顶点和/或索引值,在预先存储的多细节层次匹配表中匹配与第一模型对应的第二模型,多细节层次匹配表中包括第一模型的绘制指令与第二模型的对应关系。
一些实施方式中,根据第一模型的绘制指令,获取绘制第一模型时的负载信息之后,绘制模块1802,还用于根据第一模型的绘制指令绘制第一模型并进行显示。
一些实施方式中,当负载信息满足预设条件时,获取模块1801,具体用于获取第二模型的绘制指令的生成状态。若第二模型的绘制指令的生成状态为未完成,则根据第一模型的绘制指令绘制第一模型并进行显示。
一些实施方式中,当负载信息满足预设条件时,获取模块1801,具体用于获取第二模型的绘制指令的生成状态。若第二模型的绘制指令的生成状态为已完成,则生成第一模型的绘制指令与第二模型的对应关系,并存入多细节层次匹配表中。
一些实施方式中,绘制模块1801,具体用于根据第二模型的绘制指令绘制第二模型。停止绘制第一模型。将第二模型在第一模型的显示区域进行显示。
需要说明的是,上述模块之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
图20为本申请一实施例提供的终端设备的结构示意图。如图20所示,该实施例的终端设备20包括:至少一个处理器2001(图20中仅示出一个处理器)、存储器2002以及存储在存储器2002中并可在至少一个处理器2001上运行的计算机程序2003。处理器2001执行计算机程序2003实现上述方法实施例中的步骤。
终端设备20可以是手机、桌上型计算机、笔记本、掌上电脑及云端服务器等终端设备。该终端设备可包括,但不仅限于,处理器2001、存储器2002。本领域技术人员可以理解,图11仅仅是终端设备20的举例,并不构成对终端设备20的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。
所称处理器2001可以是中央处理单元(Central Processing Unit,CPU),该处理器2001还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器2002在一些实施例中可以是终端设备20的内部存储单元,例如终端设备20的硬盘或内存。存储器2002在另一些实施例中也可以是终端设备20的外部存储设备,例如终端设备20上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器2002还可以既包括终端设备20的内部存储单元也包括外部存储设备。存储器2002用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如计算机程序的程序代码等。存储器2002还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在移动终端上运行时,使得移动终端执行时实现可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种芯片系统,芯片系统包括存储器和处理器,处理器执行存储器中存储的计算机程序,以实现上述各个方法实施例中的步骤。
本申请实施例提供了一种芯片系统,芯片系统包括处理器,处理器与上述的计算机可读存储介质耦合,处理器执行计算机可读存储介质中存储的计算机程序,以实现上述各个方法实施例中的步骤。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
本申请实施例提供了一种芯片系统,芯片系统包括存储器和处理器,处理器执行存储器中存储的计算机程序,以实现上述各个方法实施例中的步骤。
本申请实施例提供了一种芯片系统,芯片系统包括处理器,处理器与计算机可读存储介质耦合,处理器执行计算机可读存储介质中存储的计算机程序,以实现上述各个方法实施例中的步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的方法、装置和终端设备,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
最后应说明的是:以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (19)
1.一种模型简化方法,其特征在于,所述方法包括:
根据第一模型的绘制指令,获取绘制所述第一模型时的负载信息;
当所述负载信息满足预设条件时,根据所述第一模型的绘制指令,获取对应的第二模型的绘制指令;
根据所述第二模型的绘制指令绘制所述第二模型并进行显示。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一模型的绘制指令,获取对应的第二模型的绘制指令,包括:
为所述第一模型匹配对应的第二模型;
当匹配成功时,获取所述第二模型的绘制指令;
当匹配失败时,生成所述第二模型的绘制指令。
3.根据权利要求2所述的方法,其特征在于,所述当匹配失败时,生成所述第二模型的绘制指令,包括:
获取所述第一模型的模型结构类别;
根据所述模型结构类别和所述第一模型的绘制指令,生成所述第二模型的绘制指令。
4.根据权利要求3所述的方法,其特征在于,所述绘制指令包括多个顶点和多组索引顺序,每组所述索引顺序包括多个按顺序排列的索引值,每个所述索引值对应一个所述顶点,所述模型结构类别包括网格结构或面片结构;所述获取所述第一模型的模型结构类别,包括:
获取所述第一模型的绘制指令中,每组索引顺序包括的索引值;
根据所述每组索引顺序内的索引值,确定所述第一模型的模型结构为所述网格结构或所述面片结构。
5.根据权利要求4所述的方法,其特征在于,所述根据所述每组索引顺序内的索引值,确定所述第一模型的模型结构为所述网格结构或所述面片结构,包括:
若所述每组索引顺序内的索引值的数量为6,且6个索引值中包括2对相同的索引值和2个与其他索引值均不相同的索引值时,则确定所述模型结构为面片结构;
否则,确定所述模型结构为网格结构。
6.根据权利要求4或5所述的方法,其特征在于,当所述模型结构类别为面片结构时,所述每组索引顺序用于绘制一个面片;
根据所述模型结构类别和所述第一模型的绘制指令,生成所述第二模型的绘制指令,包括:
当所述模型结构类别为面片结构时,根据所述第一模型的绘制指令,获取每个面片在第一模型中的分布特征;
根据所述分布特征和所述第一模型的绘制指令,生成所述第二模型的绘制指令。
7.根据权利要求6所述的方法,其特征在于,所述获取每个面片在第一模型中的分布特征,包括:
将每个面片映射至空间网格坐标系内;
获取所述空间网格坐标系内每个网格的密度、以及每个所述面片在网格内的出现次数,所述每个网格的密度包括每个所述网格内包含的面片数量。
8.根据权利要求7所述的方法,其特征在于,所述根据所述分布特征和所述第一模型的绘制指令,生成所述第二模型的绘制指令,包括:
根据每个所述网格的密度对所述网格进行排序;
根据面片的出现次数,对排序后所述网格密度最大的i个网格中的面片进行排序;
根据排序后所述面片出现次数最多的k个面片,对每个所述网格进行稀疏,减少所述网格中的面片数量,得到稀疏后的网格,i和k为大于1的整数;
根据每个所述稀疏后的网格中面片对应的索引顺序,生成所述第二模型的绘制指令。
9.根据权利要求8所述的方法,其特征在于,所述根据排序后所述面片出现次数最多的k个面片,对每个所述网格进行稀疏,减少所述网格中的面片数量,得到稀疏后的网格,包括:
获取排序后所述网格密度最小的j个网格中出现的面片,j为自然数;
根据所述网格密度最小的j个网格中出现的面片、所述排序后所述面片出现次数最多的k个面片,对每个所述网格进行稀疏,减少所述网格中的面片数量,得到稀疏后的网格。
10.根据权利要求7-9任一项所述的方法,其特征在于,获取所述空间网格坐标系内每个网格的密度,包括:
获取每个所述面片的特征点,所述面片的特征点包括所述面片的顶点以及设置于所述面片内部的至少一个采样点;
获取网格中包括的所述特征点,根据每个所述特征点对应的面片,确定所述网格的密度。
11.根据权利要求1-10任一项所述的方法,其特征在于,所述获取绘制第一模型时的负载信息,包括:
获取所述绘制指令中包括的顶点数量和/或索引值数量、所述绘制指令的指令类型对应的负载阈值;
所述负载信息满足预设条件,包括:
所述顶点数量和/或所述索引值数量大于或等于所述负载阈值。
12.根据权利要求2-11任一项所述的方法,其特征在于,所述为所述第一模型匹配对应的第二模型,包括:
获取所述第一模型的绘制指令中包括的顶点和/或索引值;
根据所述顶点和/或索引值,在预先存储的多细节层次匹配表中匹配与所述第一模型对应的第二模型,所述多细节层次匹配表中包括所述第一模型的绘制指令与第二模型的对应关系。
13.根据权利要求1-12任一项所述的方法,其特征在于,根据第一模型的绘制指令,获取绘制所述第一模型时的负载信息之后,所述方法还包括:
根据所述第一模型的绘制指令绘制所述第一模型并进行显示。
14.根据权利要求13所述的方法,其特征在于,当所述负载信息满足预设条件时,根据所述第一模型的绘制指令,获取对应的第二模型的绘制指令,包括:
获取所述第二模型的绘制指令的生成状态;
若所述第二模型的绘制指令的生成状态为未完成,则根据所述第一模型的绘制指令绘制所述第一模型并进行显示。
15.根据权利要求13所述的方法,其特征在于,当所述负载信息满足预设条件时,根据所述第一模型的绘制指令,获取对应的第二模型的绘制指令,包括:
获取所述第二模型的绘制指令的生成状态;
若所述第二模型的绘制指令的生成状态为已完成,则生成所述第一模型的绘制指令与所述第二模型的对应关系,并存入多细节层次匹配表中。
16.根据权利要求13或15所述的方法,其特征在于,所述根据所述第二模型的绘制指令绘制所述第二模型并进行显示,包括:
根据所述第二模型的绘制指令绘制所述第二模型;
将所述第二模型在所述第一模型的显示区域进行显示。
17.一种模型简化装置,其特征在于,所述装置包括:
获取模块,用于根据第一模型的绘制指令,获取绘制所述第一模型时的负载信息;
所述获取模块,还用于当所述负载信息满足预设条件时,根据所述第一模型的绘制指令,获取对应的第二模型的绘制指令;
绘制模块,用于根据所述第二模型的绘制指令绘制所述第二模型并进行显示。
18.一种终端设备,包括至少一个处理器、存储器以及存储在所述存储器中并可在所述至少一个处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至16任一项所述的方法。
19.一种计算机程序产品,所述计算机程序产品存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至16任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011275338.XA CN114491914A (zh) | 2020-11-13 | 2020-11-13 | 模型简化方法、装置、终端设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011275338.XA CN114491914A (zh) | 2020-11-13 | 2020-11-13 | 模型简化方法、装置、终端设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114491914A true CN114491914A (zh) | 2022-05-13 |
Family
ID=81489773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011275338.XA Pending CN114491914A (zh) | 2020-11-13 | 2020-11-13 | 模型简化方法、装置、终端设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114491914A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114842122A (zh) * | 2022-07-01 | 2022-08-02 | 北京百度网讯科技有限公司 | 模型渲染方法、装置、设备及存储介质 |
CN117557740A (zh) * | 2024-01-10 | 2024-02-13 | 四川见山科技有限责任公司 | 三维模型分割层级切换方法、装置、电子设备及存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6819318B1 (en) * | 1999-07-23 | 2004-11-16 | Z. Jason Geng | Method and apparatus for modeling via a three-dimensional image mosaic system |
US20060132488A1 (en) * | 2004-12-17 | 2006-06-22 | Electronics And Telecommunications Research Institute | Apparatus and method for representing multi-level LOD three-dimensional image |
CN101419721A (zh) * | 2008-10-30 | 2009-04-29 | 上海大学 | 一种基于视域剔除的复杂室内场景快速绘制方法 |
US20100091018A1 (en) * | 2008-07-11 | 2010-04-15 | Advanced Micro Devices, Inc. | Rendering Detailed Animated Three Dimensional Characters with Coarse Mesh Instancing and Determining Tesselation Levels for Varying Character Crowd Density |
CN101751694A (zh) * | 2008-12-10 | 2010-06-23 | 中国科学院自动化研究所 | 一种对复杂叶片的快速简化和绘制方法 |
WO2010121085A1 (en) * | 2009-04-16 | 2010-10-21 | Ioan Alexandru Salomie | Scalable particle interactive networks |
CN106447768A (zh) * | 2016-10-13 | 2017-02-22 | 国家测绘地理信息局卫星测绘应用中心 | 一种适用于三维场景中三维模型并行绘制的方法 |
US20170228894A1 (en) * | 2014-09-12 | 2017-08-10 | Kubity | System, method and computer program product for automatic optimization of 3d textured models for network transfer and real-time rendering |
CN107491481A (zh) * | 2017-07-10 | 2017-12-19 | 深圳三维盘酷网络科技有限公司 | Lod模型搜索方法及系统、建立lod模型数据库的方法和计算机可读的存储介质 |
KR20180117499A (ko) * | 2017-04-19 | 2018-10-29 | 에스케이텔레콤 주식회사 | 3차원 메쉬 데이터 간소화 방법 및 장치 |
CN111476872A (zh) * | 2019-01-23 | 2020-07-31 | 华为技术有限公司 | 一种图像绘制方法及图像绘制装置 |
-
2020
- 2020-11-13 CN CN202011275338.XA patent/CN114491914A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6819318B1 (en) * | 1999-07-23 | 2004-11-16 | Z. Jason Geng | Method and apparatus for modeling via a three-dimensional image mosaic system |
US20060132488A1 (en) * | 2004-12-17 | 2006-06-22 | Electronics And Telecommunications Research Institute | Apparatus and method for representing multi-level LOD three-dimensional image |
US20100091018A1 (en) * | 2008-07-11 | 2010-04-15 | Advanced Micro Devices, Inc. | Rendering Detailed Animated Three Dimensional Characters with Coarse Mesh Instancing and Determining Tesselation Levels for Varying Character Crowd Density |
CN101419721A (zh) * | 2008-10-30 | 2009-04-29 | 上海大学 | 一种基于视域剔除的复杂室内场景快速绘制方法 |
CN101751694A (zh) * | 2008-12-10 | 2010-06-23 | 中国科学院自动化研究所 | 一种对复杂叶片的快速简化和绘制方法 |
WO2010121085A1 (en) * | 2009-04-16 | 2010-10-21 | Ioan Alexandru Salomie | Scalable particle interactive networks |
US20170228894A1 (en) * | 2014-09-12 | 2017-08-10 | Kubity | System, method and computer program product for automatic optimization of 3d textured models for network transfer and real-time rendering |
CN106447768A (zh) * | 2016-10-13 | 2017-02-22 | 国家测绘地理信息局卫星测绘应用中心 | 一种适用于三维场景中三维模型并行绘制的方法 |
KR20180117499A (ko) * | 2017-04-19 | 2018-10-29 | 에스케이텔레콤 주식회사 | 3차원 메쉬 데이터 간소화 방법 및 장치 |
CN107491481A (zh) * | 2017-07-10 | 2017-12-19 | 深圳三维盘酷网络科技有限公司 | Lod模型搜索方法及系统、建立lod模型数据库的方法和计算机可读的存储介质 |
CN111476872A (zh) * | 2019-01-23 | 2020-07-31 | 华为技术有限公司 | 一种图像绘制方法及图像绘制装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114842122A (zh) * | 2022-07-01 | 2022-08-02 | 北京百度网讯科技有限公司 | 模型渲染方法、装置、设备及存储介质 |
CN117557740A (zh) * | 2024-01-10 | 2024-02-13 | 四川见山科技有限责任公司 | 三维模型分割层级切换方法、装置、电子设备及存储介质 |
CN117557740B (zh) * | 2024-01-10 | 2024-04-09 | 四川见山科技有限责任公司 | 三维模型分割层级切换方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6504212B2 (ja) | 装置、方法およびシステム | |
CN112989430A (zh) | 完整性校验方法、装置、终端设备及验证服务器 | |
US9594473B2 (en) | Sound visualization method and apparatus of electronic device | |
CN108846274A (zh) | 一种安全验证方法、装置及终端 | |
CN110533755A (zh) | 一种场景渲染的方法以及相关装置 | |
CN112036492B (zh) | 样本集处理方法、装置、设备及存储介质 | |
CN114491914A (zh) | 模型简化方法、装置、终端设备及可读存储介质 | |
CN111325220B (zh) | 图像生成方法、装置、设备及存储介质 | |
CN111603772B (zh) | 区域检测方法、装置、设备及存储介质 | |
CN111209377A (zh) | 基于深度学习的文本处理方法、装置、设备及介质 | |
WO2022089512A1 (zh) | 一种控制负载的方法、装置及设备 | |
WO2020078323A1 (zh) | 水印嵌入方法、装置、终端及存储介质 | |
CN109302523B (zh) | 一种手机端和服务器端手机性能评估方法 | |
CN114661811A (zh) | 数据展示方法、装置、电子设备及存储介质 | |
US20230260245A1 (en) | Image segmentation model quantization method and apparatus, computer device, and storage medium | |
CN111104566B (zh) | 特征索引编码方法、装置、电子设备及存储介质 | |
CN117112950B (zh) | 电子地图中对象的渲染方法、装置、终端及存储介质 | |
CN114911545B (zh) | 色彩模式转换方法、电子设备及其可读介质 | |
CN117893663B (zh) | 基于WebGPU的Web图形渲染性能优化方法 | |
CN113713375B (zh) | 一种界面元素显示方法、装置、终端及存储介质 | |
CN117152320B (zh) | 图像处理方法和电子设备 | |
WO2023273828A1 (zh) | 界面管理方法、装置、设备及可读存储介质 | |
CN118585494A (zh) | 安装包解析方法、装置、计算机设备及存储介质 | |
CN116328298A (zh) | 虚拟模型的渲染方法、装置、计算机设备及存储介质 | |
CN117094878A (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 |