武 汉 理 工 大 学 学 报
3dsmax 多边形模型向 UG工程模型的转换
摘 要: 针对目前艺术类软件和工程类软件数据交流困难的问题 ,提出了 3dsmax 模型向 U G模型转换的 2 种间接方 法。一种是以曲线为媒介 ,采用从多边形模型表面抽取关键曲线、利用 Rhino 处理抽取关键曲线的方法 ,并以一客车前 脸的拆解过程为例说明抽取过程;另一种是以点为媒介 ,采用多边形模型输出点云、利用逆向工程软件处理点云的方法 , 并通过实例证明了该方法的可行性和正确性。方法对提高产品的开发效率、增加产品更新换代速度有着重要的意义。 关键词: 3dsmax ; U G; 多边形模型 ;
现在的艺术类和工程类设计软件都发展得比较成熟 ,但是两类软件之间存在着数据交流困难 ,不能实现 数据直接转换的问题。这对于在产品的概念设计和工程设计 2 个阶段 ,提高产品的开发效率是极为不利的。 两类软件交流困难 ,是因为艺术类软件普遍采用多边形网格算法 ,而工程软件使用的是 nurbs 算法。 利用已有的默认数据接口结合手动操作的方法 ,可以实现两类模型的转换。现以 3dsmax 向 U G转换模 型为例说明转换的思路。 如果直接采用默认数据接口 ,可以使用的数据格式有 IGES、STL 、DXF ,但 3dsmax 中的模型大部分是多 边形模型 ,较少有 nurbs 模型 ,因而无法用 IGES 格式输出;如果 3dsmax 以 STL 格式向 U G输出模型 ,那么 在 U G中将会显示出相应的面片 ,但这种面片不属于特征 ,没有任何参数属性 ,只能做为一个参照体;DXF 格式的情况与 IGES格式类似[1~3] 。要实现 3dsmax 模型向 U G的输出必须通过间接的方法 ,不可能直接转 换曲面 ,但曲面的下一阶层 ———点和线是可以完成转换的 ,因此就产生了 2 种不同的方法。 1 采用曲线为媒介的转换方法对于 3dsmax 采用的多边形算法 ,曲面通过多次细分的多边形网格加以近似 ,所以 3dsmax 模型在放大后往往会出现问题 ,以 nurbs 软件的标准来看 ,由于不用考虑曲面的曲率连续性 ,很复杂的模型通过多块曲 面的简单几何搭接就可以组成一个整体[4 ,5] 。 采用 nurbs 算法建立的 U G模型属于高精度模型 ,形状复杂的曲面不可能一次生成 ,往往是由很多形状 较为均匀的单块曲面拼接而成。由于在拼接处保存了一次曲率或二次曲率连续性 ,使得整块曲面不存在任 何拼接缺陷。所以单块均匀曲面是复杂曲面的基础 ,而单块曲面是由一组关键曲线生成 ,这组关键曲线一般 由截面线(section)和引导线(guide)组成。 采用曲线为媒介的转换方法的思路就是利用关键曲线来实现转换。其转换流程如图 1 所示。
1. 1 从多边形模型表面抽取关键曲线 要实现多边形模型向 nurbs 模型的转化 ,必须首先解决单块曲面的关键曲线问题。这就需要从多边形 模型中抽取线条。由于多边形建模可以不依赖线条 ,这样就只能从多边形表面上去寻找关键曲线 ,这就增加 了获取线条的难度。从多边形表面上寻找曲线有 2 种办法: 第 1 种方法是在 3dsmax 中直接选取多边形网格中的多条相连接的边并析出曲线。这种方法比较灵活 , 主要根据多边形的形状来选择多条相连接的边 ,优点是失真小、操作较方便 ,适合形状较为复杂、网格分布均 匀的多边形模型。图 2 显示的是汽车尾部玻璃 ,左边为细分后的线框图 ,右边为从中选取的连续边。 图 3 所示为一汽车模型的发动机罩着色图和线框图 ,在曲面的鼓起处网格分布不规则 ,如果选取网格边 就会出现不连续的问题。
第 2 种方法则忽略多边形网格的具体布置 ,直接在 3dsmax 或 Rhino 中用切面截取曲线。这样可以避免 多边形网格分布不规则所带来的抽线问题 ,其方法是用一块平面或二维曲线拉伸成的三维面片去切割模型 , 所切割出的线条即为关键曲线。缺点是当曲面较为复杂时 ,截取出的线条失真较大。 当然 ,如果模型非常复杂 ,就必须先拆解曲面然后再按上述 2 种方法获取关 键线条。拆解的原则:尽量减少拆解出的曲面数量 ,但要保证拆解出的面能够在 nurbs软件中重新生成。这就需要把握好拆解的度 ,如果拆的过密 ,这样尽管在 nurbs软件中生成这些曲面相对容易 ,但需要缝合的地方多了 ,这样生成的最终曲 面可能会在缝合处产生缺陷;如果拆的过稀 ,那么在 nurbs 软件中生成这些曲面 可能会遇到困难 ,但缝合的地方就少了。拆解的好坏直接影响到转换的效果 ,不 同曲面的最佳拆解方案可能会完全不一样 ,这要根据曲面的具体形状来判断。图 4 显示的是一客车前脸的拆解过程。
1. 2 将关键曲线转换为 nurbs 曲线并修正 如果是在 3dsmax 中拆解并析出曲线 ,曲线格式为 spline 线条;如果是在 Rhino 中拆解曲线 ,曲线格式为 polyline 线条。无论是 spline 线条还是 polyline 线条 ,都可以直接转换成 nurbs 曲线 ,但转换出的 nurbs 线条 一般存在着节点过多、曲率混乱的问题。而 U G成面对曲线的要求有 3 点:1)曲线的节点数量正常并分布均 匀;2)曲线和曲线之间连接紧密 ,无大的缝隙;3)曲线的曲率变化平顺 ,无大的突变。所以对刚转换出的线条 要进行修正[6] 。 Rhino 有很强的 nurbs 曲线处理功能 ,它可以 1 次转换和修改多条曲线。U G不支持样条线格式 ,但可 以对 nurbs 线条进行修改 ,而且精度很高 ,不过 1 次只能修改1 根曲线。所以 ,比较切实的做法是用 Rhino 对样条线进行转换和修改并导入到 U G中 ,如果精度要求较高 ,则可以对导入到 U G中的曲线做进一步的修 正[7] 。 在 Rhino 中修正曲线有 3 点要注意:1)在保证形状误差的范围内减少节点;2)在保证形状误差的范围内 优化曲率;3)保证处理后的截面线和引导线在空间中是相交的。 修正好的曲线可以在 Rhino 中建立曲面 ,然后将曲面导出到 U G中;也可以直接将曲线导出到 U G中建 立曲面。 2 采用点为媒介的转换方法逆向工程是用一定的测量手段对实物或模型进行测量 ,根据测量数据通过三维几何建模方法重构实物 的 CAD 模型的过程 ,其流程如图 5 所示左侧路线。首先对现实物体扫描 ,以获取实物的点云数据 ,然后通过 逆向工程软件对点云进行数据处理 ,以简化点云的数量 ,使用三维工程软件对精简后的点云抽取曲线 ,进而 建立曲面 ,最后完成所需要的模型[8] 。 采用点为媒介的转换方法也可以叫做点云逆向工程转换法。对于用 3dsmax 制作的外形非常复杂的多边形曲面 ,可以将这些曲面转变为相应的点云数据 ,然后 采用逆向工程软件对点云进行处理 ,进而建立所需的曲面 ,其流程如图 5 所示右侧 路线。 3dsmax 多边形模型以网格状的结构存在 ,细分级别越高 ,网格越密集 ,生成的 编辑点就越多 ,把高度细分的 3dsmax 模型塌陷(collapse)即可得到由大量点云组成 的曲面。3dsmax 本身不具备处理点云的能力 ,但可以用 STL 或 ASE 文件格式输 出点云。 对于点云的处理 ,较合适的软件是 Imageware ,它拥有很强的曲面处理能力 ,可 以生成高质量的曲面 ,并直接导出到 U G中做进一步处理。
3 结 语
提出了 2 种有效的实现由 3dsmax 多边形模型向以 nurbs 为算法的 U G工程模型的转换方法 ,即以曲线 为媒介的转换方法和以点为媒介的转换方法 ,并通过实例证明了该方法的可行性和正确性。通过转换可使 工业产品的造型设计和工程设计结合得更为紧密 ,对提高产品的开发效率、增加产品更新换代速度、提升企 业竞争力有着十分重要的意义。