基于自适应r-树的大数据量铁路三维设计模型渲染方法

文档序号:6506158阅读:164来源:国知局
基于自适应r-树的大数据量铁路三维设计模型渲染方法
【专利摘要】本发明公开一种基于自适应R-树的大数据量铁路三维设计模型渲染方法,按下列步骤进行:在铁路三维设计软件中生成铁路线路、站场、路基、桥梁和隧道等专业的设计方案;生成铁路各专业设计方案对应的三维模型,统称为铁路三维设计模型;实现适应设计方案频繁调整并匹配三维设计模型空间分布形态的自适应R-树;使用自适应R-树存储铁路三维设计模型;在铁路各专业设计方案优化调整过程中更新自适应R-树;在铁路三维设计软件的场景渲染过程中使用基于自适应R-树和缓冲区的模型滤除方法。有益效果是:在普通显卡条件下大幅度提高了大数据量铁路三维设计模型的渲染速度,使得铁路三维设计软件能够在广大铁路设计人员的普通PC中流畅运行,摆脱了对高性能图形工作站的依赖。
【专利说明】基于自适应R-树的大数据量铁路三维设计模型渲染方法
【技术领域】
[0001]本发明涉及地理信息系统和铁路设计【技术领域】,具体的说是一种基于自适应R-树的大数据量铁路三维设计模型渲染方法,该方法可用于铁路三维设计软件的开发实现。
【背景技术】
[0002]随着计算机软、硬件技术的发展,铁路三维设计技术逐渐走向成熟。铁路系统比较复杂,涉及线路、站场、路基、桥梁和隧道等数十个设计专业,并且经过的省、市地域广,空间跨度大,这决定了铁路三维设计模型的数据量相当巨大。采用一般的渲染方法直接绘制大数据量的铁路三维设计模型,对计算机显卡的绘图性能要求非常高,需要高性能图形工作站才能够正常显示出图形效果。如果不解决普通显卡条件下的大数据量铁路三维设计模型渲染速度慢的问题,铁路三维设计软件也就无法在广大铁路设计人员的普通PC机中推广使用。
[0003]普通显卡条件下的大数据量三维模型渲染的核心思想是:在场景渲染阶段使用基于空间索引的模型滤除方法,对无需绘制的三维模型进行快速滤除,减少显卡的绘图数据量,从而提高渲染速度。其中,滤除的速度主要由空间索引的检索效率决定。不同的空间索引适合不同分布形态的三维模型,合适的空间索引匹配合适的空间分布形态,才能产生最高的检索效率,才能最大程度的提高渲染速度。
[0004]传统的大数据量三维模型渲染方法主要使用格网、BSP树、四叉树和八叉树等规则型空间索引技术,适合于在空间各个方向分布较为均匀的三维模型。铁路空间跨度大,并且沿线设施集中于线路附近,这决定了铁路三维设计模型的空间分布形态为大范围、狭长条带状、不规则空间分布,显然与传统方法的空间索引不匹配。相对而言,R-树更适合铁路三维设计模型的空间分布形态,但是各专业设计方案不断进行优化调整的过程中,可能会频繁触发比较费时的R-树节点分裂或结构紧凑操作,从而影响铁路设计的工作效率,还可能使R-树的深度和广度比例失衡,导致R-树的检索效率降低。

【发明内容】

[0005]本发明的目的在于克服上述已有技术的缺点,提出一种普通显卡条件下的大数据量铁路三维设计模型快速渲染方法,使铁路三维设计软件能够在广大铁路设计人员的普通PC机中较为流畅的运行,摆脱对高性能图形工作站的依赖。
[0006]本发明的技术方案是:一种基于自适应R-树的铁路三维设计模型渲染方法,具体包括以下步骤:
[0007](I)在铁路三维设计软件中生成铁路线路、站场、路基、桥梁和隧道专业的设计方案;
[0008](2)生成上述铁路各专业设计方案对应的三维模型,统称为铁路三维设计模型;
[0009]步骤(I)和(2)已有成熟技术。[0010](3)实现适应设计方案频繁调整并匹配三维设计模型空间分布形态的自适应R-树:
[0011]3-1)自适应R-树数据结构:
[0012]3-1-a)将自适应R-树的数据结构派生于Guttman R-树数据结构,继承GuttmanR-树的所有特征;
[0013]步骤3_l_a)已有成熟技术。
[0014]3-1-b)将自适应R-树的叶子节点中存储的空间对象分为有效对象和无效对象;
[0015]3-1-c)在自适应R-树的数据结构内设一个有效对象数组,用于存储所有叶子节点中的有效对象;同时内设一个计数变量统计叶子节点中存储的无效对象的个数;
[0016]3-2)自适应R-树的插入方法:
[0017]3-2-a)使用Guttman选择叶子节点方法,在自适应R-树中选中待插入的有效对象应该存入的叶子节点;
[0018]3-2-b)在步骤3-2-a)选中的叶子节点中查找第一个无效对象,如果找到,则将待插入的有效对象存储到第一个无效对象所占用的存储位置,然后自底向上更新自适应R-树的各层节点的包围盒,从而避免触发费时的自适应R-树的节点分裂操作;如果没有找至IJ,则执行步骤3-2-c);
[0019]3-2-c)使用与Guttman插入方法插入当前处理的有效对象;插入成功之后,判断自适应R-树的深度是否超过单个叶子节点的最大存储空间对象个数M ;如果超过,则销毁自适应R-树的所有节点,计算合适的M值,然后对有效对象数组中的空间对象使用Guttman插入方法重新生成各层节点,从而优化R-树的深度和广度比例;
[0020]3-2-d) M值通过枚举逼近法求解以下方程得到:
[0021]M(m+1)〈=N,
[0022]式中:M为单个叶子节点的最大存储空间对象个数,N为有效对象数组中的元素个数;
[0023]3-3)自适应R-树的删除方法:
[0024]3-3-a)使用与Guttman查找叶子节点方法,找到当前处理的有效对象所在的叶子节点;
[0025]3-3-b)在步骤3-3-a)中找到的叶子节点中,将待删除的有效对象所在的存储位置用无效对象代替,并从有效对象数组中删除待删除的有效对象,从而避免触发费时的R-树的结构紧凑操作,同时无效对象计数增加I ;
[0026]3-3-c)判断无效对象个数是否超过有效对象的个数,如果超过,则销毁自适应R-树的所有节点,计算合适的M值,然后对有效对象数组中的空间对象使用Guttman插入方法重新生成各层节点,优化自适应R-树的深度和广度比例;
[0027]3-3-d) M值通过枚举逼近法求解以下方程得到:
[0028]M(m+1)〈=N,
[0029]式中:M为单个叶子节点的最大存储空间对象个数,N为有效对象数组中的元素个数;
[0030]( 4 )使用自适应R-树存储铁路三维设计模型:
[0031]4-1)将铁路三维设计模型类派生于步骤3-1-a)的有效对象类,从而保证自适应R-树的叶子节点能够存储铁路三维设计模型;
[0032]步骤4-1)已有成熟技术。
[0033]4-2)使用步骤3-2)的自适应R-树的插入方法将铁路线路、站场、路基、桥梁和隧道专业的三维设计模型插入到自适应R-树中;
[0034](5)在铁路各专业设计方案优化调整过程中更新自适应R-树:
[0035]5-1)优化调整铁路线路、站场、路基、桥梁和隧道专业的某一个设计方案,形成新的设计方案;
[0036]5-2)使用步骤3-3)的自适应R-树的删除方法将步骤5_1)中优化调整的设计方案对应的三维设计模型删除,然后将上述三维设计模型从计算机内存中删除;
[0037]5-3)对步骤5-1)中新的设计方案,生成新的三维设计模型,然后使用步骤3-2)的自适应R-树的插入方法将上述新的三维设计模型插入到自适应R-树中;
[0038](6)在铁路三维设计软件的场景渲染过程中使用基于自适应R-树和缓冲区的模型滤除方法:
[0039]6-1)提供输入接口,允许用户在输入两个缓冲区参数阀值,分别为可视空间范围包围盒在X轴和Y轴方向的变化值,目的在于避免不必要的重复检索自适应R-树;
[0040]6-2)进行第一次场景渲染时,以当前可视空间范围的包围盒在X和Y轴方向外扩给定阀值后的包围盒为输入条件,检索自适应R-树,获得树中所有与上述外扩后的包围盒存在空间范围重叠的铁路三维设计模型,送达显卡进行渲染,从而不重叠的三维设计模型被滤除,减少了显卡的绘图数据量;
[0041]6-3)实时监测当前可视空间范围是否发生变化;如果当前可视空间范围没有发生变化,则不断执行步骤6-3);如果当前可视空间范围发生变化,则判断当前可视空间范围的包围盒相对上一次场景渲染时可视空间范围的包围盒的变化幅度是否超出给定的阀值,并按以下步骤处理:
[0042]6-3-a)如果X轴和Y轴两个方向都未超出阀值,则显卡仍然绘制将上一次场景渲染时的数据,从而避免了不必要的重复检索自适应R-树;
[0043]6-3-b)如果X轴和Y轴任意一个方向超出阀值,则执行与步骤6-2)中第一次场景渲染时相同的处理,然后执行步骤6-3 )。
[0044]本发明的显著效果是:在普通显卡条件下大幅度提高了大数据量铁路三维设计模型的渲染速度,在相关对比测试中发现提速幅度达170%?210%,使得铁路三维设计软件能够在广大铁路设计人员的普通PC中流畅运行,摆脱了对高性能图形工作站的依赖,促进了铁路三维设计软件的推广和使用。
【专利附图】

【附图说明】
[0045]图1为本发明的流程步骤图;
[0046]图2为本发明的自适应R-树的插入方法的工作流程图;
[0047]图3为本发明的自适应R-树的删除方法的工作流程图;
[0048]图4为本发明基于自适应R-树和缓冲区的模型滤除方法的工作流程图;
[0049]图5为本发明的可视空间范围包围盒的变化缓冲区概念示意图;
[0050]图6 Ca)为本发明用于效果验证的铁路线路、路基和桥梁三维设计模型;[0051]图6 (b)为本发明用于效果验证的铁路线路、路基和隧道三维设计模型;
[0052]图6 (c)为本发明用于效果验证的铁路线路、路基和站场三维设计模型;
[0053]图7为使用本发明技术前后的大数据量铁路三维设计模型渲染速度对比图;
[0054]图8为使用本发明技术后大数据量铁路三维设计模型渲染速度增幅示意图。
【具体实施方式】
[0055]如图1所示,以C++程序设计语言和OpenGL绘图环境为例,基于自适应R-树的大数据量铁路三维设计模型渲染方法按照以下步骤实施:
[0056](I)在铁路三维设计软件中生成铁路线路、站场、路基、桥梁和隧道等专业的设计方案。
[0057](2)生成铁路各专业设计方案对应的三维模型,统称为铁路三维设计模型。
[0058]步骤(I)和(2 )已有成熟技术。
[0059](3)实现适应设计方案频繁调整并匹配三维设计模型空间分布形态的自适应R-树:
[0060]3-1)改进Guttman R-树的数据结构,形成自适应R-树数据结构:
[0061]3-1-a)将自适应R-树的数据结构派生于Guttman R-树数据结构,继承GuttmanR-树的所有特征;
[0062]步骤3_l_a)已有成熟技术。
[0063]3-1-b)将自适应R-树的叶子节点中存储的空间对象分为有效对象和无效对象;实现一个空间对象类、一个有效对象类和一个无效对象类,其中有效对象类和无效对象类都从空间对象类派生;所有插入自适应R-树的空间对象都是有效对象,当一个对象从自适应R-树中删除后,在上述删除对象所在叶子节点中的存储位置用一个无效对象代替删除前的对象,无效对象与删除前的有效对象具有相同的包围盒数据,但是没有图形数据;
[0064]3-1-c)在自适应R-树的数据结构内设一个有效对象数组,用于存储所有叶子节点中的有效对象;同时内设一个计数变量N1统计叶子节点中存储的无效对象的个数;
[0065]3-2)如图2所示,改进Guttman R-树的插入方法,降低铁路各专业设计方案频繁调整时触发R-树节点分裂操作的概率,并自动优化R-树的深度和广度比例,形成自适应R-树的插入方法:
[0066]3-2-a)使用Guttman选择叶子节点方法,在自适应R-树中选中待插入的空间对象O1应该存入的叶子节点L1 ;
[0067]3-2-b)在叶子节点L1中查找第一个无效对象;如果找到,则将O1存储到第一个无效对象所占用的存储位置,然后自底向上更新自适应R-树的各层节点的包围盒;如果没有找到,则执行下一步;
[0068]3-2-c)使用与Guttman插入方法,将O1存储到L1中,然后判断自适应R-树的深度h是否超过单个叶子节点的最大存储空间对象个数M ;如果超过,则销毁自适应R-树的所有节点,计算合适的M值,然后对自适应R-树中的有效对象使用Guttman插入方法重新生成各层节点,优化R-树的深度和广度比例;
[0069]3-2-d) M值通过枚举逼近法求解以下方程得到:
[0070]M(m+1)<=N,[0071]式中:M为最大存储空间对象个数,N为自适应R-树中的所有有效空间对象个数;
[0072]3-3)如图3所示,改进Guttman R-树的删除方法,降低铁路各专业设计方案频繁调整时触发R-树结构紧凑操作的概率,并自动优化R-树的深度和广度比例,形成自适应R-数的删除方法:
[0073]3-3-a)使用Guttman查找叶子节点方法,找到待删除的空间对象O2所在的叶子节
1.[0074]3-3-b)在删除叶子节点L2中的空间对象O2时,将O2所在的存储位置用无效对象代替,无效对象个数N1增加I,并从有效对象数组中删除O2 ;
[0075]3-3-c)判断无效对象个数N1是否超过有效对象的个数N2 ;如果超过,则销毁自适应R-树的所有节点,计算合适的M值,然后对自适应R-树中的有效对象使用Guttman插入方法重新生成各层节点,优化R-树的深度和广度比例;
[0076]3-3-d) M值通过枚举逼近法求解以下方程得到:
[0077]M(m+1)<=N,
[0078]式中:M为最大存储空间对象个数,N为自适应R-树中的所有有效空间对象个数;
[0079]( 4 )使用自适应R-树存储铁路三维设计模型:
[0080]4-1)将铁路三维设计模型类派生于步骤3-1-a)的有效对象类,从而保证自适应R-树的叶子节点能够存储铁路三维设计模型;
[0081]步骤4-1)已有成熟技术。
[0082]4-2)使用步骤3-2)的自适应R-树的插入方法将铁路线路、站场、路基、桥梁和隧道专业的三维设计模型插入到自适应R-树中;
[0083](5)在铁路各专业设计方案优化调整过程中更新自适应R-树:
[0084]5-1)优化调整铁路线路、站场、路基、桥梁和隧道专业的某一个设计方案,形成新的设计方案;
[0085]5-2)使用步骤3-3)的自适应R-树的删除方法将步骤5_1)中优化调整的设计方案对应的三维设计模型删除,然后将上述三维设计模型从计算机内存中删除;
[0086]5-3)对步骤5-1)中新的设计方案,生成新的三维设计模型,然后使用步骤3-2)的自适应R-树的插入方法将上述新的三维设计模型插入到自适应R-树中;
[0087](6)如图4所示,在铁路三维设计软件的场景渲染过程中使用基于自适应R-树和缓冲区的模型滤除方法:
[0088]6-1)提供输入接口,允许用户在输入两个缓冲区参数阀值dX和dY,如图5所示,分别为可视空间范围包围盒在X轴和Y轴方向的变化值,目的在于避免不必要的重复检索自适应R-树;在OpenGL绘图环境中,可视空间范围是OpenGL中的视景体范围;
[0089]6-2)场景渲染是计算机显卡不断重绘铁路三维设计模型的过程;进行第一次场景渲染时,以当前可视空间范围的包围盒E1在X和Y轴方向外扩给定阀值后的包围盒E2为输入条件,检索自适应R-树,获得树中所有与E2存在空间范围重叠的铁路三维设计模型,送达显卡进行渲染,从而不重叠的三维设计模型被滤除,减少了显卡的绘图数据量;
[0090]6-3)实时监测当前可视空间范围是否发生变化;如果当前可视空间范围没有发生变化,则不断执行步骤6-3);如果当前可视空间范围发生变化,则判断当前可视空间范围的包围盒E1相对上一次场景渲染时可视空间范围的包围盒Etl的变化幅度是否超出给定的阀值dX和dY,并按以下步骤处理:
[0091]6-3-a)如果X轴和Y轴两个方向都未超出阀值,则显卡仍然绘制将上一次场景渲染时的数据,从而避免了不必要的重复检索自适应R-树;
[0092]6-3-b)如果X轴和Y轴任意一个方向超出阀值,则执行与步骤6-2)中第一次场景渲染时相同的处理,然后执行步骤6-3);
[0093]本发明基于自适应R-树的大数据量铁路三维设计模型渲染方法的效果通过以下实验数据体现:
[0094]1.实验条件
[0095]实验采用的PC机CPU型号为Intel Core i5CPU650i3.2GHZ,内存为DDR3类型
3.5GB容量,显卡型号为NVIDIA GeForce405。实验采用一个自主研发的铁路三维设计软件,数据为大饭铺至马栅铁路可行性研究阶段的铁路三维设计模型,包括线路、站场、路基、桥梁和隧道等专业三维设计模型共计约7000个,三维场景的局部渲染效果如图6 (a)、图6(b)和图6 (c)所示。在铁路三维设计软件中,预先设定自适应R-树的叶子节点的最大存储空间对象个数M值为6,经过自适应R-树插入操作,最终建立的自适应R-树深度为5,叶子节点的最大存储空间对象数M值仍然为6,R-树的深度和广度比例比较平衡。
[0096]2.试验结果
[0097]帧率是反映渲染速度的一个重要指标,含义为场景不断刷新时,显卡每秒钟所绘制场景数中铁路三维设计模型的次数。帧率的值越大,代表渲染速度越快。在同样显卡配置条件下,渲染速度越快,则表明铁路三维设计软件对硬件配置要求越低。帧率可以采用多次绘制取平均的方法进行计算,计算公式如下:
[0098]
【权利要求】
1.一种基于自适应R-树的大数据量铁路三维设计模型渲染方法,该方法在铁路三维设计软件的实现过程中使用,运行于配备普通显卡的PC机的内存之中,包括以下步骤: (1)在所述铁路三维设计软件中生成铁路线路、站场、路基、桥梁和隧道专业的设计方案; (2)生成上述铁路各专业设计方案对应的三维模型,统称为铁路三维设计模型; (3)实现适应设计方案频繁调整并匹配三维设计模型空间分布形态的自适应R-树: 3-1)自适应R-树数据结构: 3-1-a)将自适应R-树的数据结构派生于Guttman R-树数据结构,继承Guttman R-树的所有特征; 3-1-b)将自适应R-树的叶子节点中存储的空间对象分为有效对象和无效对象;3-1-c)在自适应R-树的数据结构内设一个有效对象数组,用于存储所有叶子节点中的有效对象;同时内设一个计数变量统计叶子节点中存储的无效对象的个数; 3-2)自适应R-树的插入方法: 3-2-a)使用Guttman选择叶子节点方法,在自适应R-树中选中待插入的有效对象应该存入的叶子节点; 3-2-b)在步骤3-2-a)选中的叶子节点中查找第一个无效对象,如果找到,则将待插入的有效对象存储到第一个无效对象所占用的存储位置,然后自底向上更新自适应R-树的各层节点的包围盒,从而避免触发费时的自适应R-树的节点分裂操作;如果没有找到,则执行步骤3_2_c);· 3-2-c)使用与Guttman插入方法插入当前处理的有效对象;插入成功之后,判断自适应R-树的深度是否超过单个叶子节点的最大存储空间对象个数M ;如果超过,则销毁自适应R-树的所有节点,计算合适的M值,然后对有效对象数组中的空间对象使用Guttman插入方法重新生成各层节点,从而优化R-树的深度和广度比例; 3-2-d) M值通过枚举逼近法求解以下方程得到:
M(m+1)〈=N, 式中:M为单个叶子节点的最大存储空间对象个数,N为有效对象数组中的元素个数; 3-3)自适应R-树的删除方法: 3-3-a)使用与Guttman查找叶子节点方法,找到当前处理的有效对象所在的叶子节占.3-3-b)在步骤3-3-a)中找到的叶子节点中,将待删除的有效对象所在的存储位置用无效对象代替,并从有效对象数组中删除待删除的有效对象,从而避免触发费时的R-树的结构紧凑操作,同时无效对象计数增加I ; 3-3-c)判断无效对象个数是否超过有效对象的个数,如果超过,则销毁自适应R-树的所有节点,计算合适的M值,然后对有效对象数组中的空间对象使用Guttman插入方法重新生成各层节点,优化自适应R-树的深度和广度比例; 3-3-d) M值通过枚举逼近法求解以下方程得到:
M(m+1)〈=N, 式中:M为单个叶子节点的最大存储空间对象个数,N为有效对象数组中的元素个数; (4)使用自适应R-树存储铁路三维设计模型:4-1)将铁路三维设计模型类派生于步骤3-1-a)的有效对象类,从而保证自适应R-树的叶子节点能够存储铁路三维设计模型; 4-2)使用步骤3-2)的自适应R-树的插入方法将铁路线路、站场、路基、桥梁和隧道专业的三维设计模型插入到自适应R-树中; (5)在铁路各专业设计方案优化调整过程中更新自适应R-树: 5-1)优化调整铁路线路、站场、路基、桥梁和隧道专业的某一个设计方案,形成新的设计方案; 5-2)使用步骤3-3)的自适应R-树的删除方法将步骤5-1)中优化调整的设计方案对应的三维设计模型删除,然后将上述三维设计模型从计算机内存中删除; 5-3)对步骤5-1)中新的设计方案,生成新的三维设计模型,然后使用步骤3-2)的自适应R-树的插入方法将上述新的三维设计模型插入到自适应R-树中; (6)在铁路三维设计软件的场景渲染过程中使用基于自适应R-树和缓冲区的模型滤除方法: 6-1)提供输入接口,允许用户在输入两个缓冲区参数阀值,分别为可视空间范围包围盒在X轴和Y轴方向的变化值,目的在于避免不必要的重复检索自适应R-树; 6-2)进行第一次场景渲染时,以当前可视空间范围的包围盒在X和Y轴方向外扩给定阀值后的包围盒为输入条件,检索自适应R-树,获得树中所有与上述外扩后的包围盒存在空间范围重叠的铁路三维设计模型,送达显卡进行渲染,从而不重叠的三维设计模型被滤除,减少了显卡的绘图数据量; 6-3)实时监测当前可视空间范围`是否发生变化;如果当前可视空间范围没有发生变化,则不断执行步骤6-3);如果当前可视空间范围发生变化,则判断当前可视空间范围的包围盒相对上一次场景渲染时可视空间范围的包围盒的变化幅度是否超出给定的阀值,并按以下步骤处理: 6-3-a)如果X轴和Y轴两个方向都未超出阀值,则显卡仍然绘制将上一次场景渲染时的数据,从而避免了不必要的重复检索自适应R-树; 6-3-b)如果X轴和Y轴任意一个方向超出阀值,则执行与步骤6-2)中第一次场景渲染时相同的处理,然后执行步骤6-3 )。
2.根据权利I要求所述的基于自适应R-树的大数据量铁路三维设计模型渲染方法,其特征是:步骤(3)所述自适应R-树的插入方法是一种降低铁路各专业设计方案频繁调整时触发自适应R-树节点分裂操作的概率,并自动优化R-树的深度和广度比例的方法。
3.根据权利I要求所述的基于自适应R-树的大数据量铁路三维设计模型渲染方法,其特征是:步骤(3)所述自适应R-树的删除方法是一种降低铁路各专业设计方案频繁调整时触发自适应R-树结构紧凑操作的概率,并自动优化R-树的深度和广度比例的方法。
4.根据权利I要求所述的基于自适应R-树的大数据量铁路三维设计模型渲染方法,其特征是:步骤(6)所述的一种基于自适应R-树和缓冲区的模型滤除方法,是一种在铁路三维设计软件的场景渲染过程中,使用自适应R-树快速滤除不可视的铁路三维设计模型,提升渲染速度的方法。
【文档编号】G06T15/00GK103714192SQ201310305534
【公开日】2014年4月9日 申请日期:2013年7月18日 优先权日:2013年7月18日
【发明者】杨緖坤, 刘义勤, 王召祜 申请人:铁道第三勘察设计院集团有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1