This shows you the differences between two versions of the page.
zh:rhino:booleanfaq [2015/09/14] |
zh:rhino:booleanfaq [2020/08/14] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== 布尔运算 问与答 ====== | ||
+ | > **摘要:** // | ||
+ | ======简介====== | ||
+ | 在Rhino中,布尔运算指令可节省大量的时间在架构对象上,但对于初学者来说,操作常常无故失败而且很难了解为何失败。希望透过问与答的解释可以有点帮助,如果不想阅读下列所有的信息,也可以试着参照John Brock对于[[rhino: | ||
+ | |||
+ | **// | ||
+ | |||
+ | 因此,必须牢记的是**// | ||
+ | |||
+ | =====布尔操作失败...===== | ||
+ | |||
+ | 为什么布尔会失败? | ||
+ | |||
+ | 两个封闭对象(“实体”)的交点处应该至少有一个完整封闭的交点曲线(例如: | ||
+ | |||
+ | > **注意:** // | ||
+ | |||
+ | 因此,经由上面的解释,如果布尔操作失败,第一件事情应该检查对象的相交处,选择你的对象接着叫出相交处。首先,查看屏幕上相交处曲线,确认正确与否,有没有可见的缺口、多余的分割或者有任何看起来奇怪的东西? | ||
+ | |||
+ | =====相交处问题,解决方案及限制===== | ||
+ | |||
+ | 在模型相交处造成缺口或者其他问题的原因是甚么? | ||
+ | |||
+ | 如果相交处应该为封闭,但是却没有,选择相交处曲线,接着利用 **CrvStart**指令在曲线的开始处放置一个点,正常来说,这点会落在缺口处的一边,在屏幕上利用**Zoom**检查可看到的缺口处,为何会有一个缺口? | ||
+ | |||
+ | 如果已经在能力范围内将对象修复到最好的状况,但仍进无法利用Rhino自动产生而得到一个封闭的曲线,也许就该回头用“手动操作”。也许需要加入或修改一些segment、编辑一些点、删除一些重迭的segment或者其他类似的调整才能得到想要的相交曲线或是封闭对象。一旦有了这样的曲线,可以试着单独修剪对象,将多重曲面炸开与相交曲线进行修剪。剪除不需要的部分接着将其他部分结合。 | ||
+ | |||
+ | //<color blue> | ||
+ | |||
+ | <color brown> | ||
+ | |||
+ | <color brown> | ||
+ | |||
+ | <color brown> | ||
+ | |||
+ | <color brown> | ||
+ | |||
+ | <color brown> | ||
+ | =====必要时必须利用" | ||
+ | |||
+ | <color brown> | ||
+ | |||
+ | **[[http:// | ||
+ | |||
+ | **[[http:// | ||
+ | |||
+ | 以下这个例子是一个实体无法利用原始实体下去建构模型,因此在这地方,了解曲面编辑技术是必须的。 | ||
+ | |||
+ | *主要的问题是侧边曲面恰巧无法共享主要实体物块,当布尔运算失败时,可依据上面连结中的曲面编辑技术中的描述来进行。 | ||
+ | |||
+ | *下载[[http:// | ||
+ | {{: | ||
+ | |||
+ | ---- | ||
+ | ======布尔功能在开放对象中的运算====== | ||
+ | |||
+ | 如上所述,布尔运算也可在开放对象中执行,但因为对象并非封闭,因此我们必须了解两件事情。如果你只有两个对象,Rhino V4 提供了一个工具使以下的流程更容易些,查看指令: | ||
+ | |||
+ | =====曲面方向===== | ||
+ | |||
+ | 首先,了解曲面法线和方向的概念是必须的,每一个表面对象都有”sided-ness”,称为”front-side”及”backside”。在Rhino里称为”方向”(direction), | ||
+ | |||
+ | 每一个曲面都可翻转其法线方向(例如: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | > **注意:** // | ||
+ | |||
+ | 当曲面结合,Rhino会试着使对象的曲面法线”一致”,也就是说,Rhino会试着使所有曲面有同样的法线方向性。因此当结合开放性的表面时,仍然只有一个法线方向性,而不会有各种不同的方向。 | ||
+ | |||
+ | > **实验:** // | ||
+ | |||
+ | 当一个对象在Rhino系统中被封闭,程序会自动将所有的面翻转向外,系统会假定内部的任何东西已经不被在乎,因为对象是封闭的(实体)。封闭多重曲面无法使物底的法线面内内部(试着操作**Dir**指令看看)。如果一个封闭的多重曲面的法线被反转了,那代表这对象并不是真的封闭,或者代表着系统出现了无法预期的错误。 | ||
+ | |||
+ | > **实验2: | ||
+ | |||
+ | =====曲面方向性如何影响布尔运算===== | ||
+ | |||
+ | 现在已经了解了关于表面法线及方向,为什么这部分在布尔运算里面是重要的呢? | ||
+ | |||
+ | 布尔运算对于”实体”(封闭的多重曲面)是可预测的,因为所有面的法线都是指向外部;而对于开放的多重曲面,结果似乎是无法预测的,因为我们没有办法在没有使用**Dir**指令的情况下去立即判断知道哪一边是物体的前或后。 | ||
+ | |||
+ | > **注意:** // | ||
+ | |||
+ | > **小技巧: | ||
+ | |||
+ | 想象一下简单的”开放”布尔运算,有一个”实体”封闭多重曲面与一个单一平面相交,简单地利用各种形式来建立这个物体,之后使用**切断平面**指令(**CutPlane**),接着画出一条任意方向的切断线穿过此物体。 | ||
+ | |||
+ | 试着使用**布尔差集**(BD),首先先选择实体接着再选择用来切割的平面,实体的两边会有一边被切断删除,而且破洞会被平面填补起来,但是是哪一边会被去除呢? | ||
+ | |||
+ | 除非在曲面上使用**Dir**指令,否则无法得知哪一面会删除。先看看面的法线方向,接着做差集的动作,而后回到上一步,扭转法线方向,再做一次差集,可以发现面的法线方向那一面是会被留下来的。 | ||
+ | |||
+ | 一般来说,如果要在开放曲面及实体对象之间做布尔差集的动作,开放曲面的法线方向所指向的一侧,则该侧的实体将会被保留。 | ||
+ | |||
+ | {{: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | 在V4中,[[rhino: | ||