モーションコントローラーデバイス「Kinect for Windows」で対象物を3Dスキャンして、3Dプリントするまでの手順を詳しく解説する連載。最終回では「Intel RealSense」と「Structure Sensor」を使った3Dスキャンについて紹介する。
最終回となる今回は、「Kinect for Windows(以下、Kinect)」以外のDepthセンサーを使った3Dスキャンの方法について紹介します。
現在、Kinectの他にも幾つかのDepthセンサーが発売されており、Kinectと同じように3Dスキャン機能を備えています。ここでは、それらセンサーを使った3Dスキャンの方法を紹介するとともに、Kinectによる3Dスキャンとの違いについても解説します。
今回紹介するDepthセンサーは以下の2つです。
これらDepthセンサーによる3Dスキャンのやり方を順番に見ていきましょう。
注:本連載は、個人でモノづくりを楽しむための解説記事となります。対象物を3Dスキャン&3Dプリントされる際は、全てにおいて自己責任で行ってください。万が一問題が発生した場合、筆者および当社は一切責任を持ちませんのでご注意ください。
Intel RealSense(以下、RealSense)はインテルが展開するDepthセンサーで、以下の3種類があります。
このうち、3Dスキャンが行えるのはF200とR200です。原稿執筆時点(2015年9月)で入手可能なセンサーはF200のみでしたので、本稿ではF200を使用して解説を進めていきます(画像1)。ちなみに、RealSenseのセンサーは、コンピュータへの内蔵が基本となっており、外付けのセンサーは開発者向けとなっています(外付けのセンサーが一般販売されるという発表もありますが未定です)。
F200が内蔵されたコンピュータはこちら、F200の開発者キット(外付け)はこちらになります。なお、R200の内蔵コンピュータは現在未発売で、開発者キット(外付け)も予約受付中となっています(原稿執筆後に筆者の手元に届きました!)。
RealSenseのセンサーを使うためのSDK(Software Development Kit)はこちらから無料でダウンロードできます。この中に3Dスキャンのサンプルプログラムも入っています。「Intel RealSense SDK(以下、RealSense SDK)」は非常にたくさんの機能を持っており、カラー画像だけで動作する機能(顔検出など)についてはWebカメラ、音声関連は一般的なマイクでも動作します。
RealSense SDKの詳細については、拙著『Intel RealSense SDKセンサープログラミング』も参考にしてください。なお、書中のSDKのバージョンは「R2」、本稿の解説では「R4」を使用しています。SDKのバージョンにより、サンプルプログラムの見た目やSDKの使い方が変わる場合がありますので、お使いのバージョンに関する情報も併せて取得するようにしてください。
RealSenseセンサーによる3Dスキャン環境を構築する手順ですが、RealSenseセンサーをPCに接続してから、【1】Depth Camera Manager(DCM)、【2】RealSense SDKの順にインストールします。
インストール作業が完了したら「Intel RealSense SDK Sample Browser」を起動してみましょう。ご覧の通り、機能ごとにサンプルプログラムが収録されています(画像2)。今回は、左の検索ビューから「C#」を選択して「Common Samples」タブを開き、「3D Scan(C#)」を起動(Run)します。
起動すると次のような画面が表示されます(画像3)。
各項目/機能の詳細は以下の通りです(表1)。
項目 | 説明 |
---|---|
Object | スキャン対象の指定。「Object」「Face」「Full」から選択可能。Objectは物体、Faceは顔、Fullは全身を意味する。本稿では物体をスキャンするため、Objectを選択。なお、F200ではObject、Faceのみ利用可能 |
Start Camera | スキャンのためのターゲット表示を開始 |
Texture | カラーカメラのデータをテクスチャーとして出力 |
Solid | 3Dモデルの穴埋めを行う |
Start Scanning | Start Camera後、ターゲットを認識すると有効になり、3Dスキャンが開始される。3Dスキャンデータを出力できる状態になったら、「End Scanning」に代わり3Dモデル(OBJ、PLY、STL)として出力できる |
表1 「3D Scan(C#)」の説明 |
RealSenseセンサーおよびRealSense SDKで3Dスキャンする場合、Objectスキャンでオブジェクトのみを抽出し、Solidで3Dモデルの穴埋め処理を行ってくれるので、STLファイルとして書き出せば、そのまま3Dプリントすることが可能です。なお、F200による3Dスキャンは、スキャン対象を回転させるスキャン方式となります。
スキャン対象を「Object」にし、「Solid」にチェックを入れて[Start Camera]をクリックします(画像4)。
ご覧の通り、最初は何も映りませんが、センサーにスキャン対象を近づけると表示されます。センサーの範囲は20〜120cmほどなので、50cmくらいの距離に置くとよいでしょう。スキャン対象を検出すると、[Start Scanning]が有効になるので、クリックします(画像5)。
スキャンが開始されたら、スキャン対象を回転させます。モデルが出力できる状態になったら[End Scanning]が有効になるのでクリックします(画像6)。
すると、3Dモデルの出力先とファイル形式(拡張子)を聞かれるので、任意のものを指定してください。本稿では、STLファイルを選択します(画像7)。なお、カラーの3Dモデルを出力したい場合は、「Texture」にチェックを入れてOBJ形式で出力するとよいでしょう。PLYファイルはシンプルなデータ構造なので、自分で3Dモデルを使ったアプリケーションを開発したい場合に有効です(筆者もよく使っています)。
出力されたSTLファイルを「MeshLab」などで開いてみると、きれいな3Dモデルとして出力されていることが分かります。3Dスキャンで読み取れなかった部分の穴もきれいにふさがれています(画像8)。
出来上がったSTLファイルを、パーソナル3Dプリンタ「ダヴィンチ Jr. 1.0」の専用ソフトウェア「XYZware」で読み込み、「3W」形式のファイルに変換からして、3Dプリンタで出力します(画像9)。
こちらが出力した造形物になります(画像10)。画像だと少々分かりづらいですが、3Dスキャンしたデータが実物としてきれいに出力されています。
ちなみに、スキャン対象の手動による回転は、Kinectと同様に少しコツが必要です。そこで、筆者は「LEGO MINDSTORMS」を使って自動で回転するテーブルを作りました。LEGO MINDSTORMSはWindows PCから制御ができるので、RealSense SDKの3DスキャンAPIと連携して自動的に回転、停止するようにしています(動画1)。
Copyright © ITmedia, Inc. All Rights Reserved.