2018-11 << 2018-12 >> 2019-01

2018-12-26 (水)

* BSP-TreeでCSG

3Dプリンタ用のモデルを作るときのCSG (Constructive Solid Geometry) にcsg.js使ってたのだけど,あまり融通効かないのと,データの変換に時間かかってしまうので,試しに自分で実装してみる.

とりあえず,3DメッシュからBSP-Tree作るだけなので簡単だろうと思ったけど,浮動小数点数の誤差とか,重なったポリゴンとか,まともに動かすためにはよく考えないといけなくて思ったより面倒.あとは,ポリゴンの分割数減らそうとしたけど,どうせ処理後にマージする必要があるので頑張らないことにした.

同じデータをcsg.jsと今回書いたやつで生成した結果を比べる.

csg01.png

csg.js(ポリゴン数多い&たまにゴミが残る)

csg02.png

今回書いたやつ.ポリゴン数減ったのもあるかもだけど,csg.jsよりだいぶ速い.

csg03.png

ちなみに,メタセコイア標準のブーリアン機能だと途中で壊れて使い物にならない...アルゴリズムに「高速」と「堅牢」が用意されてるのだけど中身は何なのだろう.堅牢でも気をつけないと穴が開いたり,穴が開いてるとエラー起こるのも気になる.

https://github.com/binzume/altglyph/blob/master/stl/glyph_hmd_rev2.stl

GitHubでSTLデータをWebGLでプレビューできるの知った.

2018-11 << 2018-12 >> 2019-01