此教程演示如何把三角形网格面转换成裁剪NURBS多曲面。可参看以下两个相关视频(无声):

视频1: 在网格面上描绘网络曲线;


知乎视频www.zhihu.com



视频2: 利用网络曲线把网格转换成拼接多曲面;


知乎视频www.zhihu.com



(注意:以上视频是使用老版本录制,新版本基本功能、按钮没有改变)

流程总览: 在下面的两幅图中,上(左)图为原始模型,下(右)图为由左边原始模型所生成的多NURBS曲面。在这里我们用两种不同类型的曲面来进行曲面重建。一种是无裁剪NURBS曲面(蓝色四边面),另一种为裁剪NURBS曲面(非四边面,以黄色显示)。在这个演示中,将展示如何将网格模型划分为四边块区域和非四边块区域并如何通过RhinoResurf来重建分片曲面。




houdini三角面 rhino三角面_houdini三角面


houdini三角面 rhino三角面_c++生成nurbs曲面文件_02


Step 1 : 启动Rhino..

Step 2: 在"文件"菜单上选择“导入…."按扭,弹出文件导入对话框。浏览找到文件shoublinghead.stl (一般在目录C:Program FilesRhinoceros 6Plug-insRhinoResurfSamples下)并打开文件。.

Step 3:调整Rhino的视图显示区大小 (View->Zoom->Extents). 将会看到由先前一步所导入的网格文件shoublinghead.stl所显示的模型。在子菜单RhinoResurf上选择子菜单"描绘网格网络曲线创建多曲面"或者直接在Rhino命令提示行里输入命令名字RsMesh2Surfs,后者在工具条里按下图标


houdini三角面 rhino三角面_Rhino_03



houdini三角面 rhino三角面_c++生成nurbs曲面文件_04


Step 4:Rhino命令提示行显示 ‘选择网格并按下鼠标右键产生NURBS曲面:’. 左击鼠标选择显示的网格模型,然后再右击鼠标,你会看到弹出一个名叫"描绘网格网络曲线创建多曲面"的对话框:


houdini三角面 rhino三角面_c++生成nurbs曲面文件_05


Step 5:点击Rhino窗口右下角的"物件锁点"(如下图所示). 选择复选框"端点"和”中点", 确保在拾取多边形端点时可以在光标处看到‘端点’ 提示。当拾取一个多边形的内部点时,光标处会显示‘中点’ ,在我们的操作中,为了获得有效的网络曲线,请不要使用‘中点’类型点来作为网络线的起始点。


houdini三角面 rhino三角面_Rhino_06


Step 6: 在网格面上画第一条网络线。在"网络曲线 " 面板里点击“生成” 按扭。选择目标网格并左击鼠标,再右击鼠标,光标变成十字形。当在Rhino命令提示行里看到“ 选取一个网格: ”, 拾取该网格,接着看到" 网格上多重直线的起点: ",点击鼠标左键来选择网格上的一个点,将会在Rhino命令提示行看到 " 网格上多重直线的下一点:",继续选择网格面上的第二个点, 第三个以至最后一个点, 以右击鼠标来完成这条多边形线的生成。


houdini三角面 rhino三角面_Rhino_07


Step 7:在网格面上画第二条网络线。在网格面上画第一条网络线之后,继续右击一次鼠标,选择目标网格模型后,开始第二条网络线的生成。开始在网格面上选取多边形的起始点之前,请注意起始点必须包含第一条网络线两个端点中的一个。因此,可放大第一条网络线的端点, 将光标放在网络线的端点处,当在光标下看到 ‘端点’,点击鼠标左键来选取这个端点,然后再在网格面上选择多边形的第二个点,第三个…… 当想完成这条网络线时,右击鼠标即可。


houdini三角面 rhino三角面_c++生成nurbs曲面文件_08


Step 8: 在网格面上画第三条网络线。继续点击一次鼠标右键,选择目标网格,开始第三条网络线的生成。在开始选择多边形网络线起始点之前,请注意起始点必须是已画网络线中的一个端点,(在以后的网络线生成中都遵循这条规则,请使用光标下面显示‘端点’ 的点来作为起始点,不使用光标下显示‘中点’的点)将光标移动到第二条网络线的端点处,当看到光标下面显示 ‘端点’时选择这个点作为网络线的起始点,然后再从网格面上选择第二个,第三个点直到最后一个,点击鼠标右键完成此条网络线的生成。


houdini三角面 rhino三角面_c++生成nurbs曲面文件_09


Step 9:在网格模型上画第四条网络线,并与前面所画的三条构成一个封闭四边面块。继续点击一次鼠标右键,选择目标网格,开始第四条网络线的生成。在网格面上选择多边形网络线起始点之前,请注意它必须是已存在网络线中的端点。可将光标移动到第三个网络线的端点处,当看到光标下面显示 ‘端点’时选择这个点作为网络线的起始点,然后再从网格面上选择第二个,第三个点直到最后一个,当你想完成这条网络线,且想要与之前所画的三条网络线来生成一个四边块的话,可将光标移到第一条网络线的端点处,当在光标下看到'端点’时,将这其加入到第四条网络线中, 点击鼠标右键完成网络线的生成。最后,可得一个四边形块,将从这个四边形生成一个 NURBS 曲面。可用这个规则完成后面的其它若干个四边面的生成。在此略过。


houdini三角面 rhino三角面_复选框_10


Step 10:继续在网格模型以上面的规则画其它网络线,完成后将得到一些网络曲线如下图所示。


houdini三角面 rhino三角面_右键_11


houdini三角面 rhino三角面_c++生成nurbs曲面文件_12


houdini三角面 rhino三角面_Rhino_13


Step 11: 继续在网格模型画新的网络线,并使其与原有的网络线构成四边块。


houdini三角面 rhino三角面_c++生成nurbs曲面文件_14


houdini三角面 rhino三角面_复选框_15


Step 12:在网格模型上绘制新的多边形曲线(下图中的黄线)使新的曲线为剪切曲面的边界线。


houdini三角面 rhino三角面_c++生成nurbs曲面文件_16


Step 13:继续在网格模型上绘制新的网络线,并使新绘制网络线与已有网络线构成四边块面。


houdini三角面 rhino三角面_c++生成nurbs曲面文件_17


Step 14:在完成所有网络线的绘制后,将得到四边块曲面与非四边块曲面,它们对网格面进行了区域划分,如下图所示。


houdini三角面 rhino三角面_复选框_18


houdini三角面 rhino三角面_右键_19


houdini三角面 rhino三角面_右键_20


Step 15:点击"网络曲线 " 面板里的'保存' 按扭,将网络曲线保存为文件shoublingcurve.nc 以备后用。

Step 16:点击' 曲面' 面板里的“检查” 按扭,初始化曲面片将会立即创建。这些曲面片是作为后面拟合所用的基曲面。可以看到只生成了四边块曲面,非四边块曲面没有生成。并且可以看到“新建”和“删除” 两个按扭被激活了。下面说明如何使用这两个按扭来创建裁剪曲面。


houdini三角面 rhino三角面_houdini三角面_21


houdini三角面 rhino三角面_右键_22


Step 17:点击“显示”面板里的“面片”复选框,曲面将会隐藏,这可更清楚地看到网络曲线。点击“曲面” 面板里的“新建” 按扭,依次选择边界曲线并使其构成封闭曲线。完成后右击鼠标,将自动生成一个剪切曲面。在这一步中,我们所创建的是一个中间有洞的裁剪曲面,我们需要选择两个封闭曲线环(如下图中的黄色线)。如果所得曲面不满足要求,可使用“删除”按扭来移除它。


houdini三角面 rhino三角面_c++生成nurbs曲面文件_23


houdini三角面 rhino三角面_右键_24


Step 18: 点击“新建” 按扭, 选择其它封闭曲线(如下图中黄色部分),右击鼠标后生成一张裁剪曲面。


houdini三角面 rhino三角面_Rhino_25


houdini三角面 rhino三角面_Rhino_26


Step 19:点击“显示”面板里的“面片”复选框来显示所有的曲面。再点击“曲面” 面板里的“逼近” 按扭来得到精确拟合曲面。这时,拟合曲面将满足相应指定的最大容许误差(网格点到曲面的投影距离)要求(这里默认是0.5) 并在边界处达到G1 连续。有时完成这步所需用的时间稍长。


houdini三角面 rhino三角面_Rhino_27


Step 20:将“最大偏差”变小 (如0.3), 再次点击“逼近”。将得到最大误差为0.3的新的曲面。

RhinoResurf 试用版下载:

下载RhinoResurf v3.x for Rhino 6:

http://www.resurf3d.com/rhinoresurf06/RhinoResurf_r6.exe

下载RhinoResurf for Rhino 5 64-bit:

http://www.resurf3d.com/RhinoResurfV3R5/RhinoResurf_v3r5.exe

RhinoResurf相关文章列表:

1.RhinoResurf for Rhino:将网格模型转换成带裁剪曲面的多曲面拼接模型

2.RhinoResurf for Rhino : 基于点云以及点上的法线约束下的NURBS曲面拟合工具

3. 利用软件RhinoResurf 展开悬吊膜网格面的方法

4.利用软件RhinoResurf快速将鞋楦网格面转化成光滑NURBS曲面的方法

5.(教程)RhinoResurf v3.1.21中的补充孔洞曲面新命令RsFillHoleBySurf

6.RhinoResurf v3.3 for Rhino 6 新功能(命令 _RsMesh2SurfDyna)预告(视频)

7.RhinoResurf for Rhino:将点云重构成裁剪NURBS曲面