几何核心 RGK V2.0

打开网易新闻 查看精彩图片

距离推出新产品——RGK 2.0几何内核已经过去了整整一年。我们将尝试讨论 RGK 过去一段时间所做的主要改进。几何内核是一个软件组件,旨在解决几何建模的各种问题:使用“精确”几何体以各种方式构建实体、曲面和线框模型,对生成的模型进行各种类型的分析,例如检查构建的正确性,计算质量惯性特性、距离、角度、物体组彼此的交集、精确几何形状的多边形近似的构造、去除不可见线的投影的构造等。 RGK核心解决的完整任务列表,以及其架构和模型呈现功能在过去一年中没有发生重大变化,更不用说该产品的功能、API结构和各种应用特性。本文的目的是谈谈这一年来内核发生的变化。按照传统,这些变化将以最直观的形式——插图的形式来呈现,因为即使对于非专业人士来说,几何建模也是应用数学中一个非常直观和明显的领域。

创建和编辑模型的功能

“直接”建模的功能已经得到了显着的发展 特别是,在“替换物体面”操作中,添加了对重建与被替换面接触的展平效果的支持。支持恒定和可变半径展开。

替换板体表面两个面的表面示例(内孔变半径展开)
打开网易新闻 查看精彩图片
替换板体表面两个面的表面示例(内孔变半径展开)
用具有多个面的片体替换面的示例
打开网易新闻 查看精彩图片
用具有多个面的片体替换面的示例
替换与复杂展开接触的面的示例
打开网易新闻 查看精彩图片
替换与复杂展开接触的面的示例

操作算法本身进行了修改,以提供从任意片体的面替换表面上不相连的面的能力。

作为该操作的一个特例,支持改变圆柱面、球面、圆锥面和环形面的尺寸和位置的功能。

改变圆柱孔表面半径的示例
打开网易新闻 查看精彩图片
改变圆柱孔表面半径的示例

面部去除操作的功能得到了显着扩展。添加了对已删除面的复杂拓扑连接的支持。

打开网易新闻 查看精彩图片
边缘删除示例
打开网易新闻 查看精彩图片
边缘删除示例

开发了新功能,用于识别单个面和序列的恒定和可变半径展开。在使用导入几何体的应用程序中可能特别需要此功能,因为展开表面既可以使用 RGK 本身构建,也可以从外部系统导入。

识别恒定半径的链平滑

打开网易新闻 查看精彩图片
识别导入模型的变半径定律
打开网易新闻 查看精彩图片
识别导入模型的变半径定律

内核实现了用新半径重建已识别平滑的功能,包括更改展开类型(例如,可以用可变半径替换恒定半径)。

更改检测到的恒定半径校平
打开网易新闻 查看精彩图片
更改检测到的恒定半径校平
更改导入校平的半径(1 – 识别的校平;2 – 重建恒定半径校平;
打开网易新闻 查看精彩图片
更改导入校平的半径(1 – 识别的校平;2 – 重建恒定半径校平;

更改导入校平的半径(1 – 识别的校平;2 – 重建恒定半径校平;3 – 重建可变半径校平)

根据图案(“图案化”)复制面的操作现在支持识别和重建校平的功能。

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片
通过自动调整尺寸和在底部进行平滑来复制面的示例
打开网易新闻 查看精彩图片
通过自动调整尺寸和在底部进行平滑来复制面的示例

此外,复制面轮廓的方案也得到了改进,并且消除了一些重要的操作限制。

沿复杂表面复制孔的示例
打开网易新闻 查看精彩图片
沿复杂表面复制孔的示例

“扫掠”操作中增加了大量新模式和特殊配置的处理。特别是,现在支持多轮廓扫描 - 能够在一条轨迹上使用不同几何形状和拓扑的多个轮廓。此功能极大地增强了复杂几何模型的建模能力。

生成实体和片体的多学科扫掠示例
打开网易新闻 查看精彩图片
生成实体和片体的多学科扫掠示例

应该注意的是,当使用多个轮廓时,支持指定附加的扭转和缩放规则,以及指定轮廓顶点彼此的对应关系。另一个可行性是支持开放线体作为起始或结束轮廓,而所有其他轮廓都是封闭的,因此构造了实体,而不是表面。借助这个机会,您可以构建“管”体。

打开网易新闻 查看精彩图片
在多视图扫掠中设置顶点匹配
打开网易新闻 查看精彩图片
在多视图扫掠中设置顶点匹配

添加了对不同模式的轮廓缩放法则的支持。此外,所有这些模式都可以与扭转规则结合起来。

扫掠中缩放法则的选项
打开网易新闻 查看精彩图片
扫掠中缩放法则的选项
缩放规则和扭转规则的组合
打开网易新闻 查看精彩图片
缩放规则和扭转规则的组合

新版本 RGK 中一个有趣的缩放功能是,当轮廓“折叠”到顶点时,支持在路径的开头或结尾处进行零缩放。

在扫掠中支持零刻度的示例
打开网易新闻 查看精彩图片
在扫掠中支持零刻度的示例

通过在身体表面形成圆形区域,改进了轨迹扭结的处理

打开网易新闻 查看精彩图片
新版本RGK中处理轨迹角度示例
打开网易新闻 查看精彩图片
新版本RGK中处理轨迹角度示例

在多轨迹扫掠中,对轨迹和引导的同步进行了重要改进,并实现了对 G1 不连续引导的支持。

路径和引导同步模式
打开网易新闻 查看精彩图片
路径和引导同步模式
对 G1 不连续引导的支持以及应用不同同步规则的效果
打开网易新闻 查看精彩图片
对 G1 不连续引导的支持以及应用不同同步规则的效果

新版本的内核扩展了构建体面斜率的功能。首先,实现了对几种新型拔模曲面的支持。 RGK 现在支持以下表面类型:

  • 等斜线 - 保持斜坡方向与斜坡表面法线之间的角度
  • 曲面 - 引导由坡度方向和原始曲面的法线确定
  • 曲线 - 引导线由斜率方向和原始曲线的切线确定
  • 法线 – 坡度的方向由相邻曲面的法线确定

打开网易新闻 查看精彩图片
拔模面差异图解
打开网易新闻 查看精彩图片
拔模面差异图解

其次,增加了实际中很重要的拓扑处理,增加了算法的可靠性。特别是也支持反转面。

打开网易新闻 查看精彩图片
当斜面超出基础拓扑时进行面反转
打开网易新闻 查看精彩图片
当斜面超出基础拓扑时进行面反转

已实现对复合分型线和分割包含多个固定边的锥形面的支持。

打开网易新闻 查看精彩图片
新版Slope运算RGK中的拓扑处理图解
打开网易新闻 查看精彩图片
新版Slope运算RGK中的拓扑处理图解

需要单独指出的是,RGK 允许您在一次操作中为不同的面构建不同角度的斜面。

两个最初平滑连接的面以不同角度偏转的示例
打开网易新闻 查看精彩图片
两个最初平滑连接的面以不同角度偏转的示例

进一步开发了核心构建具有指定分型面的斜面的能力。几乎在任何地方,“表面”都被理解为片体——一组相互连接、方向一致的面,不具有封闭体积的特性。仅使用一个面作为分型面的限制已被删除。

使用多面体连接器表面的插图
打开网易新闻 查看精彩图片
使用多面体连接器表面的插图

斜面就像 RGK 中的许多“局部”操作一样,可以在“全局”模式下工作,如果有必要,不仅可以修改身体的相邻面,还可以修改远离它们的面。在新版本中,通过改进许多基本的工具内核算法,进一步开发了该功能。

打开网易新闻 查看精彩图片
边面行动全球性质的插图
打开网易新闻 查看精彩图片
边面行动全球性质的插图

在不久的将来,我们计划支持不与原始主体相交的“分型面”,这将为构建更复杂的坡度几何形状增加灵活性。还实施了一整套用于处理斜面连接的选项,包括斜面之间的连接以及与主体的“固定”面的连接。

叶体展开的功能已发育。添加了通过复杂边框收紧主体断裂的功能,支持将校平边缘,延伸为展平延伸到主体。

在保持边界连续性的同时进行扩展的示例
打开网易新闻 查看精彩图片
在保持边界连续性的同时进行扩展的示例
校平片体自然膨胀的示例
打开网易新闻 查看精彩图片
校平片体自然膨胀的示例
“延伸到正文”选项如何工作的示例
打开网易新闻 查看精彩图片
“延伸到正文”选项如何工作的示例

传统上,在 RGK 的开发过程中,人们非常注重改进所有模式(校平边缘、面和三角形平滑)的抗锯齿算法。正如去年所指出的,这部分RGK架构的一个重要特点是拓扑算法的高度统一。可以说,校平算法本质上是相同的,但是根据接收到的输入数据,它可以解决不同的问题。在新版本中,决定更改内核API,以最大程度地体现这一架构点。特别是,单独的常量和变量校平类已被删除,并且数据结构已以允许最终应用程序的应用程序开发人员使用 RGK 平滑算法的组合灵活性的方式进行更改。当然,问题不仅仅限于架构变化。在新版本的内核中,在各个方面都做了大量的工作来开发平滑算法。既可以处理复杂的拓扑结构,也可以支持新型平滑表面并改善其构造的数学细微差别。首先,添加了在生成溢出时选择需要保存的边缘的功能。

指定要保存的不同边时校平算法的行为
打开网易新闻 查看精彩图片
指定要保存的不同边时校平算法的行为

其次,开发了一种算法来强制校平在给定的面或片体上停止。

停止对指定片体进行校平
打开网易新闻 查看精彩图片
停止对指定片体进行校平
在给定的身体表面停止校平
打开网易新闻 查看精彩图片
在给定的身体表面停止校平

基于复杂校平完成处理中指定几何形状的停止算法,添加了形成正确实体的非校平完成的可能性,使得可以使用其他工具继续建模。

如果不能校平完成,则停止校平
打开网易新闻 查看精彩图片
如果不能校平完成,则停止校平

进一步开发了嵌入校平片的算法。添加了一个选项来考虑校平片区域中主体的拓扑。

启用或禁用选项以考虑校平区域中的拓扑的图示
打开网易新闻 查看精彩图片
启用或禁用选项以考虑校平区域中的拓扑的图示

在处理模型上的复杂拓扑配置以进行常量和变量校平时,校平算法的功能得到了显着扩展。

在复杂拓扑结构中嵌入边缘校平的示例
打开网易新闻 查看精彩图片
在复杂拓扑结构中嵌入边缘校平的示例
嵌入三角形校平的示例
打开网易新闻 查看精彩图片
嵌入三角形校平的示例
打开网易新闻 查看精彩图片

扩展了小半径曲率区域的处理能力 - 现在小半径滚动形成区域的拓扑可以是任意的

可变半径校平叠加示例
打开网易新闻 查看精彩图片
可变半径校平叠加示例
通过对称修剪校平片材进行校平相互重叠的示例
打开网易新闻 查看精彩图片
通过对称修剪校平片材进行校平相互重叠的示例
多个面上重叠校平的示例
打开网易新闻 查看精彩图片
多个面上重叠校平的示例

引入了对校平“球”的滚动顺序的控制,它允许您改变不同凸面边缘相交的顶点处的表面形状。

通过不同的滚球顺序形成校平表面的示例
打开网易新闻 查看精彩图片
通过不同的滚球顺序形成校平表面的示例

现在可以通过滚动球来处理模型的拐角,而不仅仅是修剪校平表面。

“校平”校平角度同时保持主体锋利边缘的插图
打开网易新闻 查看精彩图片
“校平”校平角度同时保持主体锋利边缘的插图

由于校平边缘和校平面均使用一种算法,因此以相同的方式执行各种连接面情况的处理。

打开网易新闻 查看精彩图片
边缘和三角形模式下校平算法的行为示例
打开网易新闻 查看精彩图片
边缘和三角形模式下校平算法的行为示例

众所周知,RGK 的校平功能不仅适用于实体,也适用于片体。而且,从API的角度来看,不同类型的拓扑模型的操作没有区别。

边缘和三角形模式下校平算法的行为示例
打开网易新闻 查看精彩图片
边缘和三角形模式下校平算法的行为示例

除了拓扑校平算法的改进和发展外,其几何部分也得到了显着的发展。特别是,人们在开发处理校平表面自相交的算法方面投入了大量精力。这种情况在实际问题中经常出现,工业核心必须开发出保证不存在自交的几何校正工具。这项任务非常复杂,无法用一种算法来解决 - 有必要开发一套工具并制定其在内核算法中实际使用的规则。这正是 RGK 开发人员目前正在做的工作,在新版本中您可以看到这项工作的第一个成果。这是我们正在讨论的问题:

校平表面自相交的示例
打开网易新闻 查看精彩图片
校平表面自相交的示例
校正滑曲面自相交的算法之一如何工作的示例
打开网易新闻 查看精彩图片
校正滑曲面自相交的算法之一如何工作的示例
校正平滑表面高曲率区域自相交的算法示例
打开网易新闻 查看精彩图片
校正平滑表面高曲率区域自相交的算法示例

改进了构建圆盘平滑的算法,并添加了一种新型平滑表面 - “等参”平滑表面。磁盘平滑现在支持任意半径法则和截面形状。

“传统”滚球平滑与圆盘校平之间差异的图示
打开网易新闻 查看精彩图片
“传统”滚球平滑与圆盘校平之间差异的图示
圆盘校平模式如何在实体和片材实体上工作的示例
打开网易新闻 查看精彩图片
圆盘校平模式如何在实体和片材实体上工作的示例

当然,在三个面的配合中也可以使用圆盘校平。

在三角模式下使用磁盘校平模式的示例
打开网易新闻 查看精彩图片
在三角模式下使用磁盘校平模式的示例

除了如上所述的“传统校平模式之外,还开发了一种用于构建“等参数”校平的算法。其本质是校平曲面的剖面附着于父面之一的等参线。

等参平滑和滚动球表面之间差异的图示
打开网易新闻 查看精彩图片
等参平滑和滚动球表面之间差异的图示

正如您可能想象的那样,等参校平与其他两种类型一样,可以控制截面的半径和形状。

具有可变横截面的等参校平示例
打开网易新闻 查看精彩图片
具有可变横截面的等参校平示例

在新版本的 RGK 中,为了提高平滑算法的灵活性,另一项主要工作是开发新型平滑表面,同时保持曲线的几何形状。让我们回想一下,在内核的早期版本中,可以在保留模型边的同时构造曲面,从而提供与相对面的相切,而不需要与包含已保存边的面相切。这就是所谓的校平“溢出”。现在内核添加了通过两种方式保存此类触摸的功能。所谓的“对称”和“圆锥”模式。在第一个中,响应参考校平曲线似乎重复了所保存的边缘的形状,在第二个中,它遵循给定的半径定律。

边缘保留抗锯齿模式图示
打开网易新闻 查看精彩图片
边缘保留抗锯齿模式图示
边缘模式的操作说明,包括具有可变半径的模式
打开网易新闻 查看精彩图片
边缘模式的操作说明,包括具有可变半径的模式

此功能的开发正在积极进行中。在不久的将来,计划特别添加具有两条指定参考曲线并结合半径定律的曲面。此外,正在开发数学来提高各种复杂情况下可变半径连接表面的质量。目前这些研究的结果令人兴奋,我们预计在即将到来的内核更新中,我们将能够以现成功能的形式更详细地展示它们。

创建倒角的功能也没有被排除在改进之外。添加了两种设置倒角尺寸的新方法:距顶点的两种偏移 - 与主面的切线的交点,以及偏移和相邻角度。

指定边上倒角尺寸的新方法的图示
打开网易新闻 查看精彩图片
指定边上倒角尺寸的新方法的图示

如果我们谈论 RGK 开发团队目前正在解决的有趣的当前问题,我们应该注意到一种新算法的工作,该算法用于构建收紧任意配置区域的表面。一方面,这将成为各种内核算法内部使用的强大工具,另一方面,它也将可供通过适当的 API 使用内核的应用程序开发人员使用。现在透露技术细节还为时过早。以下是新工具如何工作的一些直观示例。

打开网易新闻 查看精彩图片
校平中顶点区域平滑填充问题中的新拖拽面
打开网易新闻 查看精彩图片
校平中顶点区域平滑填充问题中的新拖拽面
打开网易新闻 查看精彩图片
校平中Y形区域校平填充问题中的新拖拽面
打开网易新闻 查看精彩图片
校平中Y形区域校平填充问题中的新拖拽面

API 和一般功能的更改

除了建模功能的开发之外,在过去的一年里我们还做了大量的工作来改进内核的内部算法,这使得以如此高的速度增加功能成为可能。所有主要组件,包括内部和外部可访问的,都得到了改进:用于构建相交和投影线的算法、布尔运算、面、删除不可见线的投影算法、拓扑模型验证器等等。一方面,所开展的工作使得进一步统一内核内部工具成为可能,从而简化了其进一步的开发,另一方面,它使我们能够提高程序代码的质量和速度。作为此类工作效果的示例,我想提供几张插图来显示多边形模型生成功能的当前状态和速度变化。下面的所有示例都涉及在同一台计算机上以多线程模式构建具有相同精度参数的网格。

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片
RGK 刻面与知名竞争核心以及一年前版本的比较示例
打开网易新闻 查看精彩图片
RGK 刻面与知名竞争核心以及一年前版本的比较示例

我们在改进和开发核心用户 API 方面做了大量工作。在这一年里,核心 API 基本上实现了现代化,以满足工业使用的要求。新版本的 API 允许应用程序程序员仅提供发布库和头文件以用于调试和生产目的。我们认为,API 的一个重要发展是 Python API 的出现及其集成,包括集成到内核测试 shell 中。现在,Python 程序员可以轻松地使用 RGK 工具包编写小型应用程序系统。用于识别模型拓扑元素的新算法已经开发出来 - 现在它们被分配了固定的结构标识符。这使可以显着简化应用程序代码与内核 API 的交互,并减少存储应用程序代码对拓扑模型元素的引用的内存需求。改进的文档、使用示例、测试应用程序。

工作计划和方向

正如已经指出的,现在有许多有用且有趣的功能和工具正在开发中。其中一些已经写在上面了。但这并不是完整的作品列表。特别是,用于以不同公式构建中值曲面的算法的开发正在进行中,包括适用于任意几何形状的“真实”中值。计划扩展功能并进一步加速平面,删除不可见线的程序,检查实体的相交,生成具有复杂边界条件的放样和扫掠曲面以及提高曲面本身的质量,可以消除对G2 校平拓扑等等。

加速内核开发的另一个激励因素是我们的旗舰产品(T-FLEX CAD)逐渐过渡到使用 RGK,以及越来越多的开发公司有兴趣在其应用中使用该内核。应用程序。目前,几家领先的俄罗斯工程软件开发商正在对RGK进行试运行,以评估国家支持下开发中使用该内核。显然,这只是一个开始。

RGK核心不断发展和改进,自一年前提出的目标:通过使用与世界市场上最好的解决方案公平竞争的国产几何核心来提高我国技术独立水平,这一目标始终没有改变。尽管这项任务雄心勃勃且极其复杂,但过去的一年只是增强了人们对在相对较短的时间内实现这一目标的信心。当然,无论是在添加新功能方面,还是在提高程序代码的速度和健壮性方面,还有很多工作要做,但行者掌握路。