ブール演算のトラブルシューティング

Boolean関係のコマンドは、サーフェスや開いたポリサーフェスにも使用できます。演算の結果は、選択したオブジェクトの法線の方向によって変ります。法線の方向を確認するには、Dirコマンドを使用します。求めている結果とは逆の結果が生じた場合は、サーフェスの方向をDirまたはFlipコマンドを使用して反転し、もう一度やり直してください。

サーフェスの場合は、最初にJoinコマンドを使用してみるとよいでしょう。

メッシュのブール演算の操作方法は、それぞれのNURBSのブール演算の操作方法と同じです。

メモ:元のオブジェクトがどのようなタイプであっても、コマンドの結果はメッシュになります。

ブール演算が失敗する理由

ブール演算に失敗した場合、以下の理由が考えられます。

round_bullet.gif法線が向くべき方向に向いていない。

round_bullet.gif制御点が2つのオブジェクトの交差する箇所に重なっている。

round_bullet.gifオブジェクトのサーフェスにオーバーラップしているエリアがある。

サーフェス法線

ブール演算はサーフェスの法線を使い、保持する部分と削除する部分を判断します。BooleanDifferenceを試みて、代わりにBooleanUnionになってしまった場合などは、法線の向きが思っている向きと逆になっている(反転されている)ことが考えられます。これは、1つまたは複数のオブジェクトが完全に閉じられていなかった場合に起こる傾向があります。オブジェクトが閉じられていなかった場合、Rhinoはどちらの側が外側で、どちらの側が内側かを決定できません。Dirコマンドを使用して、オブジェクトで法線がどちらの方向を向いているか確認してください。必要があれば、反転オプションを使い、法線方向が「外側」を向くようにしてください。完全に閉じたオブジェクトの法線は常に外を向いています。

重なり合っている制御点

重なり合っている制御点は、サーフェスのエッジにある制御点 が同じ位置に配置されている場合に発生します。これは、Rhinoでは円錐の頂点や球体の軸、三面平面などに自然と発生します。また、制御点を同じ位置に移動することもできます。この点は、特異点とも呼ばれています。

このような特異点が、ブール演算をしたい2つのオブジェクトの交差点に位置している場合、演算がうまくいかないことがあります。

オーバーラップしているサーフェスエリア

2つのサーフェスが同じエリアを共有するとサーフェスエリアのオーバーラップが生じます。この例では、2つの箱が互いに接触しています。ブール演算でこれらのオブジェクトの和は実行できますが、は実行できません。

非多様エッジ

オーバーラップしているサーフェスに加え、非多様体エッジも失敗につながります。

非多様エッジ

2つ以上の面が1つのエッジに結合されているポリサーフェスまたはメッシュのエッジは非多様体です。

non-manifoldedges-002.png
このイメージは、ShowEdgesコマンドで非多様体エッジをハイライトしたポリサーフェスです。

対応策

オブジェクトがブール演算できない場合、他の対応策を使って結果を得ることができます。

この例では、円錐の頂点がちょうど箱の角にあたっています。この状態では、ブール演算に失敗します。

こういった場合にはブール演算を行う代わりに、必要であればExplodeコマンドを使いポリサーフェスを1つのサーフェスに分割します。Intersectコマンドを使い、2つのサーフェスが交差する曲線を作成します。この曲線を使い、Trimそして/またはSplitを使ってパスを作成して、それからJoinコマンドを使い接続します。