Blender: ブーリアン(Boolean)が失敗する原因について

Blenderでブーリアン(Boolean)を使用するときの失敗の原因(うまくできない原因)と対処法についてまとめてみました。

目次

1 法線(Normal)が逆になっているメッシュを使用している場合

画像1のような立方体と円柱を使用してブーリアン(Boolean)差分(Difference)を行なう場合を例とします。

blender boolean
画像1

面の向き(Face Orientation)を使用して面の表裏を確認すると、画像2のように円柱の一方は面が裏になっています。

blender boolean
画像2

面の向き(Face Orientation)については下記の記事で紹介をしています。

このままブーリアン(Boolean)を実行すると、画像3のように面が裏になっている円柱の方はブーリアン(Boolean)に失敗してしまいます。

blender boolean
画像3

ブーリアン(Boolean)と面の表裏の関係については「補足」に書いたように失敗する(または成功する)条件は色々ありますが、メッシュの面は常に表向きにするということに気をつければこの失敗は回避できます。

2 埋もれた面(Interior Faces)があるメッシュを使用している場合

画像4のような立方体と円柱を使用してブーリアン(Boolean)差分(Difference)を行なう場合を例とします。

blender boolean
画像4

画像5のように円柱の中央部には埋もれた面(Interior Faces)(画像5の選択した部分)があります。

blender boolean
画像5

埋もれた面(Interior Faces)について詳しくは以下の記事で紹介をしています。

このままブーリアン(Boolean)を実行すると、画像6のように埋もれた面(Interior Faces)の部分が残ってしまいます。

blender boolean
画像6

ブーリアン(Boolean)埋もれた面(Interior Faces)についても「補足」に書いたように失敗する(または成功する)条件は色々ありますが、埋もれた面(Interior Faces)を作らないように常に気をつけておけば失敗は回避できます。

3 ミラー(Mirror)を使用している場合

画像7のような半分を削除してモディファイア―(Modifier)ミラー(Mirror)を追加した立方体を使用して、

blender boolean
画像7

画像8のようにミラー(Mirror)の境界線に配置した円柱とブーリアン(Boolean)差分(Difference)を行なう場合を例とします。

blender boolean
画像8

モディファイア―(Modifier)の順番が上からミラー(Mirror)ブーリアン(Boolean)の場合には問題なくブーリアン(Boolean)は成功しますが、順番が上からブーリアン(Boolean)ミラー(Mirror)になっていると画像9のようにブーリアン(Boolean)に失敗してしまいます。

blender boolean
画像9

ミラー(Mirror)ブーリアン(Boolean)の順番を変えてもうまくいかない場合は、ミラー(Mirror)適用(Apply)してからブーリアン(Boolean)を追加してみてください。

また、ブーリアン(Boolean)オブジェクト(Object)に指定するメッシュ(この場合では円柱)が、ミラー(Mirror)の境界線上にない場合にはブーリアン(Boolean)は問題なく成功します。

4 同じ大きさ(幅・高さ・奥行き)のメッシュを使用している場合

画像10のように同じ高さの立方体と円柱を使用してブーリアン(Boolean)差分(Difference)を行なう場合を例とします。

blender boolean
画像10

ソルバー(Solver)高速(Fast)ブーリアン(Boolean)を行うと、画像11のように失敗してしまいます。

blender boolean
画像11

ソルバー(Solver)正確(Exact)にすれば画像12のように成功します。

blender boolean
画像12

ソルバー(Solver)正確(Exact)にする方法の他に、立方体または円柱の高さを変えることでもブーリアン(Boolean)は成功するようになります。

5 その他

以下の2つはブーリアン(Boolean)の失敗/成功の条件あるいは対処法についてよくわからなかったものです。

5.1 平面のメッシュを使用している場合

画像13のような平面とUV球を使用してブーリアン(Boolean)差分(Difference)を行なう場合を例とします。

blender boolean
画像13

ソルバー(Solver)正確(Exact)ブーリアン(Boolean)を行うと、画像14のように成功する場合もありますが、

blender boolean
画像14

平面またはUV球の位置によっては画像15のように失敗する場合もあります。

blender boolean
画像15

このような場合ソルバー(Solver)高速(Fast)にすれば、どの位置でも画像8のように成功するようです。

画像16のようにメッシュの一部に穴が開いているようなメッシュを使用した場合にも、平面を使用した場合と同じように穴が開いたメッシュまたはUV球の位置によってブーリアン(Boolean)が成功する場合と失敗する場合があるようです。

blender boolean
画像16

5.2 頂点が重なってしまうような場合

画像17のようなループカット(Loop Cut)で辺を追加した立方体とUV球を使用してブーリアン(Boolean)差分(Difference)を行なう場合を例とします。画像17の丸で囲んだ部分が立方体とUV球の頂点が重なっているところです。

blender boolean
画像17

ソルバー(Solver)正確(Exact)ブーリアン(Boolean)を行うと画像18のように成功しているように見えますが、ブーリアン(Boolean)適用(Apply)して画像18の丸で囲んだ部分を編集モード(Edit Mode)で確認すると、頂点が2重になっていることがあります。

blender boolean
画像18

頂点が重なってしまうような場合でも、メッシュの位置や形状によるのかわかりませんが、ブーリアン(Boolean)適用(Apply)後に頂点が2重にならない場合もあるようです。
ソルバー(Solver)を高速(Fast)にした場合、こちらもメッシュの位置や形状によるのかわかりませんが、成功する場合もありますが失敗する場合もあるようです。

重なった頂点は、適用(Apply)した後に距離でマージ(Merge by Distance)またはモディファイアー(Modifier)溶接(Weld)で重なった頂点を削除します。
頂点が重なっている場合にはベベル(Bevel)もうまくできなくなるので、上から順番にブーリアン(Boolean)溶接(Weld)ベベル(Bevel)としてください。

6 補足

ブーリアン(Boolean)を使用するときに失敗の原因となるようなものが、
ブーリアン(Boolean)を追加する側のメッシュにあるのか
ブーリアン(Boolean)オブジェクト(Object)で指定するメッシュにあるのか
交差(Intersect)合成(Union)差分(Difference)のうちどれを使用しているのか
ソルバー(Solver)高速(Fast)正確(Exact)のどちらを使用しているのか
・この記事で紹介した失敗の原因が複数重なっている
などいろいろな条件が重なって失敗する場合も逆に成功する場合もあります。

例えば面が裏になっているメッシュを使用した場合に関して、差分(Difference)ソルバー(Solver)正確(Exact)にすると失敗しますが、ソルバー(Solver)正確(Exact)のまま交差(Intersect)または合成(Union)にすると、ブーリアンは問題なく成功します。
また、ソルバー(Solver)高速(Fast)にすると面の表裏が混ざった状態になりますが、交差(Intersect)合成(Union)差分(Difference)でもブーリアン(Boolean)は成功します。

失敗または成功するパターンをすべて覚えるわけにはいかないので、メッシュの面が裏になったり、埋もれた面(Interior Faces)があったりするようなメッシュとして通常避けるべきとされているものは避けて、ソルバー(Solver)は通常は正確(Exact)を使用して、うまくいかない場合は高速(Fast)を試してみるといった感じでブーリアンの失敗はかなり減らせるはずです。
また、ブーリアン(Boolean)を追加する側のメッシュあるいはブーリアン(Boolean)のオブジェクト(Object)で指定するメッシュにモディファイアー(Modifier)をたくさん使用している場合は、ある程度適用(Apply)することで、問題となりそうな場所を見つけやすくなることもあります。

ここで紹介した失敗の原因は個人的に経験のあるものだけなので、ほかの原因もあると思います。

ブーリアン(Boolean)の基本的な使用方法については下記の記事で紹介をしてきます。

以上、Blenderの「ブーリアン(Boolean)が失敗する原因について」でした。

この記事で使用しているのはBlender 3.0.0と3.6.0です。

参考サイト: https://docs.blender.org/manual/en/latest/modeling/modifiers/generate/booleans.html

  • URLをコピーしました!

コメント

コメントする

CAPTCHA

目次