「ボクセルポリゴンな日々」 - UnityでMakersとVRをつなぐ挑戦 -

Unityプログラムで3DCGアセットデータをVRや3Dプリンターで利用可能にする最新技術や関連最新情報を紹介します。

【Kinect】ReconstructMeでKinectを3Dスキャナに変身させる。(その3・導入編)

2013年01月11日 18時28分50秒 | Kinect活用術



一昨日の晩初めて起動する事に成功したReconstructMeですが、そのインストールと運用までには結構長い時間がかかりました。ブログで初動作報告を書いた夜もツイッターで「どうやって動かしたのか?」という主旨のお問い合わせも頂いておりましたので、今回の記事にて私のやったことや注意点を書かせて頂きます。(^^)


◎【手順1】Kinectを利用可能にする。

これは当然やらなければいけない事です。Kinectを利用可能にするには以下のツールやSDKをインストールする必要があります。
動作確認はKinect for Windows導入後にツールを起動する事で行なえます。

まずはまとめ?ブログ「Kinect 5 -OpenNI2導入-」ページに飛んで、このページに従って以下のプログラムモジュールやドライバをインストールしてください。

※ vpvp Wikiではまとめ?ブログ「Kinect 1 -OpenNI導入-」
  へのリンクが紹介されていますが、前記のリンクが最新のKinect実行ツール&SDK
  になります。ただしこちらは古い方になります。
  (但し64bit版Windows7がベースとなっていますので導入の際はご注意ください。)

※ 以下の説明では最新版のKinect導入法について簡単に説明します。


(1)導入の前提となるOSと開発環境

  ・Microsoft Windows 7 x64
  ・Microsoft Visual Studio 2010 (C++)(※2)

  (※2)
    Kinectプログラム開発を行なわない人にはVisualStudio2010は必要ないので、
    代わりにMicrosoft Visual C++ 2010 Redistributable Package (x86)
    を導入しておく必要があります。


(2)ここで導入するソフトウェア(ドライバ&ツール&SDK)

  ・Microsoft Kinect for Windows
  ・Microsoft Kinect for Windows SDK v1.6.0
  ・OpenNI 2.0.0 Beta (Win64)
  ・NITE 2.0.0 (Win64)
  ・OpenCV(※3)

  (※3)
    OpenCVは画像処理プログラム開発に興味のある人だけ導入しておく事をお勧めします。


上記の導入が終わったら、Kinect for Windows SDK v1.6.0にある「Kinect for Windows Developer Toolkit v1.6」「Tools」タブにある、「Kinect Exploler」を実行して、Kinectからのカメラ画像が表示されている事を確認してください。





この動作確認が終われば、MikuMikuDance(32bit版でv7.24以降のバージョンが必要です)を起動し、適当なモデル(例えば標準添付のあにまさ式ミクさん)を読み込んで表示させた上で
「モーションキャプチャ(K)」の「Kinect(K)」を選択して以下の画面の様になればMikuMikuDance上での導入は終了です。





 ※ 上記画像例ではそむにうむ式ミクv1.0を使用しています。

ここから先がReconstructMeの導入手順になります。(^^;)




◎【手順2】ReconstructMe導入手順:


ここからはきちんと手順を踏まなければならないので厄介です。

大切な事は、以下の4点が上から順に守られているかどうかです。


(1)PCがReconstructMeの実行条件を満たしているか?
(2)PCのGPUドライバが最新かどうか?
(3)PCにOpenCLが導入されているかどうか?
(4)ReconstructMeの実行と、PCがReconstructMeが指定したGPUによって動いているかどうか?


これが正しく守られていなければReconstructMeでは3Dスキャンを実行できません。

それでは1項目ずつ確認しながら設定していきましょう。

・・・・・


(1)PCがReconstructMeの実行条件を満たしているか?

ここがReconstructMeを導入する上で最初の関門です。
ReconstructMeは基本的に高機能なGPUでのみ利用できるアプリケーションとなっています。故にいくら最新型でもUltraBookタイプの軽量ノートPCでは実行できません。理由はGPUがインテル製の省電力タイプのものが多いためdす。

正確な情報を知るためには、以下のページをご覧ください。(英語)


Installation and Hardware(reconstructMe)


このページで上げられている中で重要なのは「最低限必要な性能を満たすGPUの種類」です。それは、


・AMD Radeon HD 6850
・NVIDIA GeForce GTX 560


と規定されています。これ以上の最新または強力なGPUを搭載しているPCでのみReconstructMeが利用できます。

しかし一部の15インチノートPCでは、上記以上の最新または強力なRadeon/GeForce搭載機でも省電力モード用にインテル製GPUが搭載されている機種の場合実行時に注意が必要となります。

何故かというと、折角強力なGPUが搭載されてても省電力モード等の実行時制約によってGPUが選択されずにRecontstructMeが立ちあがってしまい、結果プログラムの実行に失敗するパターンがあるからです。

それはこれから進めるプログラムのインストール手順によっても発生します。筆者もこれにはまってしまい半日ほど悩みました。(^^;)

・・・・・


(2)PCのGPUドライバが最新かどうか?

上記のハードウェア用件で適合するGPUを搭載したPCを持っていたとしてもReconstructMeが正しく実行できない場合があります。

その原因にはGPUドライバが古かった場合が考えられます。何故GPUドライバが古いといけないのかと言いますと、後述するOpenCLというライブラリを実行するDLLに対応するGPUドライバになっていなければReconstructMeを利用できないからです。

従ってここでNVIDIA社或いはAMD/ATI社のWebページを参照し、ご使用のGPUに適合する最新ドライバを導入して下さい。特に注意すべき事は「OpenCLに対応している」ことを確認しなければならない点です。(最新ドライバならほとんどすべてがOpenCLに対応しています。)

ここではお持ちのPCのGPUの種類に応じて様々なリンク先があるため、以下のリンク先のみ提示しておきます。


・NVIDIAドライバダウンロード

・ATIドライバダウンロード

・・・・・


(3)PCにOpenCLが導入されているかどうか?

上記でも出てきましたOpenCLとはいったい何者なのか?

これはPCに搭載されたCPU等を並列処理させて高速に処理させるためのオープン規格ライブラリ(※4)のことです。

(※4)Open**という名前のライブラリはKhronosグループが制定および作成し管理しています。


近年のPC用インテル社製CPUがCore2Duoの世代(5年前)から内部に2個以上のCPUを持つ「メニーコア」と言われる複数並列処理型になっているのを御存知でしょうか。

近年のCore i5やi7のようにCPU内が2コアまたは4コア(i7では最大6コア)で構成されており、さらに仮想プロセッサ(スレッド)の仕組みにより倍加して最大8スレッド~12スレッドでプログラムを実行させる事が可能人っているのです。従来のCPUのように1つのプログラムを1コアで処理するのではなくスレッド数分に分割して並列処理させる方が分割した数分処理が早くなるというメリットを持っています。

そしてこのメリットをプログラム上で効率よく利用できるようにするライブラリとして提供されているのがOpenCLライブラリです。


このOpenCLライブラリの導入を、必ずGPUドライバーの更新後に行なうようにします。(※5)

 (※5)この手順を間違うと、省電力対応ノートPCではReconstructMe実行時に本来のGPUではなくインテル製の省電力対応型GPUが選択されてしまいます。即ちReconstructMeの実行に失敗します。


OpenCLの導入につきましてはIntel社製のOpenCL開発キット(SDK)のインストールが最も確実です。以下のサイトからダウンロードしインストールしてください。


・A Development Environment for OpenCL* Applications(米インテル社)


・・・・・


(4)ReconstructMeの実行と、PCがReconstructMeが指定したGPUによって動いているかどうか?


ここまできたらReconstructMe実行まであと一歩です。

ReconstructMeの実行版につきましては、以下のサイトからダウンロードして下さい。


Releases(ReconstructMeサイト内)


ここで注意事項としては、Microsoft社製のKinect for Windows SDKを利用していて、かつKinect for Xboxを利用している環境の人です。

上記の◎【手順1】Kinectを利用可能にする。で一応ReconstructMeを利用するためのドライバやNITEの導入は終わっている筈ですが、もしも万が一利用できない場合は上記のサイトからOpenNI Sensor Driver Package x86(32bit版)をダウンロードしてインストールしてみて下さい。

ReconstructMeの導入は上記のサイトから「ReconstructMe_Installer_NonCommercial_???.exe」(???は最新のバージョン番号が入ります。執筆時点での最新は405です。)をダウンロードし、落としたファイルを実行します。そのままのインストール設定ならばいきなりCドライブ直下に「ReconstructMe」というフォルダを作成します。インストールはこれで終わりです。(アイコンの登録やスタートメニューへの登録はありません)


それではReconstructMeを実行してみます。

実行に際しては注意があります。それは、ReconstructMeフォルダ内の実行ファイル「ReconstructMe.exe」を実行しても何もできずにプログラムが終了することです。

必ず「Start...」で始まる拡張子.bat付きのバッチファイルを選択して実行するようにします。筆者の環境ではOpenNI系バッチファイルはダメだったのでStart ReconstructMe Scan MSKinect.batを選択して実行しています。

バッチファイルを実行するとDOS窓が開きます。画面にはこんな内容が表示されます。





これは「利用規約を守って実行しますか?」という意味の確認を取っているのです。ちなみにReconstructMeを利用するに当たっては以下の鉄の掟を守らなければなりません。


・ReconstructMeの再配布はいかなる形式においても許可されません。
・ReconstructMeプログラムの利用は自他共にコマーシャルや商用目的で利用することができません。
・ReconstructMeで作成された全てのデータの販売も禁止されます。
・今回使用するReconstructMe(非商用ライセンス版)で作成されたデータのライセンスは
 クリエイティブコモンズで定義される「Attribution-NonCommercial-ShareAlike 3.0 Unported.」となります。(※6)

 (※6)参考:
  表示 - 非営利 - 継承 3.0 非移植 (CC BY-NC-SA 3.0) Creative Commons


この規約はMMDのモデリングデータ作成補助に使うという目的に関しては問題ないと思います。(^^)


ということで、ここでYキーを押して続けてEnterキーを押します。(DOS時代のプログラム操作方法です。(^^;))

すると、画面上に以下のメッセージが現れます。





この中で、[20??/??/?? ??:??:??.??????][info ] Preparing environment for Device GeForce GT 650M(中の?には実行時点での年月日時分秒マイクロ秒の数字が入ります)と表示されていますが、ここにDevice GeForce GT 650Mという具合にReconstructMeが実行要件としているGPU以上のGPUの名前が入っていれば実行は成功します。それ以外の場合、特にIntelの名前が確認されれば失敗します。


実行が成功すれば、ほどなくして画面にはKinectのカメラに映ったイメージと右側グレーのウィンドウが表示されます。





これでプログラムが立ちあがったのですが、このままでは何も取り込まれません。まずは上記のウィンドウを最前面にして(=マウスカーソルを置きとりあえず左クリックします。変化はありませんが)、キーボードでPキーを押します。するとKinectによる3Dスキャンの認識範囲内にターゲットがあれば自動的にそれの3D形状を取りこむ動作を始めます。

この時Kinectを置くのではなく手で持ってゆっくりと取り込み対象物体の前を移動し、ウィンドウ右側に取り込み対象物の3D形状情報が追加されていくのを確認しながら3Dスキャンを行ないます。





時折プログラムがビープ音(「ピ」というような短い音)を鳴らしてきますがそれは取り込み範囲を外れた事を示す音です。

取り込みをやり直す場合はキーボードのRキーを押します。

Pキーを再度押せば取り込みを中止し、さらにもう一度Pキーを押すと取り込みを再開します。

そして取り込みを終了するには「ESC」と書かれた左上のキーを押します。(エスケープキーと呼びます)すると画面が以下のようになります。





ここで「取り込んだ内容をセーブするか?」と聞いてきますのでセーブする場合はYキーを押して続けてEnterキーを押します。

すると「filename (string)  :」と表示されてカーソルが点滅しますので、ここで形状データを保存するファイル名を入力します。(日本語も入力できるけど使わない方が無難です)

ここでファイルの拡張子を指定しないと.ply形式で保存されます。拡張子に.stlを付けてやるとSTL形式(立体出力でおなじみの3DCGファイル形式です)で保存されます。

ファイルが保存されると以下の画面が表示されます。





ここでは「MyBody20130113.stl」というファイルを保存しました。

これをMeshLabという3DCGファイルビュワー&加工ツールで開くとこんな感じになりました。





見ての通り筆者が椅子に座っている姿です。

が、人間のように動きのある物体を取り込む場合はなかなか正確には行かないようです。

ReconstructMeには他にも高精細取り込み機能(BATファイル)も用意されているので、是非試して見て下さい。
ちなみに上の筆者モデルは通常モードの取り込みですが45万ポリゴンで構成されています。(汗)


それでは皆さんも是非低価格3Dスキャンライフをお楽しみください。(^^)


追記: 本記事を書きあげるのに2日かかったので、最初の出だしが「昨日」になってました。その他気付いた所を修正しました。(^^;)

「立体出力可能な形状モデルに作り変え(その10)」 立体出力発注そして試作弱音ハクさんの到着。

2013年01月11日 11時35分30秒 | MMDアバンドール


あにまさ式弱音ハクさん(あにまささんに許可を頂いた上で改造させて頂いてます)の立体出力改造作業シリーズ第10弾です。

遂に最初の立体出力物が完成しました!


先日、立体発注に関して色々とモメていた件を日記に書いてしまいましたが、

その後頂いたメールで「相貫体は問題ありません。」とのご連絡があり、直電までかけて頂いてデータについてあれこれ検証しているうちに「netFabb Studioでデータエラー検証処理中にデータ配列を乱してしまっていた」事が判明しました。私がデータ修正処理指定時に渡していたパラメータ値が適切でなかった事が原因でした。(汗)


その後データの問題がクリアされたため再び出力を発注しました。そしてその結果が本日届きました!




















実はenvisionTEC ULTRAで出力したのは今回が初めてです。その出力精度の高さと美しい出力物の表面に驚きました。

色は単色と言えどもここまで細部が完全に表現されている出力結果に感動しました。(^^)


今回の立体出力はデジモデさんにご協力を頂きました。デジモデさん色々ご無理をお聞きして頂きすみませんでした。そして素晴らしい出力品を送って頂きありがとうございました!(^^)(_ _)


気になる出力代金ですが、送料込みで3,980円です。膨大な情報量を受け止めて形にしてくれたお値段以上の出力結果に大満足です。(^^)


※ ハクさんの頭や肩に乗ってる棒状の集合体形状は「サポート」といって、
  出力時に出力ステージ(出力物を乗せる台)と出力物を支える構造物です。
  これは後で取り払い、最終的な完成物を得ます。

※ 今回はサポートの位置関係やアホ毛のチェックが未完だったため、アホ毛の
  再現をあきらめています。悪しからずご了承ください。(汗)

なお、立体出力に用いたデータは後程Bowrollで公開する予定です。(^^)