点群フィッティング

以前、MPU法によるフィッティングの実装について色々と掲載したのだが
どうも、、正直不満の残る結果だった。
というのも論文の主張を完全には再現できなかった点にある。
MPU法では鋭角がピッと出ると言うのが大きな利点の一つだろうと思うのだが
この点に不満が残っていた。
陰関数曲面として生成されるのでこれを可視化することで正しく特徴形状を再生したかが確認できるのだが
有名なJules Bloomenthalの方法ではそもそもそんな箇所はアルゴリズム上無視されてしまう。
Dual ContouringやEMC(Extended Marching Cubes)は実装が正しいく出来ているのかわからない。
つまり、思った結果にならなかった。
そうしているうちにもしかして、、そもそもMPU法によるフィッティングの実装自体に誤りがあるのでは?
という疑念が生じていた。

しかし、上記のような事情からそれを可視化できないため目で見てOKなのかすら判断が出来ない。
もっとも正確な陰関数曲面のポリゴン化は未だにやりつくされた技術では無いようでそういう「モノ」は
今のところ存在していない(と思う)。

では可視化できないのか?といえばそうでは無い。
レイトーレーシングのような方法でやれば出来る。確かにそうなのだがレイトーレーシングのアプリはそれ自体で
大きな作業でMPU法の実装を大きく逸脱するコストがかかるだろう。
これでは本末転倒というかそんなアプリをいまさら書く気には成れないしそんな技量も無い。
では世の中に無いのか?実はある。有名なPovRayというのがあり、陰関数も定義できる。
しかし、これがまた問題でPovRayのマクロ言語で書かないと行けない。
これでは同じものをまったく異なる言語で実装するのと同じでバグの混入ややり方を変えなければ成らない。
どうにもならん!!
そう思っていたのだが世界は広い、「POVRay patch for extern implicit surface
C/C++で書いた陰関数をDLLにしておけばPovRayでレンダリングしてくれる。
ところがこれがまたメンテナンスされていないため現在のPovRayバージョンと合わないのだ。
※PovRayはインストールされている必要がある。
面倒だけどコツコツと差分を調べてマージ。
とりあえずサンプルはちゃんとレンダリングできている。

 
イメージ 1