モブ沢工房

プログラミングとかLinux関連(特にOSSのグラフィックツール関連)とかレトロゲームとか3Dプリンタやら日曜大工等、色々。

Blenderでjoinしたオブジェクトに対するBooleanモデファイアの挙動について

BlenderのBooleanモデファイアを使って穴を開けようとした所、変なことになったので備忘録としてメモです。 あっ、ちなみにまだ、ver3.3を使ってます😅 そろそろver4系に移行すべきか…

それはさておき、まず状況としては、角パイプのような形状があり、その先にシリンダーを半分切り取って作った半筒型の物体(なお、筒の蓋はN-gonではなく、予め三角形化してあります)を合体させて、そこに可動部分の軸をbooleanで引くことで軸穴を作ろう、という状況です。

この時、何も考えずに各パイプと半筒をjoinして合体させると、booleanモデファイアで穴が開かずに、逆に穴用の軸が合体した形状になってしまいます… この手前側のオブジェクトがその状況で、奥側のような形状を目指していたわけです。

なお、Booleanモデファイアの「Solver Options」でHole TolerantをONにすればこの状況でも穴が空きますが、何か少し遅いらしいし気持ちよくない。

そこで解決する方法ですが、これはjoin時に辺の頂点構成がおかしくなっているために起きるので、それを予め下処理することで防ぐことになります。

  1. まず角パイプの端、半筒の蓋と合体する辺をsubdivideしておきます。
  2. それから、joinします。
  3. 頂点編集モードに入り、全ての頂点を選択状態にし、Mesh -> Merge -> by Distance で重複頂点を合体(重要)

未処理の角パイプは次のような普通の構成ですが

下処理された角パイプは次のような頂点構成となります

真ん中に頂点が増えているのがおわかりいただけるでしょうか…

なお、join後のmerge処理が行われていないと、下処理がしてあるのに結局未処理のと同じ「望まない結果」が出来てしまいますので注意。

これでBooleanモデファイアが効いて穴が開くようになります☺️