Up:Tutorial     Previous:実世界のロボットの取り込み


123D Catchを用いて実世界のオブジェクトの3Dモデルを得る

123D Catchのインストール

123D Catchを用いて実世界のオブジェクトの3Dモデルを得ます。

  • こちらのページから「PC Download」をクリックして123D Catchをパソコンにインストールします。
  • 123D Catchは、カメラで様々な方向から撮像した画像を用いてオブジェクト3Dモデルを構成します。
  • パソコンに接続したカメラも利用できますが、iPhoneを利用する事も可能です。
  • iPhoneを利用する場合は、「Download on the App Store」をクリックして123D Catchのアプリケーションをインストールします。

123D Catchによるオブジェクトの撮像

ここでは、人の腕と手の部分をiPhoneのアプリとカメラを使って撮像して、3Dモデルを得る場合について説明していきます。

  • まず、対象を全方向から撮像できる空間を下図のように確保します。 このとき、対象の下に3Dモデルを構成するための基準となるものを敷くと欠損のない3Dモデルを得やすくなります。 ここでは、テクスチャのあるタオルを敷いています。

WS100.jpg

  • 次に、対象の周囲360度から数十枚程度の写真を撮ります。
  • 最後に、3Dモデルを構成するため、サーバーに写真を送信します。

123D Catchによる3Dモデルの構築とエクスポート

ここからは、パソコンにインストールした123D Catchによる作業です。

  • まず、サーバーから構成された3Dモデルをロードします。以下のように周囲の環境を含む3Dモデルが得られます。

WS101.jpg

  • 次に、ツールを使って以下のように対象以外の領域を取り除いていきます。

WS102.jpg

  • 以下のように対象以外の領域を取り除いたら、「File」→「Export Capture As」→「OBJ(obj)」で出力します。

WS103.jpg

  • この場合、3次元形状の「arm.obj」、それに貼り付ける画像の「arm_tex_0.jpg」、「arm_tex_1.jpg」、「arm_tex_2.jpg」、対応関係を記述したファイル「arm_tex.mtl」が出力されました。このとき、貼り付ける画像の枚数は、撮像環境によって異なります。

テクスチャ有りの.objファイルからSIGVerse用の.x3dファイルを作成する

blender(2.73)を使って,SIGViewerに表示するアバターの表面にテクスチャを貼る方法を説明します.

前提など

前提などは次の通りです.

  • 123D Catchで.objが作成されていること
    具体的には,次の3種類のファイルが同じフォルダに配置されていること
    1. 3次元形状ファイル「arm.obj」
    2. テクスチャとして貼り付ける画像ファイル群「arm_tex_0.jpg」「arm_tex_1.jpg」「arm_tex_2.jpg」
    3. オブジェクトの3次元座標と画像の座標の対応関係を記したファイ「arm_text.mtl」
  • blenderがインストールされていること(日本語化してあるとなお良い)
  • blenderの基本的な操作方法(オブジェクトの表示倍率変更や視点の移動など)は把握していること
  • できあがる.x3dファイルは関節を無視したもの

テクスチャの画像ファイルの配置

テクスチャとなる画像は,今回の例では「arm_tex_0.jpg」,「arm_tex_1.jpg」,「arm_tex_2.jpg」の3枚の画像とします.
これらの画像を,SIGViewerのテクスチャ画像用フォルダに配置します.
今回の例では「C:\Program Files (x86)\SIGViewer_2.3.0\SIGViewer\media\materials\textures\」に配置しました.

.objファイルのインポート

blenderを起動して,ファイル->インポート->Wavefront(.obj)をクリックします.

WS000000.JPG

WS001.JPG

読み込む.objファイルを指定してインポートすると次のような画面になります.

WS035.JPG

ポリゴン数の削減

  • お使いのPCの描画性能が高い場合,この作業は不要かもしれません.
  • 一般的に123D Catchが生成する.objファイルは非常に高精細であるため,SIGViewerの描画に時間がかかりすぎるというデメリットがあります.
  • そこで,まずはポリゴン数を削減して描画への負担を軽くします.

読み込んだオブジェクト上で右クリックして, 画面右側にある

WS003.JPG

WS004.JPG

にします.

スパナのマーク(モディファイアー)をクリックして「ポリゴン数削減」をクリックします.

WS005.JPG

比率:     1.0000 となっているところをクリックすると数値を入力できるので,削減後のポリゴン数の比率を入力します.

WS006.JPG

今回の例では比率を0.2000にします.

WS007.JPG

「面数」のところに削減後の面数が表示されます. オブジェクトも,表面の凹凸が粗くなったことがわかると思います.

「適用」ボタンをクリックします.

.x3dファイルの保存

オブジェクトの対話モードを「編集モード」に切り替えて,ファイル->エクスポート->X3D Extensible 3D(.x3d) をクリックします.
ここで保存する.x3dファイル名を,ひとまずarm_right.x3dとしておきます.

WS028.JPG

この.x3dファイルの内容を使って,SIGVerseのアバターの情報を記述している.x3dファイルを変更していきます.

アバターの選択

この例では,Man-nii.x3dを元のアバターとします.

WS029.JPG

作業ディレクトリをサーバ(Ubuntu)側に用意します.作業ディレクトリは /home/workspace/ としておきます.

元のアバターの.x3dファイルを作業ディレクトリにコピーします.今回の例では,/home/sigverse-2.2.0/share/sigverse/data/shape/man_nii_v2.x3dをコピーします.

サーバ(Ubuntu)側のsigverseのディレクトリ(おそらく/home/sigverse/sigverse-2.2.0/share/sigverse/Data/xml/)から,Man-nii.xmlを作業ディレクトリにコピーします.

アバターの腕へのテクスチャ貼り付け

man_nii_v2.x3d のある部分を,arm_right.x3dの内容に置き換えるために,二つのファイルをテキストエディタで開きます.
(注意:arm_right.x3dの方は,非常に長い文字列の行が含まれているため,テキストエディタの動作が多少重くなります)

テキストエディタでの作業手順を次に示します(各ファイルは作業ディレクトリ内のものです).

  1. man-nii-v2.x3dの874行目~982行目を削除します.(<Transform>の後の<Shape>から,12回連続で</ProtoInstance>がある箇所の3つ目の</ProtoInstance>までを削除)
  2. arm_right.x3dの29行目~87行目(<Shape>から</Shape>までを画像の枚数分だけ.今回は3枚分なので<Shape>~</Shape>を3個分)をコピーして,man-nii-v2.x3dの874行目(先ほど削除した箇所)に挿入します.
  3. man-nii-v2.x3dに挿入した内容の最後の位置(最後の</Shape>)の後に行を追加して,「</Transform>」と記述します.
  4. man-nii-v2.x3dの875行目(<Appearance>)の後に行を追加して,「<ImageTexture DEF="IM_arm_tex_0_jpg" url="arm_tex_0.jpg" />」と記述します.
  5. 次の「<Appearance>」の後に「<ImageTexture DEF="IM_arm_tex_1_jpg" url="arm_tex_1.jpg" />」の行を挿入します.
  6. その次の「<Appearance>」の後に「<ImageTexture DEF="IM_arm_tex_2_jpg" url="arm_tex_2.jpg" />」の行を挿入します.
    • 手順4~6の"IM_arm_tex_0_jpg"と"arm_tex_0.jpg"の番号「0」や「1」などは,直後の行の「<Material DEF="MA_Texture_0"」の番号「0」や「1」に合わせます.
    • 今回はたまたま0→1→2の順になっていましたが,順番が変わっているときもあります.
  7. <Material>タグのdiffuseColor ~ transparencyを次のように変更します.
    変更前WS030.JPG → 変更後WS031.JPG
    MA_Texture_1とMA_Texture2にも同様の変更を行います.
    • この変更は,テクスチャの色表現(光の反射)に関する変更なので,場合によっては変える必要が無いかもしれません.
    • 今回の例では,ここのパラメータを変更しないと,腕の表面の色がまだらになって不自然でした(もっとも,変更しても若干の不自然さは残ります).
  8. 編集中のman-nii-v2.x3dを,「man-nii-v2_realrighthand.x3d」という名前で作業ディレクトリに保存します.
  9. Man-nii.xmlの「<filename>man-nii-v2.x3d</filename>」を「<filename>man-nii-v2_realrighthand.x3d</filename>」に変更し,このMan-nii.xmlを作業ディレクトリに保存します.

ここで保存したMan-nii.xmlをSIGServerの世界ファイルに記述して作業ディレクトリ内でSIGServerを起動すれば,SIGViewerでアバターの状態を確認することができます.

WS032.JPG

テクスチャのついた腕が肩の先にありますが,ちゃんと着いていません.
腕全体の大きさも合っていないようですし,色も心なしか黒っぽいです.
(テクスチャ画像を画像編集ソフトで明るくするなどしましょう)

スケールと回転と位置の微調整

腕のスケールと回転,平行移動を行います.

先ほど保存しておいたblenderファイルをblenderで開いて,スケールの変更(拡大)と回転を行います.blenderの操作方法については割愛します.
スケールの変更と回転を行った結果を「arm_right_scaled_rotated.x3d」という名前で.x3dファイルにエクスポートします.
先ほどのアバターの腕へのテクスチャ貼り付けと同じ作業をしてもいいのですが,変更点は3次元オブジェクトの点の座標だけなので,次の手順で変更が適用できます.

  1. (スケールの変更と回転)blenderで先ほどのオブジェクトファイルに対してスケールの変更と回転を行い,「arm_right_scaled_rotated.x3d」という名前で.x3dファイルにエクスポートします.
    エクスポートしたら,Ubuntuの作業ディレクトリにファイルをコピーします.
  2. man-nii-v2_realrighthand.x3dの
    WS033.JPG
    の,<IndexedFaceSet ... ~ </IndexFaceSet>を,arm_right_scaled_rotated.x3dの<IndexedFaceSet ... ~ </IndexFaceSet>で上書きして保存します.
  3. (平行移動)man-nii-v2_realrighthand.x3dの850行目(RARM_JOINT4の記述が始まった直後辺り)の後に行を追加し,「<fieldValue name='translation' value='0.0 2.0 1.0' />」と記述します.
    • value='[x軸方向の移動量 y軸方向の移動量 z軸方向の移動量]'で移動量を記述します.
  4. SIGServerを起動し,SIGViewerで腕の配置を確認しながら,適切な位置に腕が配置されるまで以上を繰り返します.

結果

結果は次のようになりました.

WS036.JPG WS037.JPG


Attach file: fileWS033.JPG 364 download [Information] fileWS037.JPG 367 download [Information] fileWS036.JPG 368 download [Information] fileWS032.JPG 371 download [Information] fileWS035.JPG 382 download [Information] fileWS103.jpg 364 download [Information] fileWS102.jpg 369 download [Information] fileWS101.jpg 217 download [Information] fileWS100.jpg 370 download [Information] fileWS031.JPG 390 download [Information] fileWS030.JPG 369 download [Information] fileWS029.JPG 382 download [Information] fileWS028.JPG 371 download [Information] fileWS007.JPG 361 download [Information] fileWS006.JPG 378 download [Information] fileWS005.JPG 383 download [Information] fileWS004.JPG 370 download [Information] fileWS003.JPG 366 download [Information] fileWS002.JPG 215 download [Information] fileWS001.JPG 367 download [Information] fileWS000000.JPG 365 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-02-05 (Thu) 12:52:59 (1381d)