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

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

「立体出力可能な形状モデルに作り変え(その13)」Makerbot.Thingiverseに登録してみました!

2013年01月18日 10時55分18秒 | Kinect活用術



折角公開モデルを作成したので、アメリカデビューを果たしてもらう事にしました。

但しこれはSTLデータ版ですので色つき立体出力は出来ません。(汗)

しかも色々データ的に弱い部分があるので、ABSタイプの3Dプリンターでは出力が難しいと思います。

(もしもABSタイプのプリンターをお持ちの方がいらっしゃったら、誰か試して見て下さい。)


アメリカデビューと言っても、Makerbot.ThingiverseというMaker系ムーブメントを担うSNSサイトです。

ここでは3Dプリンターで印刷可能な3DCGデータが公開されています。

様々なデータが存在しているようで、中には玩具やすぐに遊べるゲームのコマなどのデータがあったりします。

筆者はそれほど英語が得意という訳ではないのですが、説明文位ならGoogle翻訳の助けを借りて何とかかけます。

しゃべくるのは得意じゃないですがヒアリングならそこそこ分かる位です。


しかし、いきなり「弱音ハク」なんて後悔しても向こうの人がどれだけ知っているやら・・・。(汗)

余り女性型のフィギュアは見かけないっぽいので、バリエーションの一つになれば幸いです。


クリエイティブコモンズのCC-BY-NC(Attribution - Non-Commersial - Creative commons)に従い公開しています。


「立体出力可能な形状モデルに作り変え(その11)」 フルカラー立体出力発注!

2013年01月15日 12時18分27秒 | Kinect活用術


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

前回の立体出力品到着により、フルカラー立体出力への具体的な検討が前進しました。


しかしながら、前回の立体出力品を見てて以下の3点が欠落している事に気付きました。


(1)アホ毛
(2)ヘッドホン+インカム
(3)袖の留め具(?)パーツ


このうち(1)についてはアホ毛自体が出力に耐えられない細さである事が出力前時にデジモデさんからのご連絡で判明していたので、今回は省略して出力してもらうように依頼してました。

しかし(2)と(3)は私がデータを追加していなかった事が原因です。

そこでこれらの3点をきちんと出力するようにデータを付加すると共に、
今回は石膏粉末積層出力であるため強度の確保を考えた上でデータの見直しを行なう事にしました。
それと、出力サイズを前回の試作出力より若干大きめに縮尺変更する事で強度的に危険そうなパーツの強化を行なう事にしました。特にアホ毛は前回の出力で強度不足が指摘されてしまっていたので、今回は前回の倍以上に太くごっついアホ毛に変更されました。しかし出力後はある程度痩せることが予想されますので、これでもOKです。何よりも強度を保ったまま出力される事が重要です。

最終的に、台座から頭髪(アホ毛)までの高さは約120mm。下は半径68mmの台座を設けて出力モデルを安定して立てるようにしました。



作成したデータはZPrinter出力用のためVRML97(VRML2.0)形式のファイルとして出力しました。これをMeshLabで見ると以下のような形になります。





VRML形式のファイルなのでブラウザ上でも見る事が出来ます。但しCortona3Dというブラウザ用VRMLビュワーをインストーすしておく必要があります。





果たしてこれでどうなるか。お値段の方も気になる所ですが見積もりが上がってくるのを待ちます。(^^;)

【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日かかったので、最初の出だしが「昨日」になってました。その他気付いた所を修正しました。(^^;)

【Kinect】ReconstructMeでKinectを3Dスキャナに変身させる。(速報その2)

2013年01月10日 20時58分08秒 | Kinect活用術


やったーー!!うちのKinectが3Dスキャナに変身しました!!


昨日の日記【Kinect】ReconstructMeでKinectを3Dスキャナに変身させる。(速報)の続報です。

悪戦苦闘の結果、遂にうちのノートPC(HP Pavillion dv6-7000)に接続したKinect(Xbox版)で、昨日紹介したReconstructMeをインストールして上図のような3Dスキャンに成功しました。

3Dスキャンなので、当然結果をSTLファイルに出力してファイルビュワーで3DCGモデルとして眺める事が出来ます。








KinectのセットアップからReconstructMeのインストールまでについて、明日詳しくご報告致します。(^^)

【Kinect】ReconstructMeでKinectを3Dスキャナに変身させる。(速報)

2013年01月09日 15時19分56秒 | Kinect活用術


本日ツイッターからピックアップした情報です。

ReconstructMeというWindows用の3Dスキャニングツールが公開されています。

PC用或いはXbox360用のモーションキャプチャリングデバイスである「Kinect(キネクト)」を使って手近な立体物の3DCGデータを取り込むというツールです。

この動作を確かめるべく久々にKinectを引っ張り出して接続し、MMDやMMMでモーションキャプチャーが出来る事を確認したのでしたが、
ReconstructMeの動作確認には至りませんでした。

明日続報をお伝えします!(汗)