Ver4.7.7では、ブーリアン処理のエンジンの切り替えが行われました。Metasequoiaのブーリアン処理については、これまで幾度かエンジンを刷新しており、大別すると今回で第4世代のものとなります。(ちなみに第1はVer3以前の外製プラグイン、第2がVer4.0から、第3がVer4.4以降)
開発時に行った評価結果では、今回の新エンジンのほうがより堅牢性が高くてエラーが起きにくいことから、第3世代のエンジンを廃止して採用することとなりました。
ただし、どんなデータに対してもエラーが起きないわけではなく、少なくとも特定の条件下でエラーが起きるか、エラーでなくてもおかしな結果になることを確認しております。
特定の条件とは「同じオブジェクト内で面同士が交差している箇所がある」かどうかです。
例えば、青色のオブジェクトAに2つの球体、赤色のオブジェクトBに1つの球体があるときを考えます。
AからBを引いた差はどうなるでしょうか。普通は下図のような結果を期待します。
しかし、実際には下図のように、オブジェクトBがひっくり返ったようなものが残り、変な結果になってしまいました。
原因は、オブジェクトAの2つの球体の一部が重なっているためです。
解決策は少しだけ面倒ですが、「選択部処理 > 面を新規オブジェクトへ」メニューでオブジェクトAの片方の球体をいったん別のオブジェクトへ移し、個別にブーリアン処理を適用することで期待した結果が得られます。また、青の2つの球体をあらかじめブーリアンで一枚皮にくっつけておくのもいいかもしれません。
別々の2つの塊が重なっているケースでは解決も比較的簡単です。しかし、複雑なオブジェクトではまずどこが重なっているか目視で探すのは難しいかもしれません。
例えば下図のように、1つの塊の中で手前の面を奥側に移動しすぎて、奥の面を貫通してしまった場合、かなり良く見ないと貫通していることに気づきにくいです。
こんな時は新たに追加された「交差箇所の選択のみ」機能が便利です。
一つのオブジェクト内の自己交差のみを検出する場合、「自己交差もチェック」をオンにします。また、オブジェクト間の交差は除外したいので、「対象」のリストはCtrlキーを押しながらクリックして選択を外します。この状態でOKを押すと、下図のように交差箇所の面と頂点が選択された状態になります。
選択対象は「面のみ」「頂点+面」を指定できますが、面だけの選択だと交差箇所の面が小さい場合は見づらいので頂点も選択するといいでしょう。
該当箇所がわかったら、あとは該当箇所を重ならないよう修正してから再度トライしてください。
上記は自己交差に関する注意点をまとめましたが、他にもまだ把握していない問題があるかもしれません。もし、このデータでブーリアン処理に失敗するけど解決できないということがありましたら、まずは弊社サポートまでお問い合わせください。