System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机图形处理领域,具体涉及一种基于线产生算法的三角形光栅化方法、装置以及相关设备。
技术介绍
1、光栅化是计算机图形学中的一个过程,它将连续的、几何上定义的图形对象(如三角形、线条等)映射到离散的像素或片元(屏幕上的最小显示单元)。这个过程是从图形的抽象表示到最终在屏幕上显示的图像之间的关键步骤。在图形学中可以把屏幕抽象为一个二维数组,二维数组中的每个元素即为像素。
2、在计算机图形学中,由于三角形是最基本的几何图元,并且可以构成更复杂的图形,因此三角形光栅化是一种常见而重要的技术。三角形光栅化在各种领域中都发挥着重要作用,包括:计算机游戏开发、计算机动画、虚拟现实(vr)和增强现实(ar)、工程和科学可视化和医学图像处理。在进行三角形光栅化之前,首先需要根据所需仿真的实体建立三维模型。由于屏幕是二维的,因此必须找到一种方法将这些三维模型投影到二维屏幕上,以便我们能够看到和交互,三角形光栅化便是这一过程中的关键步骤。具体地,在三维空间中对三维模型进行网格剖分以划分成若干个三角形。例如,中国专利cn116977598b公开的一种三角网格数值仿真平滑化的方法中,介绍了一种将三维结构进行网格剖分成若干个三角形以形成三角网格,并对三角网格数值仿真平滑化的方法。该专利技术所提供的技术方案使结果显示更符合求解的实际场景,有效解决了现有后处理结果视图在对单元数值平滑过程中产生的数据失真问题。网格剖分后的每个三角形都有一组三维坐标,表示其在三维空间中的位置。这些坐标通常是相对于某个坐标系的,例如世界坐标系或模型坐标系
3、传统的三角形光栅化先求出三角形左右两条边的斜率,接着通过扫描线算法对每一行像素进行光栅化,然后通过浮点数加法求出下一行像素起始点和终点的位置。然而,在中央处理器(cpu)下执行浮点数加法可能面临性能瓶颈的问题,尤其是在处理大量像素、网格密集的情况下。具体而言,在一些网格密集的场景下,计算量会显著增加,这可能会降低后处理界面的流畅度,尤其是在实时图形渲染中,例如游戏或模拟器。一种解决方案是开发基于图像处理单元(gpu)的三角形光栅化方法。例如中国专利cn109598669b公开了一种面向gpu的三角形光栅化扫描系统,集成有初始化单元、y轴步进单元和x轴扫描单元,实现了gpu的三角形光栅化扫描,从而实现了从系统架构文档到rtl的转换。虽然,图像处理单元(gpu)的并行性和专用硬件可以在浮点运算方面带来显著的优势。但是,图像处理单元(gpu)的应用场景也有所限制。
4、在多物理场核心工业仿真处理平台软件中,因其后处理显示界面需要考虑各种硬件兼容问题,所以针对有限元仿真结果的显示功能完全基于cpu硬件,gpu并不适用于多物理场核心工业仿真处理平台软件。如果希望在多物理场核心工业仿真处理平台软件中进行三角形光栅化的处理,还是需要基于cpu的处理方案。因此,设计出一种能够提升多物理场核心工业仿真处理平台软件中后处理显示界面的渲染效率的新三角形光栅化的技术方案显得尤为重要。
技术实现思路
1、为了解决现有技术中的问题,本专利技术所提供的技术方案为:一种基于线产生算法的三角形光栅化方法、装置以及相关设备。其中,线产生算法即布雷森汉姆线段生成算法(bresenham's line algorithm)。本专利技术引入线产生算法,通过整数运算替换了原算法中的浮点运算,避免在中央处理器(cpu)下执行浮点数加法,提升多物理场核心工业仿真处理平台软件中后处理显示界面的渲染效率,提高cpu下的性能。
2、本专利技术提出了一种基于线产生算法的三角形光栅化方法,包括:
3、步骤1,根据所需仿真的真实结构建立三维模型,在三维空间中对三维模型进行网格剖分以将三维模型切分成若干个三角形,每个三角形都有一组三维坐标以表示其在三维空间中的位置;
4、步骤2,通过视图变换将被切分成若干个三角形后的三维模型投影到光栅成像设备上,以获取若干个待光栅化的三角形,所述视图变换为将三维坐标转换为二维视图坐标;
5、步骤3,分别判断获取的每个待光栅化的三角形是否有一边平行于x方向,若是,则进入下一步,若否,则将该三角形切分为两个有一边平行于x方向的三角形,再进入下一步;
6、步骤4,对于有一边平行于x方向的三角形,使用线产生算法同时求出该三角形两条斜边上当前网格单元的下一个网格单元,直至下一个网格单元在y方向上的坐标与上一个网格单元在y方向上的坐标不同,以分别在该三角形的两条斜边上获取两个在y方向上的坐标相同的网格单元,并填充这两个网格单元及这两个网格单元中间的所有网格单元,将这两个网格单元分别作为两条斜边的当前网格单元并进入下一步;
7、步骤5,重复步骤4,直至步骤4中有一边平行于x方向的三角形的内部的网格单元被完全填充;
8、其中,所述基于线产生算法的三角形光栅化方法用于在光栅成像设备上形成所有待光栅化的三角形所对应的网格单元集合,所述光栅成像设备被划分为若干个相同的网格单元,在光栅成像设备上建立二维视图坐标系,所述x方向为二维视图坐标系中x轴所处的方向,所述y方向为二维视图坐标系中y轴所处的方向。
9、在一个实施例中,所述步骤4包括:
10、令有一边平行于x轴的三角形的三个顶点分别为p1、p2、p3,边p1p2、边p1p3分别为两条斜边l、r,斜边l以p1为起始点、p2为终点,斜边r以p1为起始点、p3为终点,令当前网格单元的初始值为起始点p1;
11、使用线产生算法同时求出该三角形的两条斜边l、r上当前网格单元的下一个网格单元;
12、如果斜边l上的下一个网格单元在y方向上的坐标的高度大于斜边r上的下一个网格单元在y方向上的坐标的高度,则在斜边l上继续使用线产生算法获取下一个网格单元,直至斜边l上的下一个网格单元在y方向上的坐标的高度等于斜边r上的下一个网格单元在y方向上的坐标的高度,则填充两条斜边l、r上的这两个网格单元及这两个网格单元中间的所有网格单元,将这两个网格单元分别作为两条斜边的当前网格单元并进入下一步;
13、如果斜边l上的下一个网格单元在y方向上的坐标的高度小于斜边r上的下一个网格单元在y方向上的坐标的高度,则在斜边r上继续使用线产生算法获取下一个网格单元,直至斜边r上的下一个网格单元在y方向上的坐标的高度等于斜边l上的下一个网格单元在y方向上的坐标的高度,则填充两条斜边l、r上的这两个网格单元及这两个网格单元中间的所有网格单元,将这两个网格单元分别作为两条斜边的当前网格单元并进入下一步;
14、如果斜边l上的下一个网格单元在y方向上的坐标的高度等于斜边r上的下一个网格单元在y方向上的坐标的高度,本文档来自技高网...
【技术保护点】
1.一种基于线产生算法的三角形光栅化方法,其特征在于,包括:
2.根据权利要求1所述的基于线产生算法的三角形光栅化方法,其特征在于,所述步骤4包括:
3.根据权利要求2所述的基于线产生算法的三角形光栅化方法,其特征在于,所述步骤5包括:重复步骤4,使用线产生算法同时求出该三角形的两条斜边L、R上当前网格单元的下一个网格单元,直至扫描至两条斜边L、R的终点,且该三角形的内部的网格单元被完全填充。
4.根据权利要求1所述的基于线产生算法的三角形光栅化方法,其特征在于,所述步骤4中,使用线产生算法同时求出该三角形的两条斜边上当前网格单元的下一个网格单元的方法包括:
5.根据权利要求1所述的基于线产生算法的三角形光栅化方法,其特征在于,所述网格单元为像素。
6.根据权利要求1-5中任一项所述的基于线产生算法的三角形光栅化方法,其特征在于,所述基于线产生算法的三角形光栅化方法应用于电子设备中。
7.根据权利要求1-5中任一项所述的基于线产生算法的三角形光栅化方法,其特征在于,所述基于线产生算法的三角形光栅化方法应用于芯
8.一种基于线产生算法的三角形光栅化装置,其特征在于,包括存储器和处理器;
9.一种计算机可读介质,所述计算机可读介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1至7中任一项所述的基于线产生算法的三角形光栅化方法。
10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1至7中任一项所述的基于线产生算法的三角形光栅化方法。
...【技术特征摘要】
1.一种基于线产生算法的三角形光栅化方法,其特征在于,包括:
2.根据权利要求1所述的基于线产生算法的三角形光栅化方法,其特征在于,所述步骤4包括:
3.根据权利要求2所述的基于线产生算法的三角形光栅化方法,其特征在于,所述步骤5包括:重复步骤4,使用线产生算法同时求出该三角形的两条斜边l、r上当前网格单元的下一个网格单元,直至扫描至两条斜边l、r的终点,且该三角形的内部的网格单元被完全填充。
4.根据权利要求1所述的基于线产生算法的三角形光栅化方法,其特征在于,所述步骤4中,使用线产生算法同时求出该三角形的两条斜边上当前网格单元的下一个网格单元的方法包括:
5.根据权利要求1所述的基于线产生算法的三角形光栅化方法,其特征在于,所述网格单元为像素。
6....
【专利技术属性】
技术研发人员:李奥,吴培伟,徐刚,郭茹,吴寅芝,涂三山,
申请(专利权)人:芯瑞微上海电子科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。