「あとでやろう」が命取り。Booleanエラーが時間を奪う
建築学生のみなさん、こんにちは!設計課題のモデリング、進んでいますか? Rhinoceros でモデリングを進めて、「よし、最後に壁に窓を開けよう」と Boolean(ブール演算) を実行したら、無情にもコマンドが失敗…「Boolean difference failed.」の表示。
どこが悪いのか分からず、試行錯誤しているうちに時間が溶けていき、締め切り直前でパニックに…なんて経験はありませんか?
私も学部生の時、コンペモデルの最終調整でBooleanエラーが多発し、徹夜した苦い記憶があります。その時の原因は、今思えば「ほんの小さなモデルの隙間」でした。
Booleanエラーは、Rhinoを使い始めた学生がつまずきやすい、しかし避けては通れない壁です。 でも、安心してください。エラーが起きる原因は限られています。
この記事では、現役建築学生の私が、Booleanエラーを確実に解決するための実践的なテクニックを解説します。
- Booleanが失敗する「3つの主要な原因」を特定できるようになる。
- エラーを素早く修正する具体的なコマンドと手順が分かる。
- エラーを未”然に防ぐ「クリーンなモデリング習慣」が身につく。
この記事を読めば、「Booleanが効かない…」という悩みをなくすことができます。
そもそもBoolean(ブール演算)とは?建築モデルにおける重要性
まず、Boolean(ブール演算)が何なのか、簡単におさらいしましょう。これは、複数のソリッド(中身の詰まった立体)を「足したり」「引いたり」「共通部分を取り出したり」するコマンドです。
- 和 (Union): 2つのモデルを一体化させる。
- 差 (Difference): あるモデルから別のモデルを引き算する。
- 積 (Intersection): 2つのモデルが重なっている部分だけを残す。
建築モデリングでは、特に「差(Difference)」を多用します。例えば、「壁のモデル」から「窓のカタチのモデル」を引いて、窓の開口部を作る。あるいは、「敷地モデル」から「建物モデル」を引いて、根切り(基礎のための穴)を表現するなど、必須の操作です。
なぜBooleanは失敗しやすいのか?
では、なぜこんなに便利なBooleanは失敗しやすいのでしょうか? それは、Rhinoが「NURBS(ナーバス)」という非常に高精度な計算方法で立体を表現しているからです。
私たちが「見た目上くっついている」と感じていても、Rhinoの計算上「完全に閉じているソリッド」同士でないと、「内側」と「外側」の判定ができず、計算エラーになってしまうのです。
Booleanを成功させる第一歩は、「見た目」ではなく「Rhinoがどう認識しているか」を理解することにあります。
エラー特定編:Booleanが効かない3大原因とチェックリスト
Booleanが失敗する原因は、ほぼ以下の3つに集約されます。エラーが起きたら、上から順番にチェックしていきましょう。
原因1:モデルが「開いている」(Not Solid)
これが最も多い原因です。Booleanは、原則として「閉じたポリサーフェス(Closed Polysurface)」、つまり「完全に隙間なく閉じられたソリッド」同士でしか計算できません。
- チェックコマンド:
- Booleanをかけたいオブジェクトを選択します。
_Properties(プロパティ)パネルを開きます。- 「タイプ」の欄を見てください。ここに「閉じたポリサーフェス」と表示されていますか?
- もし「開いたポリサーフェス(Open Polysurface)」と表示されていたら、それがエラーの原因です。どこかに隙間(穴)が空いています。
- エラー発見コマンド: 隙間を見つけるには、
_ShowEdges(エッジ表示)コマンドが最強です。- コマンドラインに
_ShowEdgesと入力。 - ダイアログが出たら「Naked Edges」のみにチェックを入れます。
- モデルの隙間(閉じられていないエッジ)が、設定した色(デフォルトはマゼンタ)でハイライトされます。
- コマンドラインに
学生がやりがちな失敗例:
_Join(結合)コマンドを使ったから大丈夫、と思っていても、Rhinoの「精度」の許容値を超えるわずかな隙間があり、実際には結合できていないケースが非常に多いです。_Joinしたら、必ず_Propertiesで確認しましょう。
原因2:面の向き(法線)が「裏返っている」
モデルは「内側」と「外側」の情報を持っています。これを「法線(Normal)」と呼びます。 法線が裏返っている(=外側を向くべき面が内側を向いている)と、Rhinoが「どっちが内側?」と混乱し、Booleanが失敗します。
- チェックコマンド:
_Dir(法線方向の表示/編集)コマンドを使います。- オブジェクトを選択し、
_Dirと入力。 - 小さな矢印がたくさん表示されます。この矢印が、ソリッドの「外側」を向いていれば正常です。
- もし一部の矢印が「内側」を向いていたら、それがエラーの原因です。
- オブジェクトを選択し、
- 修正コマンド:
_Dirの実行中に、裏返っている面をクリックするか、コマンドオプションの_Flip(反転)で向きを修正できます。
筆者のテクニック(E-E-A-T): 私は、作業中のシェーディングモードをカスタマイズしています。Rhinoの「表示モード」設定で、「裏面の設定」を「単一色」にして、目立つ赤色などに設定しています。 こうすると、モデリング中に法線が裏返った瞬間に赤く表示されるため、エラーを即座に発見できて非常に効率的です。
原因3:オブジェクトが「精度(Tolerance)」の範囲外にある
これは少し難しい概念ですが、「精度の問題」もエラーを引き起こします。 Rhinoは「このくらい(例: 0.001mm)のズレなら、くっついていると見なす」という「絶対精度(Tolerance)」を持っています。
- チェックコマンド:
_Properties> 「単位」タブで、現在の「絶対精度」を確認できます。 - エラーのケース:
- 遠くにゴミデータがある: CADデータをインポートした際など、作業領域から遠く離れた場所に、小さな点や線分のゴミデータが残っていると、全体の計算精度が狂い、Booleanが失敗することがあります。
- 精度不足: 逆に、精度設定が甘すぎる(例: 1mm)と、わずかな隙間をRhinoが認識できず、
_Joinや Boolean が失敗します。
- 対処法:
_Zoomコマンドで_Extents(ズーム全体表示)オプションを選び、変な場所にゴミデータがないか確認します。見つけたら削除しましょう。 また、_Check(オブジェクトの検査)コマンドも、問題のあるオブジェクトを発見するのに役立ちます。
エラー修正編:具体的なコマンドで「閉じた」ソリッドを作る
さて、原因が特定できたら、次は修正です。特に原因1の「開いたポリサーフェス」を閉じるテクニックが鍵となります。
ステップ1:_ShowEdges で「裸のエッジ」を見つける
まずは _ShowEdges コマンドで、穴(裸のエッジ)の場所を特定します。この穴を塞げば、モデルは「閉じたポリサーフェス」になります。
ステップ2:隙間を埋めるコマンドの使い分け
隙間の状態に応じて、使うコマンドを変えます。
- 単純な隙間(エッジ同士が近い): まずはもう一度
_Join(結合)を試します。ダメなら、_MatchSrf(サーフェスの一致)でエッジ同士をぴったり合わせます。 - 面が欠けている(平らな穴):
_Cap(フタ)コマンドが便利です。平らな穴であれば、一発でフタをしてソリッドにしてくれます。 - 複雑な隙間(曲面など):
_BlendSrf(ブレンドサーフェス)や_Loft(ロフト)、_Patch(パッチ)などを使って、手動で面を張り直します。この作業は少し慣れが必要です。
筆者のテクニック(E-E-A-T): 穴が複雑な場合、無理に塞ごうとすると余計にモデルが汚くなることがあります。 私は、エラー箇所を
_Explode(分解)で一度バラバラにし、問題のあるサーフェスを削除。その後、_Trim(トリム)や_Split(分割)、_ExtrudeCrv(カーブの押し出し)など基本的なコマンドを使って、問題箇所をゼロから作り直す方が、結果的に早いしクリーンに仕上がると考えています。
ステップ3:_MergeAllFaces で面を整理する
Booleanを実行する「前」の準備として、_MergeAllFaces(すべての面をマージ)を実行するのも非常に有効です。 これは、同一平面上にある不要なエッジ(分割線)を消去し、モデルをシンプルにするコマンドです。モデルが「軽く」なることで、Booleanの計算エラーを予防できます。
予防編:エラーを防ぐ「クリーンモデリング」の習慣
エラーを修正するテクニックも大事ですが、それ以上に「エラーを未然に防ぐモデリング」が重要です。以下の習慣を身につけるだけで、作業効率は劇的に上がります。
習慣1:こまめに「ソリッド」か確認する
_Join したら _Properties を見る。_Cap したら _Properties を見る。 操作の節目節目で、オブジェクトが「閉じたポリサーフェス」になっているか確認する癖をつけましょう。
習慣2:適切な「精度」で作業する
作業開始時に、_Properties > 「単位」の「絶対精度」を確認します。 建築モデリング(単位: mm)であれば、「0.01」や「0.001」程度が一般的です。無駄に高精度すぎると計算が重くなり、甘すぎると隙間が生まれます。
習慣3:_BooleanSplit や _Trim を活用する
(ここだけの話)実は、私自身、実務や複雑なモデルでは _BooleanDifference(差)を多用しません。なぜなら、エラーが起きやすく、原因特定に時間がかかるからです。
代わりによく使うのが、以下のコマンドです。
_BooleanSplit(ブール演算分割): 引き算するのではなく、重なった部分で両方のモデルを「分割」するコマンド。これならエラーが起きにくく、不要な部分を後から_Delete(削除)すれば結果は同じです。_Intersect(交線作成) +_Trim(トリム): 最も確実な手動の方法。_Intersectでモデル同士の交線を作成し、その線を基準に_Trimで不要な部分を切り取り、最後に_Joinで結合します。
習慣4:レイヤー管理を徹底する
「壁」「床」「窓枠」「作業用」など、レイヤーを細かく分けましょう。 作業中のオブジェクト以外はロックしたり非表示にすることで、意図しないオブジェクトをスナップしたり、間違って結合してしまうのを防げます。
結論:Booleanエラーを制する者が、Rhinoを制する
今回は、RhinoのBooleanエラーの原因特定から、修正、予防までを解説しました。
- Booleanエラーの3大原因は「隙間」「法線」「精度」。
- エラーが起きたら、慌てずに
_ShowEdgesと_Dirでエラー箇所を特定する。 - エラーを防ぐには、こまめな確認と
_BooleanSplitなどの代替コマンド活用が有効。
Booleanエラーは、Rhinoが「あなたのモデルはここが不正確ですよ」と教えてくれる「サイン」です。決して「失敗」ではありません。 このサインを読み解けるようになれば、あなたのモデリングスキルは格段に上達します。
恐れずにコマンドを叩いてみましょう。まずは、今あなたが作業しているモデルを選択して、「_ShowEdges」を実行してみてください!

コメント