マーチングキューブ法 (Marching cubes) |
2018-03-04 - 2018-07-20 (update) |
|
|
*マーチングキューブ法 とは
格子状に並ぶボクセルデータを三角形のメッシュ構造に変換する方法です.図1は,その変換の例を表します.マーチングキューブ法は,例えば医療分野において,CTやMRIを使って計測したボクセルデータを変換するときに良く利用されているようです.
[img:lczp]
{{small:図1 マーチングキューブ法による変換の例, 左:入力のボクセル表現,右:出力のメッシュ表現}}
*サンプルコード (C++)
ライブラリ:[link:simplesp]
サンプルコード:simplesp/sample/gl/voxel
マーチングキューブ法に基づいて,ボクセルデータをメッシュ構造に変換します.
*アルゴリズム
マーチングキューブ法では格子状に並ぶボクセルの0/1の値を,図2に示す様に15通りの組み合わせの中から判定することで,メッシュの張り方を決定します.
[img:xvqp]
{{small:図2 15通りのメッシュの張り方 出典 [link:https://ja.wikipedia.org/wiki/マーチングキューブ法]}}
ただし,図3に示す様な特定の条件において,ボクセルの等値面に四角形の穴が発生します.そのため,上記15通りの判定によるメッシュとは別に,この穴を塞ぐメッシュも張る必要があります.
[img:3trb]
{{small:図3 等値面で発生する四角形の穴}}
>> ご意見・ご質問など お気軽にご連絡ください.info