Rhino转换网格为NURBS曲面教学

当我们需要把一个网格(Mesh)转成NURBS曲面时,可以让Rhino帮助我们完成。

以下范例使用Rhino 6
01.jpg


以下是一张由三角网格所组成人脸模型。
002.jpg003.jpg

这张人脸网格属于非封闭的单张网格结构,第一步把它的边缘提取为曲线,曲线是留待后面分割曲面用。

1.使用Silhouette指令,提取网格的边缘成曲线(红线)。

注意:如果是用Rhino5,请使用 DupBorder指令提取网络的边缘,生成这曲线
004.jpg

2.用 SrfPT指令,画出一张矩形面,面积稍比网格大。
005.jpg

这张矩形曲面UV结构太少,需要重要增加UV密度,以便后续拟合出精确的形状。

3.使用 Rebuild指令,对矩形曲面进行重建,参数如下:
022.jpg

用以上参数重建后,得到以下一张UV结构较接近正矩形的曲面。
006.jpg

4.选取网格,然后运行 Patch指令(嵌面),点击“选取起始曲面”按钮,再选矩形曲面确定,过一会这矩形曲面就吸附到网格上去了。
0060.jpg
007.jpg

再选取这张变化后的曲面,重复以上Patch操作数回,可以让曲面更精密地贴合到到网格上去。
迭代2.jpg

5.用刚才的提取的边缘曲线,用 Split指令分割出需要的曲面部分。
008.jpg

到这一步,我们就得到了一张跟原网格非常贴合的NURBS曲面,是不是很简单!


小伙伴会问:这贴合的精度能否在Rhino中检测呢?
 
答案是可以的!
 
6.运行曲面分析工具中的 PointDeviation指令,先选网格确定,再选曲面确定,按以下面板中参数所到下图的结果;
从统计一栏的数据中列出这张面上的点贴合数值,一目了然。

010.jpg011.jpg

以上就是利用Patch指令从单张网格拟合出一张NURBS曲面的过程。
PACTH.gif

此条目发表在建模技巧, 逆向工程分类目录,贴了标签。将固定链接加入收藏夹。

Rhino转换网格为NURBS曲面教学》有12条回应

  1. wang说:

    5.0的版本提取不到边界线啊,哪 个版本才可以啊

  2. Simon Chen说:

    @wang,你好!

    教学是采用Rhino 6版本做的,的确Rhino6的Silhouette指令能直接提取网格的边缘了,如果你用的是Rhino5版本,可以使用DupBorder指令来提取出网格的边缘成曲线的,同样能起到这个效果。

  3. wang说:

    直接用MeshToNurb会怎么样。。。

    • Simon Chen说:

      你好!
      MeshToNurb指令会把模型的每一个网格都转成的NURBS面,如果网格模型的面数很多,那就会转出同样数量的NURBS面,后续要对它们编辑的话,将是一项运算量很大的工作。

  4. nanch说:

    rhino如何转换封闭的网格为“光滑的”nurbs曲面?例如完整的人体模型或动物模型。

    • Simon Chen说:

      你好!
      如果你的封闭的网格模型没有结构问题并且是全四边结构的,可以用以下方法转成光滑的NURBS曲面

      1.如果你用的是Rhino6版本,可以选取网格后,用“Subdfrommesh”指令,把网格转成光滑的细分曲面(细分对象),再用“tonurbs”指令,把这个细分曲面转成NURBS曲面,组合后将得到一个实体对象(多重曲面)

      2.如果是Rhino5版本,那么需要借助T-Splines for Rhino插件,使用TS的tsConvert指令把网格转成TS网格,再用tsSmoothToggle指令把网格转成光滑状,再把这个光滑状的网格用tsConvertToRhinosurf指令转成NURBS多重曲面。

      以上供参考

    • Simon Chen说:

      @nanch
      的确,文章所示的方法在应用上有一定的局限性,如你所提及的人体或一些结构复杂的封闭的形态。
      提供以下思路:
      1.使用Patch指令,对形态进行拆分来嵌面,最后把所有的NURBS曲面拼接成一个整体。
      2.使用第三方开发的逆向插件,如RhinoResurf

      以上供参考

  5. Dabinn说:

    @Simon Chen
    非常謝謝您這篇文章,非常有幫助,學習了!

  6. 冯杰说:

    做到第四步,总是弹出内存不足,rhino将取消当前工作

评论已关闭。