当我们需要把一个网格(Mesh)转成NURBS曲面时,可以让Rhino帮助我们完成。
以下范例使用Rhino 6
以下是一张由三角网格所组成人脸模型。
这张人脸网格属于非封闭的单张网格结构,第一步把它的边缘提取为曲线,曲线是留待后面分割曲面用。
1.使用Silhouette指令,提取网格的边缘成曲线(红线)。
注意:如果是用Rhino5,请使用 DupBorder指令提取网络的边缘,生成这曲线
2.用 SrfPT指令,画出一张矩形面,面积稍比网格大。
这张矩形曲面UV结构太少,需要重要增加UV密度,以便后续拟合出精确的形状。
3.使用 Rebuild指令,对矩形曲面进行重建,参数如下:
用以上参数重建后,得到以下一张UV结构较接近正矩形的曲面。
4.选取网格,然后运行 Patch指令(嵌面),点击“选取起始曲面”按钮,再选矩形曲面确定,过一会这矩形曲面就吸附到网格上去了。
再选取这张变化后的曲面,重复以上Patch操作数回,可以让曲面更精密地贴合到到网格上去。
5.用刚才的提取的边缘曲线,用 Split指令分割出需要的曲面部分。
到这一步,我们就得到了一张跟原网格非常贴合的NURBS曲面,是不是很简单!
小伙伴会问:这贴合的精度能否在Rhino中检测呢?
答案是可以的!
6.运行曲面分析工具中的 PointDeviation指令,先选网格确定,再选曲面确定,按以下面板中参数所到下图的结果;
从统计一栏的数据中列出这张面上的点贴合数值,一目了然。
以上就是利用Patch指令从单张网格拟合出一张NURBS曲面的过程。
5.0的版本提取不到边界线啊,哪 个版本才可以啊
@wang,你好!
教学是采用Rhino 6版本做的,的确Rhino6的Silhouette指令能直接提取网格的边缘了,如果你用的是Rhino5版本,可以使用DupBorder指令来提取出网格的边缘成曲线的,同样能起到这个效果。
直接用MeshToNurb会怎么样。。。
你好!
MeshToNurb指令会把模型的每一个网格都转成的NURBS面,如果网格模型的面数很多,那就会转出同样数量的NURBS面,后续要对它们编辑的话,将是一项运算量很大的工作。
rhino如何转换封闭的网格为“光滑的”nurbs曲面?例如完整的人体模型或动物模型。
你好!
如果你的封闭的网格模型没有结构问题并且是全四边结构的,可以用以下方法转成光滑的NURBS曲面
1.如果你用的是Rhino6版本,可以选取网格后,用“Subdfrommesh”指令,把网格转成光滑的细分曲面(细分对象),再用“tonurbs”指令,把这个细分曲面转成NURBS曲面,组合后将得到一个实体对象(多重曲面)
2.如果是Rhino5版本,那么需要借助T-Splines for Rhino插件,使用TS的tsConvert指令把网格转成TS网格,再用tsSmoothToggle指令把网格转成光滑状,再把这个光滑状的网格用tsConvertToRhinosurf指令转成NURBS多重曲面。
以上供参考
@nanch
的确,文章所示的方法在应用上有一定的局限性,如你所提及的人体或一些结构复杂的封闭的形态。
提供以下思路:
1.使用Patch指令,对形态进行拆分来嵌面,最后把所有的NURBS曲面拼接成一个整体。
2.使用第三方开发的逆向插件,如RhinoResurf
以上供参考
@Simon Chen
非常謝謝您這篇文章,非常有幫助,學習了!
@Dabinn
不客气哦~多交流!
谢谢
做到第四步,总是弹出内存不足,rhino将取消当前工作
你好!
请尝试在重建曲面时,把重建UV的数值稍为降低,看有没改善。
谢谢