2020年06月09日

【自キ】Blenderのbooleanがうまくいかない人へ

ふたつのオブジェクトに、
同一平面、同一辺、同一頂点、接線が存在すると、booleanは機能しない。
この仕様を理解しているかどうかが肝。


これが分からなくて随分難儀していた。
一見うまいこと合成できたと思っても、
中に頂点が埋まってたり、
平面の上に平面を生成していたり、
辺の上に点を生成していたり(これが見つけにくい)。

これまではとりあえず合成して、
ワイヤーフレームを見ながらおかしな所を目視で発見し、
xで消去していた。
しかしこれは目視の限界があるし、
無駄が多い。

大抵さらにbooleanで足すとバグるから、
それで発覚することもよくあったし。
(手戻りできないパターンでの発覚はつらい)


で、
経験的に、
同一平面、辺、点を避ければいいということはわかってた。

しかし実際に天面合わせや側面合わせで合成したい、
ということはよくある。

やっと普遍的なやり方を開発したのでメモしておく。
以下のことはググっても出てこないので、
ずっと試行錯誤しながら編み出した。


天面合わせを例に。

1. どちらかのオブジェクトの天面を、1ミリ上に上げてから合成(union)。
(なお天面だけが同一で、他にかぶってる部分はないとする。
複合的に被りがある例は後述)

2. 合成後、上げた方の天面を選択して、1ミリ下げる。
当然、被った頂点や辺が存在するはず。

3. aで頂点を全選択、remove doublesで、重複頂点を削除。

4. これでも除去しきれない面、辺、点が残ることがある。
合わせた天面同士を選択、x→disolve facesで、面を一体化。

5. あとは目視で、重なった辺や面、面や辺にめり込んだ面を探す。
もとふたつのオブジェクトの重なりエリアに必ず出現し得るから、
点を選択して隣の点を選択したとき、点同士が繋がらないなら、
そこに重なった辺があるぞ。

こうしたものは、disolve vertex、edgesで溶解させておく。
remove doublesは、頂点にしか効かない。
面、辺がまだ重なってるときもあるから、
怪しいところは全部disolveしたほうがいい。


次のオブジェクトを合成したときにバグるかどうかで、
これの合成が正しかったかどうかがわかる。
合成する前のオブジェクトは、つねにシフトdで残しておくべき。

僕はそういうものはすべて残して、
作業エリアを次々に前に出して時系列順で並べておく癖をつけている。
最悪前の状態が後方に置いてあるので。


ちなみに、被る場所が天面、側面など複数ある場合は、
それぞれを1ミリずらして合成して、
二箇所に関して同じことをやればよい。
めんどくさいけどコツコツやれば漏れを防げる。

重なり警告してくれればいいのにねえ…



ただ、重なった部分が存在したとしても、
3Dプリントしてもバグらないこともある
(ケースバイケース)ので、
神経質になる必要はないのかもしれない。

ただ、booleanを複数回かけると必ずバグは蓄積してゆくので、
クリアーな物体にするべきだろう。
できるだけ。



booleanで困ってる人がいたら参考にしてください。
バージョンは2.82です。
posted by おおおかとしひこ at 11:55| Comment(0) | カタナ式 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。