
MatterportのOBJモデルをGLTF形式に変換してAWS IoT TwinMakerにインポートしてみた #reinvent
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、CX事業本部 IoT事業部の若槻です。
本エントリのアイキャッチの通り、つい先日開催されたAWS re:Invent 2022のキーノートでWerner氏がMatterportとAWS IoT TwinMakerの連携について触れる場面がありました。それぞれを軽く説明しますと、
- Matterport:米Matterport, Inc.が提供する空間データプラットフォーム
- AWS IoT TwinMaker:現実世界のデジタルツインを簡単に作ることができるAWSサービス
です。それを受けて前回のエントリでは、Matterportを使用して私の自宅の3Dモデルを専用スマホアプリでスキャンして作成してみました。

そしてスキャンデータをそのままAWS IoT TwinMakerへインポートしたかったのですが、MatterportのOBJモデルをAWS IoT TwinMakerで使えるようにするためにはGLTF形式へのデータ変換処理が必要でした。その変換手順はというとAWSから提供されたドキュメントがあったのでこちらをチェックすれば良さそうです。
- 英語版:How to convert and compress OBJ models to GLTF for use with AWS IoT TwinMaker | The Internet of Things on AWS – Official Blog
- 日本語版:AWS IoT TwinMaker で使用するために OBJ モデルを GLTF に変換および圧縮する方法 | Amazon Web Services ブログ
ただし上記手順は、すでに用意されているサンプルのOBJモデルを変換する内容だったのですが、まず参考のためにということで手順に従ってやってみました。(実際のスキャンデータのIoT TwinMakerでの使用は次回以降でやってみます)
やってみた
サンプルデータ(MatterPak™ Bundle)のダウンロード
MatterPak™ Bundleのサンプルデータをダウンロードします。
今回はPro2のデータを使用します。

ページ内(Dropbox)の[Download]をクリックするとサンプルデータ(.zip)がダウンロードされます。

ちなみにMatterPak™ Bundleは次のようなOBJモデルデータを構成するファイルが含まれます。
- Colorized point cloud (.XYZ)
- Reflected ceiling plan image
- (.JPG) Multiple files if multiple floors
- (.PDF) All floors in one file
 
- High-resolution floor plan image. This is not the Schematic Floor Plans. This is similar to the ceiling plan image but of the floor.
- (.JPG) Multiple files if multiple floors
- (.PDF) All floors in one file
 
- 3D mesh file (.OBJ) including the necessary texture map image files (.JPG)
モデル変換Lambda関数でGLTF形式に変換する
手順中の[Lambda Model Convert deployment package]をクリックして、モデル変換Lambda関数のデプロイパッケージ(.zip)をダウンロードします。

北部バージニアリージョン(us-east-1)に作成した適当なS3 Bucketにデプロイパッケージをアップロードします。

手順中の[CloudFormation template]をクリックして、CloudFormationテンプレートを起動します。

CloudFormation Stackの作成画面が開くので、パラメータでLambda関数のデプロイパッケージをアップロードした作成済みのS3 Bucket名と、変換前/変換後のモデルデータを格納する未作成のS3 Bucket名を指定して、Stackを作成します。

Stackの作成が完了したら、Stackの[Resources]タブでModelConvertBucketを開きます。

paksディレクトリを作成し、先程ダウンロードしたサンプルデータ(.zip)をpaksディレクトリにアップロードします。

するとS3 Put TriggerによりLambda関数が起動して、サンプルデータの変換を行います。
数分待つとトップディレクトリに変換ファイル(.gltf)が作成されています。

IoT TwinMakerでデータを使用する
IoT TwinMakerコンソールにアクセスし、Workspaceを作成します。

[Workspace details]で以下を指定して[Skip to review and create]をクリック。
- Name:適当なWorkspace名
- S3 bucket:変換ファイルが格納されたS3 Bucket
- Execution Role:Auto-generate a new role

[Create Workspace]をクリック。

Workspaceが作成されたら一覧からクリックして開く。

左サイドメニューの[Scenes]で、[Create scene]をクリック。

シーンIDを指定して[Create scene]をクリック。

するとシーンエディターが開きます。[+ > Add 3D model]を選択。

Bucket内に作成されているGLTFファイルを選択して[Add]をクリック。

エディターに3Dモデルがロードされるまで少し待ちます。

モデルがロードされましたが真っ黒ですね。人間が視認しやすいようにシーンに設定をします。

[+ > Add light]をクリック。

ライトが追加されて、モデルが照らされ色が認識できるようになりました。

[Hierararchy]でモデルを選択し、[Rotation]で[X]を90.000、[Y]を180.000に設定してモデルの方向を整えます。

3Dモデルをグリグリ動かして見れるようになりました。
 

ライトの[Intensity]を変更すると、ライトの光度を変更できます。

また[Settings > Screen Settings Environment Preset]でNeutralを指定すると、ライトを設定しなくても色が見えるようになります。

おわりに
これでMatterportのOBJモデルをGLTF形式に変換してAWS IoT TwinMakerにインポートして使えるようにできました。
次回はMatterportの実際のスキャンデータをIoT TwinMakerで使えるようにしてみます!
以上












