自作3Dスキャナで取得したデータは、さほど精度がよくありませんでした。
しかし、同じレーザー方式の3Dスキャナであれば結局どの機種でも同様にレーザーの反射しない箇所には穴が開きます。
例えば、こちらの2013年17万強で出ているスキャナー↓
を実際に使ってみたという記事ですが、
https://weekly.ascii.jp/elem/000/000/187/187238/
やはりレーザーの届かない場所の抜け、黒色部分の不検出になります。
しかし表面はかなり滑らかにスキャン出来ているように見えます。「さすが10万超のマシン!」と思うことでしょう。
しかしレーザーでスキャンしたままのデータを元にソフト側で表面を滑らかに加工しているようにも見えます。
ということで、今回作った自作3Dスキャナーでもソフトで同程度の滑らかさが出せるのか?表面加工をしてみたいと思います。
編集ソフトはフリーでオープンソースな「MeshLab」を利用します。
↓HP
MeshLabは1から3Dモデルを作り上げる事はできませんが、3Dメッシュデータの編集やファイルタイプの変換などが出来る便利なツールです。
モデルは体操ブーブー。
amazonで普通に売られています。
スキャニング中....
スキャン完了!表面キレーですねー。レーザーの検出出来なかった頭には穴が・・
これをMeshLabで開くと
あれ?あれ?表面がボコボコです。
なぜ、そういうふうに見えるかというと
実は3Dオブジェクトにはテクスチャという画像データが貼られています。
テクスチャが貼られていると、一見綺麗に見えるだけなのです。
VRとかだとそのまま使えるようなデータですが3Dプリントするのには難があります。
(Blenderのテクスチャモードで開く)
テクスチャを外してソリッドモデルで表すとこうなります↓
ワイヤーフレームで表すと、各点が見えないぐらいぎっちりと詰まっています。↓逆にこの精度でスキャン出来ている事に驚きます。
このデータを簡単にMeshLabで滑らかにしてみます。
方法は参考ページに載っている通りスムーズ化するだけです。
<参考>MeshLab(Smoothing) - PointCloud
結果
かなーり表面が綺麗になりました。
先ほどのBlenderのソリッドモデルで見てもツルツルしています↓
では?穴はどうやって塞ぎましょう?
MeshLabにはRemeshingという点群からソリッドを構築し直してくれる便利な機能があります。
<参考>MeshLabによる、3次元測定データの穴埋め - みたにっき@はてな
こんな感じ。灰色の部分が再構築されたソリッドです。凸凹も埋められています。
すばらしい!これなら少し要らないところを削るだけで3Dプリンタでも出力できそうです。先ほどのスムーズ化と組み合わせると表面ツルツルになります。
実際には何回スキャンするかとか、スキャンの方向、スキャン時の環境、ソフトでどう平均値を取るかとかメーカー物にはノウハウが詰まっているので一丸に同程度とは言えませんがお手製のマシンでも工夫次第で近い結果を出す事が可能になるのです。
あとは精度を出す為にいろんな方向からスキャンして合成するという方法もあります。
高価なスキャナーはスキャナー自体の能力だけでなく、こういったソフトウェア側での穴埋め作業などを自動化してあったりと素人でも使いやすくしてあるようです。
僕の3Dスキャナの用途としては工作パーツの位置決めやカバーの作成など、おおよその位置関係とカーブ程度が解ればそれを参考にblenderでデータを作り直すので今回の自作3Dスキャナーでも充分な性能だと満足しています。
しかし、フィギュアの完全コピー等を目的とするなら到底満足出来ない結果だと思います。
どんな方法にしろ3Dスキャナーで取得したデータを無加工で3Dプリンターで出力できるようなスキャニングは現実的にはほぼ不可能と思われますので3Dプリンター出力を目指すのであれば3Dモデリングツールを触れるようにしましょう。
全5回に渡り3Dスキャナーの自作、実践をしてみました。お付き合いありがとうございました。
精度はともかく、作るだけなら結構簡単な材料で出来ますので是非一度試してみてください。