Up:Tutorial?     Previous:自作の形状ファイルの読み込み     Next:実世界の人・物の取り込み


Kinect Fusionを利用したロボットのスキャン

Kinect Fusionインストールと起動

Kinect for Windows SDK v1.7,Kinect for Windows Developer Toolkit v1.7.0を以下のURLからそれぞれインストールします.

http://www.microsoft.com/en-us/download/details.aspx?id=36996 (Kinect for Windows SDK v1.7) http://www.microsoft.com/en-us/download/details.aspx?id=36998 (Kinect for Windows Developer Toolkit v1.7.0)

Kinect for Windows Developer Toolkitを起動すると図のようなウィンドウが開きます.

3d_scan_01.jpg

ロボットの3Dスキャン

Kinect Fusionを起動する前に,Kinectをパソコンに接続しておきます.

Kinect Fusion Explorer-WPFの[Run]を押して起動します.

3d_scan_02.jpg

起動すると図のようなウィンドウが開きます.

3d_scan_03.jpg

ロボットの大きさによってDepth Thresholdのパラメータを調節します.

ロボットが映っていることを確認して,[Reset Reconstruction]を押します.

ゆっくりとKinectを動かして,ロボットを全方向から撮ります.

一番大きいウィンドウにロボットのメッシュができあがっていきます.

3d_scan_04.jpg

撮り終えたら,[OBJ]にチェックを入れて[Create Mesh]を押します.

3d_scan_05.jpg

スキャンしたモデルデータの修正

Blenderのインストールと起動

以下のURLの手順に従ってBlenderをダウロードして,起動します.

http://blender.jp/modules/xfsection/article.php?articleid=277

Blenderを起動すると図のようなウィンドウが開きます.

3d_scan_06.jpg

不要なオブジェクトの削除

初期配置されている不要なオブジェクトを削除します.

オブジェクトを右クリックすると,選択されたオブジェクトがオレンジ色に縁取られます.

オブジェクトやポリゴンの選択は基本的にマウスの右クリックを利用します.

カメラ,ライト,立方体をそれぞれ選択します.

[x]を押すと図のようなポップアップが表示されるので[削除]を押して削除しておきます.

3d_scan_07.jpg

モデルデータのインポート

インフォメーションウィンドウの[ファイル]から[インポート]をクリックします. [Wavefront(.obj)]を選択し,ファイルを指定してインポートします.

3d_scan_08.jpg

インポートすると,図のように3Dビューにオブジェクトが描画されます.

3d_scan_09.jpg

マウスのホイールクリックで回転,[Shift]を押しながらホイールクリックで上下左右の移動,[Ctrl]を押しながらホイールクリックでズームイン/ズームアウトの視点変更ができます.

視点変更はテンキーでも行うことができます. [1]を押すとxz平面,[3]でyz平面,[7]でxy平面を見ることができます.[2],[8]で上下に15度ずつ回転,[4],[6]で左右に15度ずつ回転させることができます.

頂点数の削減

不要なメッシュの削除

右クリックでオブジェクトを選択し,[Tab]を押してエディットモードにします.

オブジェクトモードと同様に,選択された頂点はオレンジ色になります.はじめは図のように全選択になっています.

3d_scan_10.jpg

ロボット以外の,床や壁などを削除します.[Ctrl]を押しながら左クリックで範囲選択をします.

[x]を押すと図のように削除メニューが出るので,[頂点]を押して頂点を削除します.

3d_scan_11.jpg

重複頂点の削除

重なった頂点や距離の近い頂点は不要なので削除します.

エディットモードで[a]を押して全選択します.

頂点が選択された状態で[a]を押すと,選択解除されます.その時はもう一度[a]を押してください.

[w]を押すとスペシャルメニューが表示されます.[重複頂点を削除]を押してください.

3d_scan_12.jpg

ウィンドウ左下に図のようなメニューが表示されます.適当な結合距離を決めて入力します.

3d_scan_13.jpg

結合距離を変えると図のように距離の近い頂点同士が結合され,頂点が等間隔に並んだようなメッシュになります.

3d_scan_14.jpg

ポリゴン数の削減

[Tab]を押してオブジェクトモードに切り替えます.

ウィンドウ右側のモディファイアに切り替え,[追加]を押し,[ポリゴン数削減]を押します.

3d_scan_15.jpg

[平面]を選択します.

3Dビューのオブジェクトを見ながら角度制限を調節します.

[適用]を押すと平面に近い形状の細部が削減されます.

3d_scan_16.jpg

原点の移動

原点をオブジェクトの中心に移動させます.

オブジェクトの原点がオブジェクトを回転させる際の中心になります.

ショートカットキー[Shift]+[Ctrl]+[Alt]+[c]を押します.

図のようにポップアップが表示されるので[原点を重心に移動]をクリックします.

3d_scan_17.jpg

オブジェクトの回転

オブジェクトモードでの回転はモデルデータの回転には反映されないので注意してください.

オブジェクトモードでの回転は固定しておくと勘違いが起きづらくなります.

固定するには,[n]を押してトランスフォームウィンドウ開いてください.

図の黄色い枠で囲まれた回転のそれぞれx,y,z軸の南京錠のアイコンを押してください.

3d_scan_18.jpg

エディットモードで回転を行います.

[Tab]を押してエディットモードに変更します.

[a]を押して,頂点を全選択します.

[r]を押すとマウスカーソルが変わります.

マウスを動かすと回転させることができます.

3d_scan_19.jpg

[r]を押した後に,[x],[y],[z]のいずれかを押すと軸を指定して回転させることができます.

[Shift]を押しながらマウスを動かすと,回転量が減ります.

テンキーで視点を変えながら,軸ごとに回転の調整をすると作業が単純化できます.

オブジェクトの分割

オブジェクトをパーツごとに分割します.

分割するパーツの頂点を選択します.

[p]を押すと,別オブジェクトに分離というメニューが出てきます.

[選択物]を押すと,選択された部分が別のオブジェクトとして分割されます.

3d_scan_20.jpg

オブジェクトが増えると,右上のアウトライナーの表示も随時更新されます.

オブジェクトの名前をダブルクリックして名前を変更することができます.

変更してそれぞれに名前をつけておくと編集がしやすくなります.

目のアイコンをクリックすると表示/非表示を変更することができます.

マウスカーソルのアイコンは選択可/不可,カメラのアイコンはカメラへの表示/非表示を操作できます.

3d_scan_21.jpg

パーツのモデリング

モデリングするパーツ以外は非表示にするとモデリングが簡単になります.

頂点の移動

頂点を選択すると,マニピュレータが出てきます.

赤い矢印がx軸,緑がy軸,青がz軸方向を示しています.

マニピュレータをドラッグすると,軸上で頂点を移動させることができます.

回転や拡大縮小と同様に,[Shift]を押しながらドラッグすると細かい移動が可能になります.

3d_scan_22.jpg

[Shift]を押しながら右クリックで,頂点を複数選択して辺や面を動かすこともできます.

面(辺)の生成

3点以上の頂点を選択し,[f]を押すと面が生成されます.

頂点を2点選択して[f]を押すと,辺が生成されます.

UV展開

UV/画像エディター

3Dビューウィンドウの右上の斜線部分をドラッグし,画面を分割します.

3d_scan_23.jpg

左のウィンドウをUV/画像エディターに変更する.

3Dビューウィンドウの左下にある,エディタータイプのボタンをクリックして、[UV/画像エディター]を押します.

3d_scan_24.jpg

図のように左のウィンドウがUV/画像エディターに変更され,3DビューとUV/画像を同時に見ることができるようになります.

3d_scan_25.jpg

シームを付ける

オブジェクトの色が変わる位置にシーム(縫い目)をつけます.

3Dビューウィンドウの左のタブを [シェーディング/UV]に切り替えます.

シームを付けたい頂点を選択し,[シームを付ける]を押します.

3d_scan_26.jpg

シームがつくと,選択されている辺のオレンジのラインに,赤いラインが重なります.

シームが必要な箇所全てにシームをつけます.

展開

[a]を押して頂点を全選択し、左のタブにあるUVマッピングの[展開]を押して展開します.

展開図がUV/画像エディターに表示され,シームで切り離されているかどうかが確認できます.

3d_scan_27.jpg

シームを付け忘れた場合は新たにシームを付けた後,もう一度頂点を全選択して[展開]を押すと展開図が更新されます.

展開図の保存

展開図を画像としてエクスポートします. UV/画像エディターウィンドウの下にある[UV]から,[UV配置をエクスポート]を押します.

ファイル形式を選択し,画像を保存することができます.

3d_scan_28.jpg

オブジェクトのエクスポート

エクスポートしたいオブジェクトを選択します.

インフォメーションウィンドウから[ファイル],[エクスポート],[X3D Extensible3D(.x3d)]を押します.

3d_scan_29.jpg

[選択物のみ]にチェックをいれ,フォルダ,ファイル名を確認し,[X3Dをエクスポート]を押してエクスポートします.

3d_scan_30.jpg

x3dファイルの生成

x3dファイルの変換

エクスポートしたx3dファイルをSIGVerse用のx3dファイルに変換する必要があります.

以下のURLを参考にして変換します.

▼一般的な形状ファイルのSIGVerse用X3D形式への変換

http://www.sigverse.org/wiki/jp/?%E4%B8%80%E8%88%AC%E7%9A%84%E3%81%AA%E5%BD%A2%E7%8A%B6%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AESIGVerse%E7%94%A8X3D%E5%BD%A2%E5%BC%8F%E3%81%B8%E3%81%AE%E5%A4%89%E6%8F%9B#b510dec7

x3dファイルの記述

各パーツはそれぞれ別のオブジェクトとしてx3dファイルになっています.

バラバラになった各パーツを1つのx3dファイルに記述しなおす必要があります.

ヘッダの記述

x3dを記述するためのヘッダとPROTO宣言部を記述します.

PROTO宣言部はHumanoidノード,Jointノード,Segmentノードの定義でできた部分です.

詳しいソースコードはサンプルファイルを参照してください.

関節の定義

モデルにHumanoidノードが一つだけ存在するようにします.

関節はJointノードを用いて定義します.

nameに関節の名前を指定します.translationに親ノードからの相対座標を指定します.

jointTypeに”free”,”rotate”,”slide”,”fixed”のいずれかを指定します.

jointAxisに 関節のベクトルを指定します.

1つの関節に,2自由度,3自由度与えたい場合は,JointノードにさらにJointノードを記述します.

jointAxisを変えることで,自由度が増えます.関節の親子関係も同様に,JointノードにさらにJointノードを記述します.

オブジェクトの形状の記述

Jointノードに1つ以上のLinkノードを記述します.

Linkノードにオブジェクトの形状を記述します.

オブジェクトの形状はTransformノードに記述されています.

コンバートしたx3dファイルをテキストエディターで開きます.

コンバートしたx3dファイルの<Transform ~ </Transform>をコピーします.

作成したx3dファイルのリンクさせたい関節のLinkノードにペーストします.

詳しい記述箇所はサンプルファイルを参照してください.

参考URL

▼ロボット・環境モデル記述形式 http://www.openrtp.jp/openhrp3/jp/create_model.html 


Attach file: file3d_scan_30.jpg 891 download [Information] file3d_scan_29.jpg 880 download [Information] file3d_scan_28.jpg 1013 download [Information] file3d_scan_27.jpg 904 download [Information] file3d_scan_26.jpg 894 download [Information] file3d_scan_25.jpg 861 download [Information] file3d_scan_24.jpg 940 download [Information] file3d_scan_23.jpg 957 download [Information] file3d_scan_22.jpg 971 download [Information] file3d_scan_21.jpg 960 download [Information] file3d_scan_20.jpg 919 download [Information] file3d_scan_19.jpg 930 download [Information] file3d_scan_18.jpg 842 download [Information] file3d_scan_17.jpg 956 download [Information] file3d_scan_16.jpg 956 download [Information] file3d_scan_15.jpg 1021 download [Information] file3d_scan_14.jpg 904 download [Information] file3d_scan_13.jpg 971 download [Information] file3d_scan_12.jpg 985 download [Information] file3d_scan_11.jpg 952 download [Information] file3d_scan_10.jpg 950 download [Information] file3d_scan_09.jpg 985 download [Information] file3d_scan_08.jpg 972 download [Information] file3d_scan_07.jpg 912 download [Information] file3d_scan_06.jpg 985 download [Information] file3d_scan_05.jpg 1015 download [Information] file3d_scan_04.jpg 913 download [Information] file3d_scan_03.jpg 950 download [Information] file3d_scan_02.jpg 1009 download [Information] file3d_scan_01.jpg 985 download [Information]

Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2015-01-29 (Thu) 12:30:51 (3373d)