一种弧线缩放绘制方法、装置、设备和介质与流程

文档序号:37072533发布日期:2024-02-20 21:26阅读:19来源:国知局
一种弧线缩放绘制方法、装置、设备和介质与流程

本发明涉及计算机图形绘制,尤其涉及一种弧线缩放绘制方法、装置、设备和介质。


背景技术:

1、在制造业的设计过程中,一般由设计部门提供设计图纸,这些图纸通常为图形格式文件,设计人员以此为基础,进行相关信息的设计,例如夹具符号标注、尺寸标注、工艺图形修改等。而相关图纸绘制中,无论是绘制圆形、椭圆或是其他曲面图形,弧线绘制均属于必不可少的需求功能之一。

2、传统的图形绘制平台例如cad通常可以通过使用图形api(如opengl等)绘制圆弧、椭圆弧等弧线,需要在cpu端将圆弧、椭圆弧提前分段生成为大量的短直线以拟合其曲线。而圆弧、椭圆弧本身可以仅用圆心、长轴半径、短轴半径、起始角、结束角、法线等数据表示,但进行分段则需要几十甚至数百个顶点来表示这些短直线,在使用硬件加速时,需要向gpu发送大量的冗余数据,占用大量显存。

3、而在对弧线构建的图形进行放大时,由于cpu端生成的多段线数据并未变化,多段线在屏幕上的显示长度将增加,此时不足以平滑地表示弧线。为此,现有技术通常是通过在每次缩放时重生成多段短直线,或是提前增加弧线分段数,或是使用几何着色器将输入输出为分段数数量的直线进行绘制。但上述方案在每次缩放绘制时均产生更多冗余数据,在占用大量显存的同时导致绘制效率下降。


技术实现思路

1、本发明提供了一种弧线缩放绘制方法、装置、设备和介质,解决了现有的弧线绘制方案在每次缩放绘制时均产生更多冗余数据,在占用大量显存的同时导致绘制效率下降的技术问题。

2、本发明第一方面提供了一种弧线缩放绘制方法,应用于绘图平台,所述绘图平台包括cpu端和gpu端,所述方法包括:

3、通过所述cpu端获取全部弧线分别对应的参数数据和当前分段数;

4、通过所述cpu端按照各所述当前分段数构建初始标号数组,并与各所述参数数据分别缓存至所述gpu端;

5、响应针对任一所述弧线的场景缩放指令,通过所述cpu端根据所述场景缩放指令更新所述初始标号数组,生成更新标号数组并缓存至所述gpu端;

6、通过所述gpu端根据所述更新标号数组和所述参数数据,生成多个弧线顶点;

7、通过所述gpu端响应所述cpu端调用的直线绘制指令,绘制直线依次连接各个所述弧线顶点,生成目标弧线。

8、可选地,所述方法还包括:

9、若未接收到场景缩放指令,则通过所述gpu端将所述初始标号数组确定为更新标号数组;

10、跳转执行所述通过所述gpu端根据所述更新标号数组和所述参数数据,生成多个弧线顶点。

11、可选地,所述通过所述cpu端按照各所述当前分段数构建初始标号数组,并与各所述参数数据分别缓存至所述gpu端,包括:

12、通过所述cpu端按照所述弧线的数量,生成多组标号数据;所述标号数据包括与各所述当前分段数相等的顶点标号;

13、通过所述cpu端将全部所述顶点标号平铺为数组形式,得到初始标号数组;

14、通过所述cpu端将所述初始标号数组缓存至所述gpu端内的标号缓冲区,将各所述参数数据缓存至所述gpu端内的参数缓冲区。

15、可选地,所述响应针对任一所述弧线的场景缩放指令,通过所述cpu端根据所述场景缩放指令更新所述初始标号数组,生成更新标号数组并缓存至所述gpu端,包括:

16、响应针对任一所述弧线的场景缩放指令,通过所述cpu端获取所述场景缩放指令对应的缩放系数,并在所述初始标号数组中定位目标标号;

17、通过所述cpu端计算所述缩放系数和所述当前分段数的乘值,得到更新分段数;

18、通过所述cpu端按照所述更新分段数生成多个更新标号;

19、通过所述cpu端采用全部所述更新标号对所述目标标号进行替换更新,生成更新标号数组并缓存至所述gpu端。

20、可选地,所述通过所述gpu端根据所述更新标号数组和所述参数数据,生成多个弧线顶点,包括:

21、通过所述gpu端按照所述更新标号数组内更新标号的位置信息,定位目标弧线;

22、通过所述gpu端读取所述目标弧线对应的参数数据作为目标参数数据;

23、通过所述gpu端基于所述位置信息和所述目标参数数据,确定多个顶点坐标;

24、通过所述gpu端按照各所述顶点坐标调用着色器在当前页面上生成多个弧线顶点。

25、可选地,所述目标参数数据包括圆心向量、轴线向量和起止点半角余弦值;所述通过所述gpu端基于所述位置信息和所述目标参数数据,确定多个顶点坐标,包括:

26、通过所述gpu端根据所述起止点半角余弦值,分别计算所述目标弧线的起始角度和结束角度;

27、通过所述gpu端根据所述起始角度和所述结束角度,结合所述位置信息,确定所述位置信息对应的顶点半角值;

28、通过所述gpu端根据所述顶点半角值和所述起止点半角余弦值,确定目标半角余弦值;

29、通过所述gpu端根据所述目标半角余弦值、所述圆心向量和所述轴线向量,计算顶点坐标。

30、可选地,所述起止点半角余弦值包括起点半角余弦值和终点半角余弦值;所述通过所述gpu端根据所述起止点半角余弦值,分别计算所述目标弧线的起始角度和结束角度,包括:

31、通过所述gpu端采用所述起点半角余弦值代入二倍角余弦公式,并执行反余弦计算,得到所述目标弧线的起始角度;

32、通过所述gpu端采用所述终点半角余弦值代入二倍角余弦公式,并执行反余弦计算,得到所述目标弧线的结束角度。

33、可选地,所述位置信息包括顶点位置和顶点总数量;所述通过所述gpu端根据所述起始角度和所述结束角度,结合所述位置信息,确定所述位置信息对应的顶点半角值,包括:

34、通过所述gpu端按照所述顶点位置和所述顶点总数量的数量比值;

35、通过所述gpu端计算所述结束角度的半角值和所述起始角度的半角值的半角差值;

36、通过所述gpu端比较所述起始角度与所述结束角度;

37、若所述起始角度小于或等于所述结束角度,则通过所述gpu端计算所述半角差值和所述数量比值的第一乘值后,叠加所述起始角度的半角值,确定所述位置信息对应的顶点半角值;

38、若所述起始角度大于所述结束角度,则通过所述gpu端计算所述半角差值和预设值的角度和值;

39、通过所述gpu端计算所述角度和值与所述数量比值的第二乘值后,叠加所述起始角度的半角值,确定所述位置信息对应的顶点半角值。

40、可选地,所述通过所述gpu端根据所述顶点半角值和所述起止点半角余弦值,确定目标半角余弦值,包括:

41、通过所述gpu端计算所述顶点半角值的顶点半角余弦值;

42、若所述位置信息指定的顶点为起始点或结束点,则通过所述gpu端将所述起止点半角余弦值确定为目标半角余弦值;

43、若所述位置信息指定的顶点未为起始点或结束点,则通过所述gpu端按照预设选取规则从预设定值、所述顶点半角余弦值和所述起止点半角余弦值中选取目标半角余弦值。

44、可选地,所述轴线向量包括长轴向量和短轴向量;所述通过所述gpu端根据所述目标半角余弦值、所述圆心向量和所述轴线向量,计算顶点坐标,包括:

45、通过所述gpu端将所述目标半角余弦值代入预设的二倍角余弦公式,确定目标余弦值;

46、通过所述gpu端对所述目标余弦值执行反余弦计算,得到目标角度;

47、通过所述gpu端按照所述目标角度和所述目标半角余弦值,计算目标正弦值;

48、通过所述gpu端计算所述目标余弦值和所述长轴向量的第一向量;

49、通过所述gpu端计算所述目标正弦值和所述短轴向量的第二向量;

50、通过所述gpu端叠加所述第一向量、第二向量和所述圆心向量,得到目标向量作为顶点坐标。

51、可选地,在执行所述通过所述gpu端按照各所述顶点坐标调用着色器在当前页面上生成多个弧线顶点之前,所述方法还包括:

52、通过所述gpu端判断所述顶点坐标是否超出起始点和结束点之间的弧线范围;

53、若是,则将所述顶点坐标修正至所述弧线范围内;

54、若否,则执行通过所述gpu端响应所述cpu端调用的直线绘制指令,绘制直线依次连接各个所述弧线顶点,生成目标弧线。

55、本发明第二方面提供了一种弧线缩放绘制装置,应用于绘图平台,所述绘图平台包括cpu端和gpu端,所述装置包括:

56、数据获取模块,用于通过所述cpu端获取全部弧线分别对应的参数数据和当前分段数;

57、数据缓存模块,用于通过所述cpu端按照各所述当前分段数构建初始标号数组,并与各所述参数数据分别缓存至所述gpu端;

58、数据更新模块,用于响应针对任一所述弧线的场景缩放指令,通过所述cpu端根据所述场景缩放指令更新所述初始标号数组,生成更新标号数组并缓存至所述gpu端;

59、顶点生成模块,用于通过所述gpu端根据所述更新标号数组和所述参数数据,生成多个弧线顶点;

60、顶点连接模块,用于通过所述gpu端响应所述cpu端调用的直线绘制指令,绘制直线依次连接各个所述弧线顶点,生成目标弧线。

61、本发明第三方面提供了一种计算机设备,包括存储器及处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如本发明第一方面任一项所述的弧线缩放绘制方法的步骤。

62、本发明第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被执行时实现如本发明第一方面任一项所述的弧线缩放绘制方法。

63、从以上技术方案可以看出,本发明具有以下优点:

64、本发明通过cpu端获取全部弧线分别对应的参数数据和当前分段数,通过cpu端按照各当前分段数构建初始标号数组,并与各参数数据分别缓存至gpu端,响应针对任一弧线的场景缩放指令,通过cpu端根据场景缩放指令更新初始标号数组,生成更新标号数组并缓存至gpu端,通过gpu端根据更新标号数组和参数数据,生成多个弧线顶点,通过gpu端响应cpu端调用的直线绘制指令,绘制直线依次连接各个弧线顶点,生成目标弧线。从而避免每次进行缩放绘制时在在cpu生成与上传分段直线数据,通过每帧从cpu端上传更新少量的该圆弧或椭圆弧的实时分段数据,并在gpu端顶点着色器中根据当前缩放下的分段数利用弧线的参数数据进行采样确定顶点位置,最终将这些顶点数据绘制为直线,以减少冗余数据的同时,有效提高绘制效率。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1