Rhino(犀牛)中国技术支持与推广中心

标题: 用Rhino实现逆向工程及检测方法 [打印本页]

作者: shadow    时间: 2014-11-7 00:11
标题: 用Rhino实现逆向工程及检测方法
本帖最后由 Jessesn 于 2017-5-3 15:10 编辑

在大多数人看来,用Rhino做逆向工程,第一反应就是不行,可事实上并非如此,只要掌握方法,用Rhino实现逆向工程还是可以实现的。本例分为两个内容来讲,先讲纯Rhino工具实现逆向操作的方法,另外一个内容是借用插件的方法。
一般扫描出来的模型都是以mesh方式保存的,直接打开即可,如果模型的精度太高,视图旋转就可能会有卡顿现象,所以必须对模型的点数时行一定的精简,至于减多少,没有一个标准,但减面后的模型不能跟原始模型差别太大,要不做出来的东西可能就不太准了。如果你旋转模型,没有卡的现象,当然就没必要去减了。
在Rhino中有一个减面工具:ReduceMesh,可以直接输入需要保留的网格面数,也可以按百分比来让程序自动减少,对话框比较简单,不需要怎么设置。



接下来工作就是考虑如何做面,这一步和看图练习就没有什么区别,要在脑子里想好如何分面,对于有一定基础的同学来说,并没啥难度,难点就是如何让做出来的面贴到mesh上去。
先说如何生成曲面

像图中的例子,我们可以先把它做成3个大面,在边缘有曲率变化比较大的部分,再切开做出细节即可。
在顶视图画线把这一体的mesh分为几个部分,注意mesh不是直接用split指令,而是用meshsplit,分开的这3个部分就是我们想要做的3个大面。

但要记得,尽可能的选择曲率比较平缓的做为大面,像我图中蓝色的面,就不选择切到右侧这部分,因为右侧是曲率比较大的部分,这部分将作为单独的一个面与左边连接,如果一次选择完做一个大面,在曲率大的这里,就会贴不好了。
Mesh分割好之后,就建立NURBS曲面。先用plane指令做出一个简单的曲面。从顶视图看,这个面要比蓝色的mesh要大一些,但也不必太大。

可以看出,左下角的曲面,离mesh比较远,所以需要对曲面进行一定的调整,让它的边界尽可能的与mesh保持一个走势,这样就方便我们保证曲面的质量。当然也可以先画线把这曲面做出来,最终目的是弄出这个曲面。

然后选择patch指令,再点mesh,弹出它的对话框,点确定,你可以看到就生成了一个曲面,贴在选取的那个mesh上了。


生成曲面的结构线多少,可以在对话框输入控制,一般来说,并不需要这么密的结构线,因为不方便调整。像这种曲面变化比较平缓,就用简单的1span曲面就可以了,也就是说在UV跨距数都输入1,它就会生成一个3阶的1span曲面了。有人说,那有没有可能生成4阶5阶的曲面,或者2阶的呢?答案是可以的,但不是这里的UV跨距数控制。

看看patch对话框下面的一个按钮,选取起始曲面。什么意思呢,就是说你给定一个面的,这个面的形状你可以定义,还有曲面的阶数,最后生成的曲面从某个角度看,都符合你给定的这个面的轮廓形状,还有阶数,UV也都保持一致,这样就可以做到3阶以外的曲面了。下面还有一个拉力值,越小就越贴着mesh。下图就是我用开始做的那个曲面贴到mesh上。


可以看到,有一部分曲面盖住了底下的mesh,这说明贴合不是太好,因为我这里只是用了2阶曲面。把阶数改变一下,可以看到效果略有不同了。


为什么要把这参考曲面做大?如果这曲面小于mesh的范围,贴上去的时候,程序会自动把它拉到mesh的范围,就会导致控制点分布很乱了。使用了这个参考曲面,上面的UV跨距就失效,不管你怎样设置都没起作用的。另外,由于是近似算法,所以你再执行一次patch,又以贴在mesh上的这个面做起始曲面,生成的曲面形状又会发生改变的。当然做得越多,就变化越来越小,说明每次它都在计算,直到做到最贴的曲面。一般情况下,都没必要做太多次的,如果发现每次变化都好大,说明你的参考曲面可能做得不是太好。

调整方法
虽然曲面已经贴上,但有时候精度可能也不够,需要进行一些细微的调整,如何调整又能保持曲面和mesh的贴合?在这里需要用到contour指令,其作用是在mesh和曲面上生成截面线,看着两条曲线的位置来判断曲面的边界是否合适。选择mesh的时候,最好把全部都选上,这样就容易判断曲面延伸到边界,位置是否合理。因为mesh都是由很多三角面拼起来,所以在上面生成的截面线,都是polyline,而不是3阶的曲线,为了区分,方便可以把这两种线以不同颜色区分,用selpolyline可以选择到mesh上的线。 像下图中,曲面的边界明显不在mesh上,虽然中间的部分看起来还不错,所以必须把这条边再抬起来一些。抬起来最好不要用XYZ直接拖动,用moveUVN沿着法线方向移动。抬高后的曲面,基本就延着mesh走到倒角的位置了。




这里可能会有人有疑问,为何不把曲面边界事先画在倒角的附近,让做出来的曲面离倒角的边更近,不是更好控制吗?当然这也是一个方法,但画线可能没这么方便而已。

还有contour指令不支持历史记录,所以调起来挺不方便,但也不是没方法,可以在需要调整的位置选出几条截面线投影到曲面上,这样就带有历史了,因为投影有历史记录,但是一定不能要太多条,两三条就够了,如果你全部选择曲面上的那些截面线投影,调整的时候曲线也会在动,但是它动的时候会很卡,并没单条线操作顺畅,另外太多条线这样操作还有可能宕机。

检测方法
检测曲面贴在mesh上的功能,需要用到PointDeviation指令,它可以直接检测mesh上的顶点到曲面上距离范围,也可以检测点到曲线的误差。所谓范围,就是它能检测出你给定的一个值,在这范围内都以某种颜色显示,而不是它把每个点的实际距离都显示出具体数值。
执行指令,先选mesh,再选曲面,就会弹出它的对话框了。这些参数有必要说明一下。

容许角度
没有曲线或曲面法线通过的点,如果位于曲线端点或曲面边缘法线容许角度范围内也会被测量,预设值为 1 度,设为 180 度时,所有的点都会被测量。
如果你的曲面是在mesh范围之内,设置为180的时候,就会把曲面范围之外的mesh顶点也算进去,如果是1,那就是在你的曲面范围之内的点。一般情况下我们都是检测曲面内的点的误差,如果把之外的顶点也算进来,反而会影响到实际结果,所以只需要设置为1即可。当你的曲面范围大于mesh范围,简单理解为曲面包住你的mesh,那么即便设置为180,也是没啥效果的,因为你的所有点都已曲面的范围之内。
指示线缩放比
点到曲线或曲面的指示线长度会因为缩放比设定值而被放大,预设值为 10,设置越大指示线越长。所谓指示线就是被检测的点到曲面的法线。下面两个选项是一个是显示这些指示线,另外一个就是生成这些指示为直线,这几个没有什么实际意义,可以忽略。
下面的统计就是被检测的点数量,还有平均距离什么的,这些数据并不是真正的误差值,具体我也不太清楚这组数据有啥意义。主要是设置是在右边这些设置。
忽略,坏点
超过这个数值的点就不被检测,坏点多显示一个红色,这两个可以理解为一样。我们要检测的是所有点,所以这两个数值可以设大一些。有的人可能觉得设置为1或2大不大,我觉得不够,我觉得随便设置个几百吧。如果设置太小,你会发现统计那栏的点数会很少,这样检测结果当然不准了。
良点
这个数值就是我们要设置的误差值,比如说你想知道这些顶点到曲面的距离,是不是都在0.5以内,如果在范围内,就会显示为蓝色。如果超过这个范围,就显示水蓝色。
曲面上
这个参数没得设置,就是0,意思就是点真正意义上的在曲面上。


回到我们的例子检测一下,显示有两个不同的颜色,蓝色就表示在1mm范围内的点,水蓝色的就是大于1mm点。每改一个范围,就要点一下套用,颜色显示也会不同。如果想知道最大误差值是多少在哪看呢?这时候要点关闭,再按F2,会在指令历史中看得到。在这里我想吐槽一下,为什么不直接在这界面上显示呢?

好了,第一部分先讲这些,下一内容讲用插件如何实现。插件相对来说,会更方便。


作者: shadow    时间: 2014-11-7 00:12
闹钟响了先睡觉,明天再继续
作者: fengyun319    时间: 2014-11-7 08:44
学习!!!
作者: Icecube100    时间: 2014-11-7 09:12
闹钟又响了该起床继续了。。
作者: 棒棒堂    时间: 2014-11-7 10:24
shadow 发表于 2014-11-7 00:12
闹钟响了先睡觉,明天再继续

闹钟响了,抓紧时间起床继续!我坐在这里等了一天了~~哈哈
作者: simonchen    时间: 2014-11-7 10:24
搬个小凳子来听课
作者: a1781314    时间: 2014-11-7 14:15
占楼~~~~
作者: 470942035    时间: 2014-11-9 20:44
学习学习
作者: simonchen    时间: 2014-11-9 23:37
影大出品的教学果然都是干货级别!此帖不设置精华就对不起您了!

非常期待下一节的教学内容


作者: shadow    时间: 2014-11-9 23:48
simonchen 发表于 2014-11-9 23:37
影大出品的教学果然都是干货级别!此帖不设置精华就对不起您了!

非常期待下一节的教学内容{:7 ...

经验分享

下一节要过两天才行,最近都坐监咁,没自由。
作者: lzjjjs    时间: 2014-11-9 23:53

作者: wcwf    时间: 2014-11-10 00:18
Look 1 Look
作者: simonchen    时间: 2014-11-10 08:30
shadow 发表于 2014-11-9 23:48
经验分享

下一节要过两天才行,最近都坐监咁,没自由。

唯一能够改变的是心态

ps

看了上面纯Rhino下的流程,我个人觉得使用插件会方便实现些,或许灵活结合两者(Rhino+插件)会更高效。


作者: huz888888888    时间: 2014-11-10 10:55
学习!!!~
作者: h.rq    时间: 2014-11-10 16:58
必是精品!
作者: jasonroc11    时间: 2014-11-10 17:42
板凳已备好,准备认真听课!
作者: 埃木梯0.0    时间: 2014-11-10 20:03
thanks for sharing
作者: Jessesn    时间: 2014-11-10 22:05
高质量的教学,值得分享!
作者: 天艺气模    时间: 2014-11-10 22:12
学习学习
作者: 悲剧的懒猫    时间: 2014-11-11 15:36
看下楼主大作~
作者: czf_ivan    时间: 2014-11-11 17:20
看看。。。。。。。。。。。
作者: chilehwang    时间: 2014-11-11 17:30
谢谢分享~
作者: panaone    时间: 2014-11-11 21:23
  不错
作者: ktcandy    时间: 2014-11-12 00:42
刚好学校开了门三维逆向,来学习学习
作者: 红环针管笔    时间: 2014-11-12 11:33
像楼主学习。。。
作者: a0414215    时间: 2014-11-12 15:25
来学习学习
作者: Suka    时间: 2014-11-13 00:29
谢谢S大传授知识
作者: 唯爱是魔123    时间: 2014-11-13 06:31
必须支持!
作者: ckman    时间: 2014-11-16 18:27
逆向真不好學~
作者: MaPan    时间: 2014-11-17 10:49
不错  学习了
作者: 斯文痞子    时间: 2014-11-17 11:34
学习!!!
作者: 877949852    时间: 2014-11-20 12:44
看看插件处理效果
作者: web_free    时间: 2014-11-20 14:36
学习!!!
作者: Kisslayer    时间: 2014-11-20 17:13
什么是逆向工程
作者: 天天有你    时间: 2014-11-21 16:04
好东西哈哈哈哈
作者: micc    时间: 2014-11-21 23:05
shulinshishabi

作者: 江湖一盏灯    时间: 2014-11-28 17:19
没想到被你整个这么详细的教程出来!赞!
作者: 江湖一盏灯    时间: 2014-11-28 17:22
配合VSR的 ADSubmeshCreation工具使用会更轻松一些。
作者: luyu    时间: 2014-12-1 19:28
这个真的好高级的
作者: kevinney    时间: 2014-12-1 22:38
看一下,谢谢

作者: 远水遥岑    时间: 2014-12-2 20:21
学习来了
作者: 周旭学习    时间: 2014-12-3 17:39
学习学习,好东西
作者: sixrocks    时间: 2014-12-6 14:05
听课来了....
作者: 想入飛飛    时间: 2014-12-18 14:56
多谢分享!!!!!!!
作者: xiong    时间: 2014-12-20 13:36
这贴好,多谢楼主
作者: tcskcz    时间: 2014-12-21 22:52
学下下 谢谢提供教程
作者: 花づ弄影    时间: 2014-12-23 00:37
先顶后看!!
作者: lj09090099    时间: 2014-12-24 00:32
看看是什么东西
作者: xinlunqq56    时间: 2014-12-24 13:25
非常好有的,一直enjoy
作者: yuanyu    时间: 2014-12-26 21:10
影大又出教程了 学习下
作者: nnnaaarrr    时间: 2014-12-27 17:30
学习学习
作者: platnumcn    时间: 2014-12-31 14:26
必须要看
作者: 静枫    时间: 2015-1-2 22:26
来学习下
作者: sunrise10282    时间: 2015-1-3 15:35
xiexie分享
作者: 狼蛛    时间: 2015-1-5 17:39
学习!!!!!
作者: x8732747    时间: 2015-1-6 17:35
学习!!!
作者: yaziaiman    时间: 2015-1-8 09:48
呵呵这个好
作者: vivilang1001    时间: 2015-1-8 16:54
认真学习~!
作者: 乌龙哥    时间: 2015-1-8 19:26
好好学习,天天向上
作者: yy3505380    时间: 2015-1-13 11:54
跟着大神学习学习
作者: mscr    时间: 2015-1-14 23:49
新手,学习了,辛苦
作者: sgl05    时间: 2015-1-18 21:20
正关注这个领域 强力围观下
作者: xdesigner    时间: 2015-1-19 13:43
学习!!!!!!!
作者: l1407    时间: 2015-1-22 13:05
Thank you for sharing

作者: 記憶的欠片    时间: 2015-1-23 08:21
學習超好奇的~

感謝大大
作者: huyaqing11    时间: 2015-1-27 15:49
必须支持
作者: 比目鱼    时间: 2015-1-29 08:52
高手                    
作者: cw520    时间: 2015-1-29 09:29
感谢分享经验
作者: cqw7256    时间: 2015-2-1 10:11
正需要,谢谢!
作者: lijie@19830706    时间: 2015-2-3 14:27
期待,很实用的方法
作者: hxzhbh2    时间: 2015-2-5 08:23
学习学习
作者: derek096    时间: 2015-2-10 19:36
什么叫逆向工程呢?
作者: 流云域    时间: 2015-3-3 00:57
回复,然后看看
作者: y36366    时间: 2015-3-4 09:23
真心不错
作者: shotphy    时间: 2015-3-6 10:59

作者: toplay    时间: 2015-3-13 13:59
楼主辛苦,回复看看
作者: roses8    时间: 2015-3-13 15:04
看看这个有啥不同

作者: gysan3    时间: 2015-3-20 13:23
回复看看,谢谢分享
作者: 向左靠近    时间: 2015-3-25 09:36
开眼界

作者: heng_heng    时间: 2015-3-25 09:44
搬个小凳子来听课
作者: 过日子    时间: 2015-3-25 09:50
学习学习
作者: 白多子    时间: 2015-4-5 10:32
学习学习
作者: 乌丢丢99    时间: 2015-5-1 15:23
哎呦,今天天气不错···
作者: yurt    时间: 2015-5-27 01:06

作者: lee3007    时间: 2015-6-2 23:34
学习学习
作者: gaocs886    时间: 2015-6-3 11:59
ddddd
作者: 34087562    时间: 2015-6-3 16:44
这样都可以啊~
作者: BK201    时间: 2015-10-13 10:59
来学习啦
作者: frankgt2    时间: 2015-10-14 02:26
非常強大~~
作者: cx1992929    时间: 2015-10-16 10:21
看看,好高级的样子
作者: hsiencdr    时间: 2015-10-31 12:53
YA 來學習喔
作者: CharlieXu    时间: 2015-11-3 14:28
这个应该就是我需要的
作者: 405030723    时间: 2015-11-4 08:44
摆正姿势,开始学习!
作者: jing_hai_    时间: 2015-11-4 09:32
正在学习中
作者: maojiaoliang    时间: 2015-11-5 23:18
好东西来看看
作者: Bingo_Tao    时间: 2015-11-6 09:16
学习,希望我能学会,我是新手
作者: Digital_BOOM    时间: 2015-11-6 16:59
学习学习
作者: yang.yang    时间: 2015-11-7 10:58
思路值得学习
作者: Shawn_M    时间: 2015-11-19 11:33
学习了  谢谢楼主
作者: m4342105a    时间: 2015-11-21 16:36
感谢分享经验!




欢迎光临 Rhino(犀牛)中国技术支持与推广中心 (http://bbs.rhino3d.asia/) Powered by Discuz! X3.2