連載
» 2015年10月02日 10時00分 UPDATE

Kinectで3Dスキャンして3Dプリントを楽しもう(4):Kinect以外のDepthセンサーを使った3Dスキャン (1/2)

モーションコントローラーデバイス「Kinect for Windows」で対象物を3Dスキャンして、3Dプリントするまでの手順を詳しく解説する連載。最終回では「Intel RealSense」と「Structure Sensor」を使った3Dスキャンについて紹介する。

[中村薫,MONOist]

 最終回となる今回は、「Kinect for Windows(以下、Kinect)」以外のDepthセンサーを使った3Dスキャンの方法について紹介します。

 現在、Kinectの他にも幾つかのDepthセンサーが発売されており、Kinectと同じように3Dスキャン機能を備えています。ここでは、それらセンサーを使った3Dスキャンの方法を紹介するとともに、Kinectによる3Dスキャンとの違いについても解説します。

 今回紹介するDepthセンサーは以下の2つです。

  • Intel RealSense
  • Structure Sensor

 これらDepthセンサーによる3Dスキャンのやり方を順番に見ていきましょう。


注:本連載は、個人でモノづくりを楽しむための解説記事となります。対象物を3Dスキャン&3Dプリントされる際は、全てにおいて自己責任で行ってください。万が一問題が発生した場合、筆者および当社は一切責任を持ちませんのでご注意ください。


「Intel RealSense」による3Dスキャン

 Intel RealSense(以下、RealSense)はインテルが展開するDepthセンサーで、以下の3種類があります。

  • 近距離でユーザーの動きを認識する「F200」
  • 中距離で空間を認識する「R200」
  • タブレット端末用の後処理タイプ「R100」

 このうち、3Dスキャンが行えるのはF200とR200です。原稿執筆時点(2015年9月)で入手可能なセンサーはF200のみでしたので、本稿ではF200を使用して解説を進めていきます(画像1)。ちなみに、RealSenseのセンサーは、コンピュータへの内蔵が基本となっており、外付けのセンサーは開発者向けとなっています(外付けのセンサーが一般販売されるという発表もありますが未定です)。

Intel RealSenseセンサー(F200) 画像1 Intel RealSenseセンサー(F200)

 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)します。

「Intel RealSense SDK Sample Browser」の画面 画像2 「Intel RealSense SDK Sample Browser」の画面

 起動すると次のような画面が表示されます(画像3)。

<strong>画像3</strong> 「3D Scan(C#)」の画面 「3D Scan(C#)」の画面

 各項目/機能の詳細は以下の通りです(表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)。

[Start Camera]をクリック 画像4 [Start Camera]をクリック

 ご覧の通り、最初は何も映りませんが、センサーにスキャン対象を近づけると表示されます。センサーの範囲は20〜120cmほどなので、50cmくらいの距離に置くとよいでしょう。スキャン対象を検出すると、[Start Scanning]が有効になるので、クリックします(画像5)。

3Dスキャンを開始 画像5 3Dスキャンを開始

 スキャンが開始されたら、スキャン対象を回転させます。モデルが出力できる状態になったら[End Scanning]が有効になるのでクリックします(画像6)。

3Dスキャンが完了したら[End Scanning]をクリック 画像6 3Dスキャンが完了したら[End Scanning]をクリック

 すると、3Dモデルの出力先とファイル形式(拡張子)を聞かれるので、任意のものを指定してください。本稿では、STLファイルを選択します(画像7)。なお、カラーの3Dモデルを出力したい場合は、「Texture」にチェックを入れてOBJ形式で出力するとよいでしょう。PLYファイルはシンプルなデータ構造なので、自分で3Dモデルを使ったアプリケーションを開発したい場合に有効です(筆者もよく使っています)。

3Dモデルの出力先とファイル形式(拡張子)を指定 画像7 3Dモデルの出力先とファイル形式(拡張子)を指定

 出力されたSTLファイルを「MeshLab」などで開いてみると、きれいな3Dモデルとして出力されていることが分かります。3Dスキャンで読み取れなかった部分の穴もきれいにふさがれています(画像8)。

出力されたSTLファイルを確認 画像8 出力されたSTLファイルを確認

 出来上がったSTLファイルを、パーソナル3Dプリンタ「ダヴィンチ Jr. 1.0」の専用ソフトウェア「XYZware」で読み込み、「3W」形式のファイルに変換からして、3Dプリンタで出力します(画像9)。

STLファイルを「XYZware」で読み込み 画像9 STLファイルを「XYZware」で読み込み

 こちらが出力した造形物になります(画像10)。画像だと少々分かりづらいですが、3Dスキャンしたデータが実物としてきれいに出力されています。

「ダヴィンチ Jr. 1.0」で出力した造形物 画像10 「ダヴィンチ Jr. 1.0」で出力した造形物

 ちなみに、スキャン対象の手動による回転は、Kinectと同様に少しコツが必要です。そこで、筆者は「LEGO MINDSTORMS」を使って自動で回転するテーブルを作りました。LEGO MINDSTORMSはWindows PCから制御ができるので、RealSense SDKの3DスキャンAPIと連携して自動的に回転、停止するようにしています(動画1)。


       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.