CN117788641A - 一种实体绘制方法、装置、计算机设备和存储介质 - Google Patents

一种实体绘制方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN117788641A
CN117788641A CN202311841896.1A CN202311841896A CN117788641A CN 117788641 A CN117788641 A CN 117788641A CN 202311841896 A CN202311841896 A CN 202311841896A CN 117788641 A CN117788641 A CN 117788641A
Authority
CN
China
Prior art keywords
entity
display data
outline
gpu
complexity
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
Application number
CN202311841896.1A
Other languages
English (en)
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.)
Zwcad Software Co ltd
Original Assignee
Zwcad Software 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 Zwcad Software Co ltd filed Critical Zwcad Software Co ltd
Priority to CN202311841896.1A priority Critical patent/CN117788641A/zh
Publication of CN117788641A publication Critical patent/CN117788641A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Image Generation (AREA)

Abstract

本申请提供了一种实体绘制方法、装置、计算机设备和存储介质。该方法包括:获取目标实心填充实体的轮廓;确定轮廓的绘制复杂度;若绘制复杂度小于或等于第一阈值,则通过CPU将轮廓三角化,得到多个三角面,并在光栅化阶段调用GPU对各三角面进行平面绘制;若绘制复杂度大于第一阈值,则通过CPU生成填充轮廓的多条扫描线,并在光栅化阶段调用GPU对各扫描线进行线段绘制。该方法基于绘制复杂度为目标实心填充实体选择合适的策略,分别使用两种绘制策略,以充分发挥了各自的特点进行优缺点互补,不管是简单还是复杂实体的绘制都得到性能优化,充分利用硬件性能,极大的优化了内存、显存资源并提升绘制效率。

Description

一种实体绘制方法、装置、计算机设备和存储介质
技术领域
本申请涉及计算机绘图技术领域,尤其涉及一种实体绘制方法、装置、计算机设备和存储介质。
背景技术
随着信息技术的不断发展,CAD(Computer Aided Design)图形系统软件已经成为绘图人员或者设计师们不可缺少的制图工具。在CAD中,实心填充实体是一种较为常见的实体,而存储在CAD数据库中的实心填充实体不能直接向用户展示。因此,需要经过重生成流程将实心填充实体转换为显示数据,再经过光栅化过程得到可以在屏幕上展示实心填充实体。而传统技术在上述流程中常常存在效率低下、耗时较多等问题。
发明内容
本申请的目的旨在至少能解决上述的技术缺陷之一,特别是现有技术中存在的效率低下、耗时较多的问题。
第一方面,本申请提供了一种实体绘制方法,包括:
获取目标实心填充实体的轮廓;
确定轮廓的绘制复杂度;
若绘制复杂度小于或等于第一阈值,则通过CPU将轮廓三角化,得到多个三角面,并在光栅化阶段调用GPU对各三角面进行平面绘制;
若绘制复杂度大于第一阈值,则通过CPU生成填充轮廓的多条扫描线,并在光栅化阶段调用GPU对各扫描线进行线段绘制。
在其中一个实施例中,确定轮廓的绘制复杂度,包括:
获取轮廓的多个复杂特征参数;
根据各复杂特征参数的预设权重,对各复杂特征参数进行加权求和,得到绘制复杂度。
在其中一个实施例中,复杂特征参数包括轮廓的顶点数量、轮廓内部的空洞数量和凸多边形表示参数。
在其中一个实施例中,在光栅化阶段调用GPU对各三角面进行绘制,包括:
通过CPU将各三角面转换为对应的第一显示数据,并将各第一显示数据上传到GPU的缓存;
响应于针对目标实心填充实体的展示指令,在光栅化阶段,调用GPU从缓存中读取第一显示数据进行平面绘制。
在其中一个实施例中,在光栅化阶段调用GPU对各扫描线进行绘制,包括:
通过CPU将轮廓转换为第二显示数据,并将第二显示数据保存在内存中;
响应于针对目标实心填充实体的展示指令,在光栅化阶段,从内存中读取第二显示数据,在每一帧内,将第二显示数据转换到当前的屏幕空间,并根据转换后的第二显示数据,生成多条扫描线对应的显示数据;
将各扫描线的显示数据实时上传到GPU,并调用GPU对各扫描线进行实时线段绘制。
在其中一个实施例中,在将第二显示数据转换到当前的屏幕空间,并根据转换结果生成多条扫描线之前,还包括:
获取轮廓的包围盒;
将包围盒与当前视口进行比较;
若包围盒与当前视口相离,则停止光栅化阶段。
在其中一个实施例中,将第二显示数据转换到当前的屏幕空间,并根据转换结果生成多条扫描线,包括:
判断包围盒的大小是否小于第二阈值;
若是,则调用GPU对包围盒进行绘制;
若否,则将第二显示数据转换到当前的屏幕空间,并根据转换结果生成多条扫描线。
第二方面,本申请提供了一种实体绘制装置,包括:
轮廓获取模块,用于获取目标实心填充实体的轮廓;
复杂度确定模块,用于确定轮廓的绘制复杂度;
第一绘制模块,用于若绘制复杂度小于或等于第一阈值,则通过CPU将轮廓三角化,得到多个三角面,并在光栅化阶段调用GPU对各三角面进行平面绘制;
第二绘制模块,用于若绘制复杂度大于第一阈值,则通过CPU生成填充轮廓的多条扫描线,并在光栅化阶段调用GPU对各扫描线进行线段绘制。
第三方面,本申请提供了一种计算机设备,包括一个或多个处理器,以及存储器,存储器中存储有计算机可读指令,计算机可读指令被一个或多个处理器执行时,执行上述任一实施例中的实体绘制方法的步骤。
第四方面,本申请提供了一种存储介质,存储介质中存储有计算机可读指令,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述任一实施例中的实体绘制方法的步骤。
从以上技术方案可以看出,本申请实施例具有以下优点:
基于上述任一实施例,首先,获取目标实心填充实体的轮廓信息。然后,评估轮廓的绘制复杂度,并根据复杂度高低选择不同的光栅化策略。对于复杂度较低的简单轮廓,进行三角化处理,以拼合目标实心填充实体的三角面作为基本单元进行后续绘制。对于复杂度较高的复杂轮廓,以填充轮廓的扫描线作为基本单元进行后续绘制。该方法基于绘制复杂度为目标实心填充实体选择合适的策略,在对CAD图纸进行展示时,由于各种复杂度的实体可同时存在,分别使用两种绘制策略,以充分发挥了各自的特点进行优缺点互补,不管是简单还是复杂实体的绘制都得到性能优化,充分利用硬件性能,综合考虑CPU、GPU、内存、显存的使用率,极大的提升了填充实体的绘制效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本申请一个实施例提供的实体绘制方法的流程示意图;
图2为本申请一个实施例中两种绘制策略的示意图;
图3为本申请一个实施例提供的实体绘制装置的模块示意图;
图4为本申请一个实施例提供的计算机设备的内部结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在开始说明本申请中的方案之前,先对下文中可能涉及的名词进行说明:
重生成:重生成是将CAD数据库实体转换处理组织成适合显示输出的数据的过程。具体而言,CAD图纸文件中存储着各种图形数据。例如,文件中一根线的数据是长度、坐标和端点,以及图层、颜色、线条类型等各种属性数据。为了方便查看和编辑这些图形数据,CAD需要将这些图形展现在电脑显示屏上,但显卡和显示器不识别CAD图纸文件中的数据。我们需要把这些CAD图形数据转换成显卡能识别的显示数据,经过显卡处理得到可在屏幕上显示的每个像素点信息,这样我们就能看到CAD图纸文件所包含的实体了。各软件系统定义的重生成流程(管线)存在差异,一般包括模型变换、简化处理、前后裁剪、线形处理、显示数据组装等各阶段。
光栅化:光栅化指的是通过GPU或CPU,又或者两者结合使用的方式,将重生成后的显示数据输出到屏幕并显示的过程。
本申请提供了一种实体绘制方法,请参阅图1,包括步骤S102至步骤S108。
S102,获取目标实心填充实体的轮廓。
可以理解,实心填充实体是指由边界轮廓所包围形成的二维区域。简单来说,就是平面内与其边界轮廓形成封闭的面积。目标实心填充实体就是本实施例中的处理目标。在将一张CAD图纸导入系统后,可根据各实体的描述找到实心填充实体,并将他们分别作为目标实心填充实体进行后续处理。这里的轮廓指的是目标实心填充实体所有的边界轮廓的集合。对于内部没有空洞的实心填充实体而言,边界轮廓一般为外轮廓。对于内部存在空洞的实心填充实体而言,边界轮廓包括外轮廓和外轮廓内部,用于包围空洞的内轮廓。轮廓一般由一系列连接的线段或曲线组成,他的提取可以是CAD系统从各实体的拓扑数据中提取出来。
S104,确定轮廓的绘制复杂度。
可以理解,绘制复杂度是指一个轮廓在转换光栅化成图像过程中的计算及处理复杂程度。对实心填充实体进行重生成和光栅化等流程有着多种不同的策略,不同的策略对GPU、显存、CPU和内存的使用情况不同,也就对不同绘制复杂度的实心填充实体有着不同的处理效率。传统技术中仅采用同一种绘制策略执行重生成和光栅化等流程,从而无法做到因地制宜,影响实心填充实体的展示效率。而本实施例中选择了两种不同特性的绘制策略,对于某一种绘制策略处理难度很大、效率很低的轮廓,在另一种绘制策略下将并不存在类似问题。确定轮廓的绘制复杂度的目的就是为了区分策略的适配情况,从而应用不同的绘制策略,提高总体绘制效率。
S106,若绘制复杂度小于或等于第一阈值,则通过CPU将轮廓三角化,得到多个三角面,并在光栅化阶段调用GPU对各三角面进行平面绘制。
可以理解,请参阅图2,三角化是一种常用技术,其用于将复杂多边形分解为多个三角形拼合。这是由于三角形是最简单的多边形,任何多边形都可以用多个三角形来表示,且三角形还具有三点共面、内外清晰的特点。在GPU中进行光栅化时,常常以三角形作为处理的基础,根据显示数据中关于颜色、深浅等各类绘制属性的指示对三角形进行光栅化。基于此,本申请中的第一绘制策略就是在重生成阶段由CPU将轮廓对应的完整实心填充实体切分为多个三角面拼合而成的图形,CPU将会为每个三角面重生成出一一对应的显示数据。当需要进行图形展示时,将由GPU针对各三角面执行光栅化阶段,即由GPU针对各三角面的显示数据,以三角面作为GPU绘制的基础单元进行平面绘制。
而上述第一绘制策略对于一些轮廓情况复杂的目标实心填充实体,将需要利用数量很多的三角面进行拼合。在重生成阶段,对于该种类型的轮廓进行三角化的效率很低,并且由于三角面的数量很多,其对内存和显存的占用都会大大提升。因此,轮廓情况复杂的目标实心填充实体不适用该种绘制策略。
当绘制复杂度小于或等于第一阈值时,即可认定目标实心填充实体适用于本步骤中的绘制策略。第一阈值的缺点可以通过试运行时对不同的实心填充实体进行实验得到。先确定各实心填充实体的绘制复杂度,再分别利用两种不同的绘制策略进行绘制,再基于内存使用率、显存使用率、绘制耗时等因素综合评估两种策略的效果。可分别获取到两种绘制策略的绘制复杂度和绘制效率曲线。而本步骤中的绘制策略的绘制效率会随着绘制复杂度提升而降低,而另一种绘制策略则不会。由此可以找到另一种绘制策略的绘制效率高于本步骤中的绘制策略所对应的绘制复杂度,该绘制复杂度即可作为设置第一阈值的根据。
S108,若绘制复杂度大于第一阈值,则通过CPU生成填充轮廓的多条扫描线,并在光栅化阶段调用GPU对各扫描线进行线段绘制。
可以理解,在上述第一绘制策略难以适用于具有复杂轮廓的实心填充实体时,将对目标实心填充实体采用本步骤中的第二种绘制策略进行绘制。具体而言,第二绘制策略就是在重生成阶段将整个轮廓转换为显示数据。并且,请参阅图2,利用任意方向的一组间隔相同的平行线与轮廓求交,在轮廓内部的线段即为扫描线。根据整个轮廓对应的显示数据和各扫描线的位置,可得到各扫描线的显示数据。这些间隔较小的扫描线组合在一起的展示效果与实心填充实体相似。当需要进行图形展示时,由GPU针对各扫描线执行光栅化阶段,即由GPU在各扫描线的显示数据的指示下,以线段作为GPU绘制的基础单元进行线段绘制。
对复杂的轮廓生成扫描线并不会给CPU造成过多负担,即第二绘制策略的重生成阶段的耗时不易受轮廓的绘制复杂度的影响。但是,由于是利用扫描线对平面进行趋近,在进行展示时,每一帧的视口都可能发生改变。因此,利用该种绘制方法进行绘制时,需要每一帧都重新生成扫描线,并在每一帧都重新上传新的显示数据,以对新的扫描线重新进行绘制。如果CAD图纸中的每个轮廓都采用该种方式,则没有充分利用GPU的性能,导致光栅化的效率较低。
基于此,当绘制复杂度大于第一阈值时,即可将该目标实心填充实体利用第二绘制策略进行绘制。在此种绘制策略下,生成扫描线的速度不易受绘制复杂度的影响,保证了重生成阶段的效率。而对于第二绘制策略的缺点而言,由于整张图纸中一般会同时存在复杂实体和简单实体,对简单实体进行绘制的第一绘制策略主要依靠GPU进行,由该部分实体保证对GPU的充分调动。另外,第一绘制策略中的绘制基础单元是平面,而第二绘制策略中的绘制基础单元是线段。在光栅化阶段,平面绘制需要对平面内所有像素进行填充,而线段绘制仅对路径上的像素进行处理即可,GPU绘制线段时的效率更高。
基于本实施例中的实体绘制方法,首先,获取目标实心填充实体的轮廓信息。然后,评估轮廓的绘制复杂度,并根据复杂度高低选择不同的光栅化策略。对于复杂度较低的简单轮廓,进行三角化处理,以拼合目标实心填充实体的三角面作为基本单元进行后续绘制。对于复杂度较高的复杂轮廓,以填充轮廓的扫描线作为基本单元进行后续绘制。该方法基于绘制复杂度为目标实心填充实体选择合适的策略,在对CAD图纸进行展示时,由于各种复杂度的实体可同时存在,分别使用两种绘制策略,以充分发挥了各自的特点进行优缺点互补,不管是简单还是复杂实体的绘制都得到性能优化,充分利用硬件性能,综合考虑CPU、GPU、内存、显存的使用率,极大的提升了填充实体的绘制效率。
在其中一个实施例中,确定轮廓的绘制复杂度,包括:
(1)获取轮廓的多个复杂特征参数。
可以理解,复杂特征参数是评估在使用第一绘制策略进行绘制时,影响第一绘制策略的绘制效率的、与轮廓有关的特征参数。为了全面评估轮廓形状的复杂度。单一参数不足以描述轮廓的绘制复杂度,需要考量多个特征。获取复杂特征参数可利用CAD系统对轮廓曲线进行分析和统计得到。在有些实施例中,复杂特征参数包括轮廓的顶点数量、轮廓内部的空洞数量和凸多边形表示参数。可以理解,轮廓的顶点数量越多,则将直接导致需要细分的三角形数量的增多,这将直接增加三角化的计算量。轮廓内部的空洞是由对应的内轮廓围成的,由于内外轮廓的一般都不会是平行且平直的,在内外轮廓之间就需要使用更多的三角形进行拼合。因此,空洞的增多也将导致三角化的难度增大。另外,凸多边形表示参数用于表示该轮廓属于凸多边形或是凹多边形。凸多边形往往通过连接多个对角线即可完成,但凹多边形的分解则更为复杂,往往需要先分解为凸多边形,再对各凸多边形进行三角化。因此,凹多边形的三角化难度更大,凸多边形表示参数在轮廓属于凹多边形时更大。本步骤为构建充分描述轮廓处理难易程度的评估体系奠定基础,使复杂度分级更细致,复杂轮廓识别更准确,为后续策略选择提供更充分的依据。
(2)根据各复杂特征参数的预设权重,对各复杂特征参数进行加权求和,得到绘制复杂度。
可以理解,权重是复杂特征参数在绘制复杂度计算中所占比重。由于特征参数对轮廓处理的影响不尽相同,为每个复杂特征参数预先定义权重系数进行加权求和,可以增强综合评估结果的针对性。用T表示复杂度,用V表示顶点数量,用H表示空洞的数量,用C表示是否外轮廓是否凸多边形,则T=m*V+n*H+k*C,m、n、k为可调节的权重值,如可以设置m=1,n=100,k=500。此时如果计算T值大于1000时认为复杂度较高。加权处理有利于评估体系的定制优化,使复杂度计量更贴合策略需求。优化权重可以强化对关键参数的考量,提高复杂度区分的精细程度。
在其中一个实施例中,在光栅化阶段调用GPU对各三角面进行绘制,包括:
(1)通过CPU将各三角面转换为对应的第一显示数据,并将各第一显示数据上传到GPU的缓存。
可以理解,第一显示数据是指示GPU绘制轮廓内的平面所需的参数集合可以包含位置、颜色、纹理等信息。该步骤是为了充分利用GPU的显存空间,减少重复转换和数据上传。对绘制复杂度较低的情况,每个目标实心填充实体对应的三角面的数量不会过多,GPU的显存足够对其进行存储。这样一来,GPU在进行光栅化的过程中,可以直接从本地进行读取,提高处理效率。另外,对于任意一个采用第一绘制策略的目标实心填充实体而言,先由CPU进行三角化和显示数据的转换,即完成该目标实心填充实体的重生成阶段。后续视口缩放、移动等需要改变实体的展示效果的操作,都无需重复进行重生成阶段。只需要由GPU基于第一显示数据和当前的屏幕坐标系进行光栅化即可。对CPU不会造成过多负担。
(2)响应于针对目标实心填充实体的展示指令,在光栅化阶段,调用GPU从缓存中读取第一显示数据进行平面绘制。
可以理解,这里的展示指令是对目标实心填充实体存在展示需求时生成的。可以是刚开始导入CAD图纸时,从无到有的进行展示时触发。也可以是在后续视口缩放、移动等需要改变实体的展示效果时触发。在需要GPU中已存储了第一显示数据的情况下,如果需要对第一显示数据对应的目标实心填充实体进行展示,GPU可直接跳过重生成阶段,通过索引定位读取相应三角面的第一显示数据,直接基于各第一显示数据进入GPU的绘制渲染管线进行平面绘制。该做法可避免对相同三角面重复执行数据转换和传输。减轻CPU负担,降低内存和总线占用,充分利用GPU的性能,加速绘制整体流程,大幅提升重复绘制性能。
在其中一个实施例中,在光栅化阶段调用GPU对各扫描线进行绘制,包括:
(1)通过CPU将轮廓转换为第二显示数据,并将第二显示数据保存在内存中。
可以理解,第二显示数据是指示GPU绘制轮廓内的线段所需的参数集合可以包含位置、颜色、纹理等信息。本步骤是将原始轮廓信息参数化并保存,作为后续生成扫描线的输入源,并减少重复转换,将其保存在内存中还可便于快速访问。
(2)响应于针对目标实心填充实体的展示指令,在光栅化阶段,从内存中读取第二显示数据,在每一帧内,将第二显示数据转换到当前的屏幕空间,并根据转换后的第二显示数据,生成多条扫描线对应的显示数据。
可以理解,屏幕空间是指相对于当前视口的坐标系。扫描线的生成与当前视口情况相关,因此需要在每一帧都重新生成。将第二显示数据转换到当前的屏幕空间是将为了将第二显示数据通过坐标变换投影到屏幕空间,以使得找出的扫描线也处于当前的屏幕空间内。在生成扫描线的同时,可以根据每条扫描线的位置,从第二显示数据中提取到与本条扫面线相关的显示数据,从而形成各扫描线相关的显示数据。
(3)将各扫描线的显示数据实时上传到GPU,并调用GPU对各扫描线进行实时线段绘制。
可以理解,在每一帧扫描线生成完成后,在当前帧内就会立刻将扫描线的显示数据上传到GPU,GPU将在各扫描线的显示数据的指示下进行线段绘制,使得在当前帧内,屏幕上可以展示出实时绘制出的扫描线。
在其中一个实施例中,在将第二显示数据转换到当前的屏幕空间,并根据转换结果生成多条扫描线之前,还包括:
(1)获取轮廓的包围盒。
可以理解,包围盒指的是可以将轮廓容纳在其内部的最小矩形。
(2)将包围盒与当前视口进行比较。
可以理解,视口特指当前视角所确定的可见区域范围。包围盒可以反映轮廓需要占据的区域的大小。通过比较当前视口与包围盒之间的位置关系,可以确定当前视口是否需要对本目标实心填充实体进行展示。如果包围盒与当前视口相离,即当前视口与包围盒之间不存在重叠的部分,则代表当前视口无需展示本目标实心填充实体,无需浪费GPU的算力,可以直接停止光栅化阶段。此时还可以向用户发出提示,以提醒用户重新调整视口大小。反之,则可以继续光栅化阶段。
(3)若包围盒与当前视口相离,则停止光栅化阶段。
在其中一个实施例中,将第二显示数据转换到当前的屏幕空间,并根据转换结果生成多条扫描线,包括:
(1)判断包围盒的大小是否小于第二阈值。
(2)若是,则调用GPU对包围盒进行绘制。
(3)若否,则将第二显示数据转换到当前的屏幕空间,并根据转换结果生成多条扫描线。
可以理解,第二阈值是用于判断目标实心填充实体是否足够小所使用的临界值。包围盒的大小可以利用其所占据的像素点的多少来表示。如果包围盒的大小小于第二阈值,则可认定该包围盒属于极小实体,无需使用扫描线填充其内部,也可以达到与实心填充实体类似的展示效果。即对于极小图形,使用扫描线算法进行扫描并无意义,反而是对CPU资源的浪费。在此情况下,直接根据第二显示数据提取包围盒所对应线条的显示数据,并将包围盒的显示数据上传到GPU进行绘制。在包围盒的大小不小于第二阈值时,则可以基于扫描线进行实体绘制。
本申请提供了一种实体绘制装置,请参阅图3,包括轮廓获取模块310、复杂度确定模块320、第一绘制模块330和第二绘制模块340。
轮廓获取模块310用于获取目标实心填充实体的轮廓。
复杂度确定模块320用于确定轮廓的绘制复杂度。
第一绘制模块330用于若绘制复杂度小于或等于第一阈值,则通过CPU将轮廓三角化,得到多个三角面,并在光栅化阶段调用GPU对各三角面进行平面绘制。
第二绘制模块340用于若绘制复杂度大于第一阈值,则通过CPU生成填充轮廓的多条扫描线,并在光栅化阶段调用GPU对各扫描线进行线段绘制。
在其中一个实施例中,复杂度确定模块320用于获取轮廓的多个复杂特征参数;根据各复杂特征参数的预设权重,对各复杂特征参数进行加权求和,得到绘制复杂度。
在其中一个实施例中,复杂特征参数包括轮廓的顶点数量、轮廓内部的空洞数量和凸多边形表示参数。
在其中一个实施例中,第一绘制模块330用于通过CPU将各三角面转换为对应的第一显示数据,并将各第一显示数据上传到GPU的缓存;响应于针对目标实心填充实体的展示指令,在光栅化阶段,调用GPU从缓存中读取第一显示数据进行平面绘制。
在其中一个实施例中,第二绘制模块340用于通过CPU将轮廓转换为第二显示数据,并将第二显示数据保存在内存中;响应于针对目标实心填充实体的展示指令,在光栅化阶段,从内存中读取第二显示数据,在每一帧内,将第二显示数据转换到当前的屏幕空间,并根据转换后的第二显示数据,生成多条扫描线对应的显示数据;将各扫描线的显示数据实时上传到GPU,并调用GPU对各扫描线进行实时线段绘制。
在其中一个实施例中,第二绘制模块340用于获取轮廓的包围盒;将包围盒与当前视口进行比较;若包围盒与当前视口相离,则停止光栅化阶段。
在其中一个实施例中,第二绘制模块340用于判断包围盒的大小是否小于第二阈值;若是,则调用GPU对包围盒进行绘制;若否,则将第二显示数据转换到当前的屏幕空间,并根据转换结果生成多条扫描线。
关于实体绘制装置的具体限定可以参见上文中对实体绘制方法的限定,在此不再赘述。上述实体绘制装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
本申请提供了一种计算机设备,包括一个或多个处理器,以及存储器,存储器中存储有计算机可读指令,计算机可读指令被一个或多个处理器执行时,执行:获取目标实心填充实体的轮廓;确定轮廓的绘制复杂度;若绘制复杂度小于或等于第一阈值,则通过CPU将轮廓三角化,得到多个三角面,并在光栅化阶段调用GPU对各三角面进行平面绘制;若绘制复杂度大于第一阈值,则通过CPU生成填充轮廓的多条扫描线,并在光栅化阶段调用GPU对各扫描线进行线段绘制。
在其中一个实施例中,计算机可读指令被一个或多个处理器执行时,执行:获取轮廓的多个复杂特征参数;根据各复杂特征参数的预设权重,对各复杂特征参数进行加权求和,得到绘制复杂度。
在其中一个实施例中,复杂特征参数包括轮廓的顶点数量、轮廓内部的空洞数量和凸多边形表示参数。
在其中一个实施例中,计算机可读指令被一个或多个处理器执行时,执行:通过CPU将各三角面转换为对应的第一显示数据,并将各第一显示数据上传到GPU的缓存;响应于针对目标实心填充实体的展示指令,在光栅化阶段,调用GPU从缓存中读取第一显示数据进行平面绘制。
在其中一个实施例中,计算机可读指令被一个或多个处理器执行时,执行:通过CPU将轮廓转换为第二显示数据,并将第二显示数据保存在内存中;响应于针对目标实心填充实体的展示指令,在光栅化阶段,从内存中读取第二显示数据,在每一帧内,将第二显示数据转换到当前的屏幕空间,并根据转换后的第二显示数据,生成多条扫描线对应的显示数据;将各扫描线的显示数据实时上传到GPU,并调用GPU对各扫描线进行实时线段绘制。
在其中一个实施例中,计算机可读指令被一个或多个处理器执行时,执行:获取轮廓的包围盒;将包围盒与当前视口进行比较;若包围盒与当前视口相离,则停止光栅化阶段。
在其中一个实施例中,计算机可读指令被一个或多个处理器执行时,执行:判断包围盒的大小是否小于第二阈值;若是,则调用GPU对包围盒进行绘制;若否,则将第二显示数据转换到当前的屏幕空间,并根据转换结果生成多条扫描线。
示意性地,如图4所示,图4为本申请实施例提供的一种计算机设备的内部结构示意图。参照图4,计算机设备400包括处理组件402,其进一步包括一个或多个处理器,以及由存储器401所代表的存储器资源,用于存储可由处理组件402的执行的指令,例如应用程序。存储器401中存储的应用程序可以包括一个或一个以上的,每一个对应于一组指令的模块。此外,处理组件402被配置为执行指令,以执行上述任意实施例的实体绘制方法的步骤。
计算机设备400还可以包括一个电源组件403被配置为执行计算机设备400的电源管理,一个有线或无线网络接口404被配置为将计算机设备400连接到网络,和一个输入输出(I/O)接口405。
本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本申请提供了一种存储介质,存储介质中存储有计算机可读指令,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行:获取目标实心填充实体的轮廓;确定轮廓的绘制复杂度;若绘制复杂度小于或等于第一阈值,则通过CPU将轮廓三角化,得到多个三角面,并在光栅化阶段调用GPU对各三角面进行平面绘制;若绘制复杂度大于第一阈值,则通过CPU生成填充轮廓的多条扫描线,并在光栅化阶段调用GPU对各扫描线进行线段绘制。
在其中一个实施例中,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行:获取轮廓的多个复杂特征参数;根据各复杂特征参数的预设权重,对各复杂特征参数进行加权求和,得到绘制复杂度。
在其中一个实施例中,复杂特征参数包括轮廓的顶点数量、轮廓内部的空洞数量和凸多边形表示参数。
在其中一个实施例中,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行:通过CPU将各三角面转换为对应的第一显示数据,并将各第一显示数据上传到GPU的缓存;响应于针对目标实心填充实体的展示指令,在光栅化阶段,调用GPU从缓存中读取第一显示数据进行平面绘制。
在其中一个实施例中,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行:通过CPU将轮廓转换为第二显示数据,并将第二显示数据保存在内存中;响应于针对目标实心填充实体的展示指令,在光栅化阶段,从内存中读取第二显示数据,在每一帧内,将第二显示数据转换到当前的屏幕空间,并根据转换后的第二显示数据,生成多条扫描线对应的显示数据;将各扫描线的显示数据实时上传到GPU,并调用GPU对各扫描线进行实时线段绘制。
在其中一个实施例中,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行:获取轮廓的包围盒;将包围盒与当前视口进行比较;若包围盒与当前视口相离,则停止光栅化阶段。
在其中一个实施例中,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行:判断包围盒的大小是否小于第二阈值;若是,则调用GPU对包围盒进行绘制;若否,则将第二显示数据转换到当前的屏幕空间,并根据转换结果生成多条扫描线。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间可以根据需要进行组合,且相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种实体绘制方法,其特征在于,包括:
获取目标实心填充实体的轮廓;
确定所述轮廓的绘制复杂度;
若所述绘制复杂度小于或等于第一阈值,则通过CPU将所述轮廓三角化,得到多个三角面,并在光栅化阶段调用GPU对各所述三角面进行平面绘制;
若所述绘制复杂度大于所述第一阈值,则通过CPU生成填充所述轮廓的多条扫描线,并在所述光栅化阶段调用GPU对各所述扫描线进行线段绘制。
2.根据权利要求1所述的实体绘制方法,其特征在于,所述确定所述轮廓的绘制复杂度,包括:
获取所述轮廓的多个复杂特征参数;
根据各所述复杂特征参数的预设权重,对各所述复杂特征参数进行加权求和,得到所述绘制复杂度。
3.根据权利要求2所述的实体绘制方法,其特征在于,所述复杂特征参数包括所述轮廓的顶点数量、所述轮廓内部的空洞数量和凸多边形表示参数。
4.根据权利要求1所述的实体绘制方法,其特征在于,所述在光栅化阶段调用GPU对各所述三角面进行绘制,包括:
通过CPU将各所述三角面转换为对应的第一显示数据,并将各所述第一显示数据上传到GPU的缓存;
响应于针对所述目标实心填充实体的展示指令,在所述光栅化阶段,调用GPU从缓存中读取所述第一显示数据进行平面绘制。
5.根据权利要求1-4任一项所述的实体绘制方法,其特征在于,所述在所述光栅化阶段调用GPU对各所述扫描线进行绘制,包括:
通过CPU将所述轮廓转换为第二显示数据,并将所述第二显示数据保存在内存中;
响应于针对所述目标实心填充实体的展示指令,在所述光栅化阶段,从所述内存中读取第二显示数据,在每一帧内,将所述第二显示数据转换到当前的屏幕空间,并根据转换后的所述第二显示数据,生成多条所述扫描线对应的显示数据;
将各所述扫描线的显示数据实时上传到GPU,并调用GPU对各所述扫描线进行实时线段绘制。
6.根据权利要求5所述的实体绘制方法,其特征在于,在所述将所述第二显示数据转换到当前的屏幕空间,并根据转换结果生成多条所述扫描线之前,还包括:
获取所述轮廓的包围盒;
将所述包围盒与当前视口进行比较;
若所述包围盒与所述当前视口相离,则停止所述光栅化阶段。
7.根据权利要求6所述的实体绘制方法,其特征在于,所述将所述第二显示数据转换到当前的屏幕空间,并根据转换结果生成多条所述扫描线,包括:
判断所述包围盒的大小是否小于第二阈值;
若是,则调用GPU对所述包围盒进行绘制;
若否,则将所述第二显示数据转换到当前的屏幕空间,并根据转换结果生成多条所述扫描线。
8.一种实体绘制装置,其特征在于,包括:
轮廓获取模块,用于获取目标实心填充实体的轮廓;
复杂度确定模块,用于确定所述轮廓的绘制复杂度;
第一绘制模块,用于若所述绘制复杂度小于或等于第一阈值,则通过CPU将所述轮廓三角化,得到多个三角面,并在光栅化阶段调用GPU对各所述三角面进行平面绘制;
第二绘制模块,用于若所述绘制复杂度大于所述第一阈值,则通过CPU生成填充所述轮廓的多条扫描线,并在所述光栅化阶段调用GPU对各所述扫描线进行线段绘制。
9.一种计算机设备,其特征在于,包括一个或多个处理器,以及存储器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述一个或多个处理器执行时,执行如权利要求1-7任一项所述的实体绘制方法的步骤。
10.一种存储介质,其特征在于,所述存储介质中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1-7任一项所述的实体绘制方法的步骤。
CN202311841896.1A 2023-12-28 2023-12-28 一种实体绘制方法、装置、计算机设备和存储介质 Pending CN117788641A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311841896.1A CN117788641A (zh) 2023-12-28 2023-12-28 一种实体绘制方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311841896.1A CN117788641A (zh) 2023-12-28 2023-12-28 一种实体绘制方法、装置、计算机设备和存储介质

Publications (1)

Publication Number Publication Date
CN117788641A true CN117788641A (zh) 2024-03-29

Family

ID=90396045

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311841896.1A Pending CN117788641A (zh) 2023-12-28 2023-12-28 一种实体绘制方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN117788641A (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070216685A1 (en) * 2006-03-15 2007-09-20 Microsoft Corporation Scene write-once vector and triangle rasterization
CN103164864A (zh) * 2011-12-13 2013-06-19 上海炬力集成电路设计有限公司 计算机图像处理中多边形的三角化方法及其系统
US20180181846A1 (en) * 2016-12-22 2018-06-28 Canon Kabushiki Kaisha Method, apparatus and system for rendering a graphical representation within limited memory
CN110533770A (zh) * 2019-08-20 2019-12-03 厦门大学 一种面向隐式表达医学模型的3d打印切片方法
CN111937039A (zh) * 2018-01-25 2020-11-13 顶点软件有限公司 便于跨多个设备的3d对象可视化和操作的方法及装置
CN113256764A (zh) * 2021-06-02 2021-08-13 南京芯瞳半导体技术有限公司 一种光栅化装置、方法及计算机存储介质
CN114693851A (zh) * 2022-03-24 2022-07-01 华南理工大学 基于gpu的实时网格轮廓向量化与渲染系统
CN115131481A (zh) * 2021-03-24 2022-09-30 Oppo广东移动通信有限公司 Gpu绘制效率确定方法、模型构建方法、装置、介质及设备

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070216685A1 (en) * 2006-03-15 2007-09-20 Microsoft Corporation Scene write-once vector and triangle rasterization
CN103164864A (zh) * 2011-12-13 2013-06-19 上海炬力集成电路设计有限公司 计算机图像处理中多边形的三角化方法及其系统
US20180181846A1 (en) * 2016-12-22 2018-06-28 Canon Kabushiki Kaisha Method, apparatus and system for rendering a graphical representation within limited memory
CN111937039A (zh) * 2018-01-25 2020-11-13 顶点软件有限公司 便于跨多个设备的3d对象可视化和操作的方法及装置
CN110533770A (zh) * 2019-08-20 2019-12-03 厦门大学 一种面向隐式表达医学模型的3d打印切片方法
CN115131481A (zh) * 2021-03-24 2022-09-30 Oppo广东移动通信有限公司 Gpu绘制效率确定方法、模型构建方法、装置、介质及设备
CN113256764A (zh) * 2021-06-02 2021-08-13 南京芯瞳半导体技术有限公司 一种光栅化装置、方法及计算机存储介质
CN114693851A (zh) * 2022-03-24 2022-07-01 华南理工大学 基于gpu的实时网格轮廓向量化与渲染系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
田泽 等: "基于扫描线填充的三角形图元双向光栅化技术", 《小型微型计算机系统》, 30 June 2015 (2015-06-30) *
聂瞾 等: "一种并行扫描的三角形光栅化算法设计与实现", 《信息通信》, 15 March 2016 (2016-03-15) *

Similar Documents

Publication Publication Date Title
US10102663B2 (en) Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
US8830254B2 (en) Systems and methods for graph rendering
JP5120926B2 (ja) 画像処理装置、画像処理方法およびプログラム
CN107154063B (zh) 图像展示区域的形状设置方法及装置
US8725466B2 (en) System and method for hybrid solid and surface modeling for computer-aided design environments
US20170358132A1 (en) System And Method For Tessellation In An Improved Graphics Pipeline
CN104933749B (zh) 图形图元的裁剪
JP2015515059A (ja) シーンにおける不透明度レベルを推定する方法とそれに対応する装置
US20180232915A1 (en) Line stylization through graphics processor unit (gpu) textures
CN109636894B (zh) 一种基于像素点栅格化的动态三维热力计算方法及系统
US11087511B1 (en) Automated vectorization of a raster image using a gradient mesh with arbitrary topology
Schollmeyer et al. Direct trimming of NURBS surfaces on the GPU
WO2023239799A1 (en) Systems and methods for efficient rendering and processing of point clouds using textures
CN117788641A (zh) 一种实体绘制方法、装置、计算机设备和存储介质
US11417058B2 (en) Anti-aliasing two-dimensional vector graphics using a multi-vertex buffer
CN102074004B (zh) 空间实体遮挡类型的判定方法及装置
KR101281156B1 (ko) 레이 트레이싱 코어 및 레이 트레이싱 처리 방법
US11869123B2 (en) Anti-aliasing two-dimensional vector graphics using a compressed vertex buffer
US10504279B2 (en) Visibility function of a three-dimensional scene
CN115239895A (zh) Gis水环境3d地图的海量数据加载及优化渲染方法
Zhang et al. Interactive rendering for large-scale mesh based on MapReduce
Zhang et al. Directionlet transform based on GPU
US9823889B2 (en) Method and apparatus for estimating a fragment count for the display of at least one three-dimensional object
CN114494564A (zh) 法线贴图生成方法、设备、电子设备及存储介质
CN114170368A (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