【要約】Booleanを使わずに球殻をwatertightに分割する —— 面集合から直接ソリッドを組む [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
3Dプリント用の球体LEDディスプレイ製作において、設計者は中空の球殻を複数のパーツに分割する際に、メッシュの品質低下という問題に直面した。従来のBoolean演算を用いた分割では、以下の課題が発生する。
- ・中空化と分割カットを繰り返すことで、自己交差や非多様体エッジなどのメッシュ汚染が蓄積する。
- ・分割数が増えるほど、計算によるメッシュの破綻リスクが指数関数的に高まる。
- ・隣接するパーツの切断面に微細なズレが生じ、組み立て時に隙間が発生する。
// Approach
設計者は、Boolean演算を一切排除し、元の多面体の面集合から直接ソリッドを組み立てる手法を採用した。各カセットを、以下の3つの要素を結合した閉じたメッシュとして定義する。
- ・面集合の分類: 重心の緯度経度に基づき、各面を特定のカセットへ割り当てる。
- ・外殻と内殻の生成: 外殻は元の面を用い、内殻は頂点を0.9倍に縮小し、巻き順を反転させて法線を内向きにする。
- ・側壁(rim quad)の構築: 面集合内で1回しか現れない「境界辺」を特定し、外殻と内殻の頂点を結ぶ四角形を張る。
// Result
この手法により、計算速度の向上と、製造に耐えうる極めて高いメッシュ品質を両立した。具体的には以下の成果が得られている。
- ・メッシュの健全性: Boolean演算を回避したことで、mesh.validate() をパスするクリーンな水密モデルが得られる。
- ・高い組立精度: 隣接カセットが境界の頂点を完全に共有するため、組み立て時の隙間がゼロになる。
- ・機能的副産物: 外周のジグザグ形状が、組み立て時の位置決めガイド(インロー)として機能する。
Senior Engineer Insight
> 幾何学的な「計算」に頼らず、データの「構造」から直接形状を再構成する設計思想は、極めて堅牢である。Boolean演算は実装が容易だが、浮動小数点誤差やトポロジーの破綻に弱く、大規模な分割には向かない。本手法は、境界辺の判定という単純な論理で、製造工程に直結する高精度なモデルを生成できる。CAD自動化や、複雑な形状の分割が必要な製造業向けツール開発において、極めて実戦的なアプローチと言える。