建築学生必見!RhinoでBooleanが効かない時の原因と解決法

「あとでやろう」が命取り。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)」、つまり「完全に隙間なく閉じられたソリッド」同士でしか計算できません。

  • チェックコマンド:
    1. Booleanをかけたいオブジェクトを選択します。
    2. _Properties(プロパティ)パネルを開きます。
    3. 「タイプ」の欄を見てください。ここに「閉じたポリサーフェス」と表示されていますか?
    4. もし「開いたポリサーフェス(Open Polysurface)」と表示されていたら、それがエラーの原因です。どこかに隙間(穴)が空いています。
  • エラー発見コマンド: 隙間を見つけるには、_ShowEdges(エッジ表示)コマンドが最強です。
    1. コマンドラインに _ShowEdges と入力。
    2. ダイアログが出たら「Naked Edges」のみにチェックを入れます。
    3. モデルの隙間(閉じられていないエッジ)が、設定した色(デフォルトはマゼンタ)でハイライトされます。

学生がやりがちな失敗例: _Join(結合)コマンドを使ったから大丈夫、と思っていても、Rhinoの「精度」の許容値を超えるわずかな隙間があり、実際には結合できていないケースが非常に多いです。_Join したら、必ず _Properties で確認しましょう。

原因2:面の向き(法線)が「裏返っている」

モデルは「内側」と「外側」の情報を持っています。これを「法線(Normal)」と呼びます。 法線が裏返っている(=外側を向くべき面が内側を向いている)と、Rhinoが「どっちが内側?」と混乱し、Booleanが失敗します。

  • チェックコマンド:_Dir(法線方向の表示/編集)コマンドを使います。
    1. オブジェクトを選択し、_Dir と入力。
    2. 小さな矢印がたくさん表示されます。この矢印が、ソリッドの「外側」を向いていれば正常です。
    3. もし一部の矢印が「内側」を向いていたら、それがエラーの原因です。
  • 修正コマンド: _Dir の実行中に、裏返っている面をクリックするか、コマンドオプションの _Flip(反転)で向きを修正できます。

筆者のテクニック(E-E-A-T): 私は、作業中のシェーディングモードをカスタマイズしています。Rhinoの「表示モード」設定で、「裏面の設定」を「単一色」にして、目立つ赤色などに設定しています。 こうすると、モデリング中に法線が裏返った瞬間に赤く表示されるため、エラーを即座に発見できて非常に効率的です。

原因3:オブジェクトが「精度(Tolerance)」の範囲外にある

これは少し難しい概念ですが、「精度の問題」もエラーを引き起こします。 Rhinoは「このくらい(例: 0.001mm)のズレなら、くっついていると見なす」という「絶対精度(Tolerance)」を持っています。

  • チェックコマンド: _Properties > 「単位」タブで、現在の「絶対精度」を確認できます。
  • エラーのケース:
    1. 遠くにゴミデータがある: CADデータをインポートした際など、作業領域から遠く離れた場所に、小さな点や線分のゴミデータが残っていると、全体の計算精度が狂い、Booleanが失敗することがあります。
    2. 精度不足: 逆に、精度設定が甘すぎる(例: 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」を実行してみてください!

コメント

タイトルとURLをコピーしました