ブログ記事で何度か紹介いたしましたStructure Sensorのアプリケーション開発を行いました。

■Structure Sensor アプリ概要

PCCの活動として今後のビジネス展開を視野に入れアプリケーションの開発を行いました。
Structure Sensorを使用して画面の計測領域内にあるオブジェクトの幅、高さ、奥行きの最大サイズをリアルタイムで計測できるiPadアプリです。
現状は試作版のため以下の機能のみを実装しています。
・計測領域内にあるオブジェクトの幅、高さ、奥行きの最大サイズを計測。
・Scanボタンを押すことでトラッキングを行い色付3Dメッシュデータ化。
・計測領域内の床面を除いた点群データを取得し、PCDデータとして保存。


■アプリ開発について

<1>Structure Sensorとは
Structure Sensorにつきまして前のブログ記事(Occipital の Structure Sensor 使用レポート)でも紹介いたしましたがアメリカのOccipital社より販売されているiPadに装着して使用できるRGB-Dモバイル3Dセンサーです。
Structure Sensor公式ページ
Structure Sensorの詳細につきましては林氏のマイナビ記事でも紹介されております。

<2>Structure SDK
Structure Sensorを購入しDevelopers登録をすることでSDKデータを入手することができます。
SDKデータをもとに開発を行うことである程度開発の短縮になるようです。 ただし、SDKの情報が乏しいため開発の難易度は高いものと思われます。
当然ですが日本語サイトは無いため英語サイトがメインとなるようです。

<3>開発環境
Structure SensorはiOSアプリなのでMacのXcodeによる開発となります。
実装するiPadのOSバージョンに合わせてXcode、OSXのバージョンを合わせて開発を行う必要があります。今回実装を行うiPadのバージョンがiOS8.1だったため開発環境はOS X、Xcode共に最新版を使用して開発しました。
Structure SensorにはHacker Cable(SensorをUSBでPCにつなぐケーブル)が付属しておりましたがStructure SDKがiOS内でしか動作しないらしいのでケーブルを使用しませんでした。アプリの動作確認を行う場合は毎回iPadにアプリを入れて検証しなければならないので少し不便でした。


■サイズ計測アプリの使い方

<1>アプリを起動してサイズ計測
アプリを起動するとカメラからの映像が表示されます。

平面を認識画面上の立方体のラインが平面(床面)に吸着するように配置されます。
ヒートマップ表示部分が計測領域となりますので計測領域にオブジェクトが入るように調整します。
計測領域はピンチインアウトで拡大縮小できます。
画面下にオブジェクトのサイズがリアルタイムで表示されます。計測領域内のオブジェクトが変わるとリアルタイムで数値が変化します。
上画像では310×325×220サイズのゴミ箱を計測領域に表示させたときの計測サイズ結果となります。
多少の誤差は出ますがおよその数値を計測することができます。

以下、実際にオブジェクトをリアルタイムで計測している動画となります。
動画の計測物はW300mm×H300mm×D200mmサイズの箱です。
多少の誤差はありますがリアルタイムで近い数値まで計測できています。

<2>3Dスキャントラッキング(Scanボタンを押す)
3Dスキャン部分の機能はStructure SDKのサンプルデータをそのまま流用しております。
Scanボタンを押すとトラッキングが始まります。

Scanモードでは完了した箇所からメッシュが盛り付けられていきます。
全方向からスキャンすることでオブジェクト全体をスキャンすることができます。スキャンが完了したらComplateボタンを押してプレビューを見ることができます。


・X-Ray View … メッシュポリゴンのワイヤーフレーム表示
・Color View … メッシュにカラーテクスチャが貼られた状態
3Dスキャン機能は公式で配布されているアプリに実装されているものと同じです。

以下動画ではスキャン開始から各View表示までの流れを撮影しております。

<3>PCDデータの保存(PCD Saveボタンを押す)
PCD Saveボタンを押すとPCDデータをiPad内に保存します。

試作版のため保存アクションは特にありませんが最終的には保存完了時のアクション(アラートなど)を実装する予定です。


■今後のアプリ開発について

今回開発のサイズ計測アプリは現状、計測領域に含まれる床面以外のすべての最大サイズを計測するようになっております。 現状オブジェクトが複数ある場合は最大値となってしまうため個々のサイズ計測は実装していません。今後の開発で複数の場合には各オブジェクトを認識してオブジェクトごとのサイズを計測できるようにしていきたいと思っています。
またタップした2点間の距離を計測したり、トラッキング完了後のオブジェクトサイズを計測などの実装ができるよう引き続き開発を進めていきたいと思います。
今回ご紹介いたしましたアプリケーション詳細、開発にご興味のある方はお問合せフォームよりご連絡いただければ幸いです。

有限会社マグネットインダストリー
西内伸太郎

これまでの記事で紹介してきました3Dプリンタ、MeshLab(加工ソフト)、Structure Sensor(撮影カメラ)により3D撮影を行い、3Dデータを加工し、3Dプリントを行うことができるようになりましたので実際に行ってみました。

■Structure Sensorで撮影

以前の記事で撮影した方法で撮影を行います。
「itSeez3D」で撮影が完了するとPCにデータを移します。
(メール送信もしくはSketchfabへのアップでデータを移せます)


■MeshLabで撮影した3Dデータを加工

<1>撮影データの読み込み
Structure Sensor「itSeez3D」からの保存データはPLY、OBJデータなのでMeshLabではどちらの形式もサポートされております。
以前の記事でも紹介しましたように、「File > Import Mesh… > 読み込むファイルを選択」でPLYもしくはOBJを読み込みます。


<2>MeshLabによるデータの加工
Structure Sensor「itSeez3D」からの3Dデータはメッシュ形状で閉じているため特に加工する箇所はありません。 もし形状の穴埋めや、変形させたい箇所などがあれば加工を行うことができます。
下図ではモデルの後頭部にわざと穴をあけたものに穴埋め処理を行っております。

「Filters > Remeshing Simplification and Reconstruction > Close Holes」
で穴埋めをすることができます。

赤塗り箇所が穴埋めされた箇所となります。

そのほかにもスムージングをかけたり、必要ないメッシュを削除するなど様々な加工機能があります。

<3>3Dデータ書き出し
3DプリンタはSTL形式の読み込みとなるので書き出し形式をSTLにします。
「File > Export Mesh As… > 保存先を選択」(File of typeはSTLを指定します)

■3Dプリンタで出力

MeshLabから書き出しされたSTLデータを3Dプリンタにて出力します。
(右図:3Dプリンタソフトにてプリント用データに変換)

実際のプリント結果 顎下の首回り部分はそのままですとプリントがうまくできないのでサポートを入れました。
それでも若干プリントがうまくいかず顎部分は少し形状が崩れました。
全体的な雰囲気は画面でデータ確認したものと同じような感じに仕上がりました。

■まとめ

Structure Sensor「itSeez3D」、MeshLabでデータを見ているときはテクスチャが貼られているためある程度のリアリティがありますが3Dプリントして色無しのモデルと見るとやはり見劣りするもとのなりました。 やはり3Dプリントするときもテクスチャ情報(色)を再現できるプリンタの方が良いと今更ながらに感じました。

今回は3D撮影→編集→3Dプリントという流れを試してみましたが実際の活用法としては現実世界のものをただプリントするだけではあまり意味はないように思います。
現実世界を3D撮影しその現実世界に3DCGの造形物などを融合し(モデルを造形し)出力することで新たな価値が生まれるのではないかと感じました。
以上、Structure Sensorで撮影した3DデータをMeshLabで加工、変換して3Dプリントするまでを実際に試したレポートでした。

有限会社マグネットインダストリー
西内伸太郎

3Dスキャン、3Dプリントなど3Dデータを扱うことが増えてきましたのでデータの編集、変換などを行えるフリーのソフトウェアMeshLabを紹介します。

■MeshLabとは

MeshLabはWindows、Macで使用できるフリーのソフトウェアです。
操作、機能が絞られており3D三角メッシュを編集、加工やファイル変換できるソフトです。
3Dスキャニングが出始めのころに高額な3Dスキャナと合わせて加工ソフトがリリースされておりましたがソフト自体も高額であったために開発されたフリーソフトウェアが「MeshLab」となります。
インストーラは公式サイトより無料でダウンロードすることができます。

ソフト画面はこのようにシンプルです。
使用したところ基本的には3Dデータを読み込み、編集加工することに特化しておりMeshLab内でゼロからモデリングをしていく一般的な3DCGソフト(shade、Maya、3dsMax)のような使い方ではないようです。


■MeshLabの基本操作について


<1>ファイルの読み込み
File > Import Mesh… > 読み込むファイルを選択

●インポート可能な3Dデータ
PLY, STL, OFF, OBJ, 3DS, COLLADA, PTX, V3D, PTS, APTS, XYZ, GTS, TRI, ASC, X3D, X3DV, VRML, ALN形式を読み込むことができます。
※PCLから点群を書き出す際にはPCDデータを使用することがありますがPCDデータはサポートされていないようですので直接MeshLabに読むことはできません。

●エクスポート可能な3Dデータ
PLY, STL, OFF, OBJ, 3DS, COLLADA, VRML, DXF, GTS, U3D, IDTF, X3D形式で書き出しが可能。
エクスポートは
・File > Export Mesh… > 保存内容の設定で書き出し
・File > Export Mesh As… > 保存先を指定、保存内容の設定で書き出し

<2>モデル閲覧の操作方法
●マウスドラッグ … モデルの回転
●Ctrl + マウスドラッグ … 平面移動
●マウスホイール(Shift + マウスドラッグ)(Alt + マウスドラッグ) … ズーム
●Shift + マウスホイール:パースの強さ変更
※Ctrl、Shift、Altキーを押し操作を行うと下画像のようにP、S、Zと表記が出ます。

●Ctrl+Shift+ドラッグ:ライトの照射方向(光の方向がドラッグにより変更できる)


<3>プレビュー表示
ソフト画面上部のツールバーに並んでいるアイコンからモデルのレンダリング表示モードを選択することができます。
・Bounding Box … モデルの最外形を箱で囲います。
・Points … モデルのメッシュ頂点のみ表示します。
・Wire frame … メッシュの線のみ表示します。
・Flat Lines … メッシュの線と面で表示します。
・Flat … メッシュ面のみ表示します。
・Smooth … メッシュ面を滑らかにして表示します。
・Texture … メッシュ面にテクスチャを貼り付けて表示(テクスチャが無い場合は表示されません)

●その他のシェーディング表示
Render > Shader > Shaderの種類を選択
パラメータウィンドウが表示されるますので詳細設定を行うことができます。


<4>編集方法
編集方法につきましては次の記事でPCDデータをメッシュ化する方法を紹介いたしますのでそちらで紹介したいと思います。


■まとめ

今回紹介いたしましたMeshLabではゼロから3Dモデリングを行うことはできませんが読み込んだメッシュの編集には有効なツールのように思います。また複数の読み込み、書き出し形式をサポートしていますので単純なデータ形式変換としても使えるソフトウェアだと思います。3Dデータを扱う方であればインストールをしておくと大変便利なツールの一つになると思います。

以上、MeshLabの概要紹介でした。次の記事ではPCDデータ(点群)をMeshLabでメッシュ化する方法を紹介したいと考えております。

有限会社マグネットインダストリー
西内伸太郎

本コンソーシアムに関するお問合せ、PCL・3D関連のご相談はお問合せフォームよりご連絡ください。

PCL
Copyright (C) 2014 PointCloudConsortium All Rights Reserved.