1. Metashapeとは
Agisoft社が開発、販売するフォトグラメトリーソフトウェア。Professional EditionとStandard Editionが存在し、Educationalバージョンは半額。Windows、Mac、Linux環境に対応。
日本の代理店は株式会社オーク。オークのサイトでは日本語で使い方やテクニック等、詳細な情報が得られる。https://oakcorp.net/agisoft/
2. フォトグラメトリソフトウェアの精度の比較
フォトグラメトリソフトウェアはMetashape以外にも、RealityCapture3DF ZephyrAutodesk Recap等が存在する。業務レベルではRealityCaptureがよく使われている印象。RealityCaptureはWindows版のみであり、GPUに対する要件が高いため、どのようなPCでも動作するわけではない。
インダストリアルアート学科では、macとWindowsが混在しているため、Metashapeを利用して演習を行う。
3. Metashapeのインストールと体験版の起動
ここではMac版の紹介を行う。
3.1 インストーラのダウンロード
上記URLから、OSの種類に合わせたインストーラをダウンロードする。
2022.8月現在は、1.8.4が最新。90MB程度。
3.2 インストール作業
ダウンロードしたdmgファイルをダブルクリックする。
ライセンスの承認画面でAgree(同意)する。
Agisoft Metashape Standard ***ドライブがマウントされる。
同時に下図のウィンドウが開く。
左のMatashape.appをドラックして、右側のApplicationsへドロップする。
3.3 体験版の起動
ApplicationsフォルダのMetashape.appを起動する。
Metashapeには、3つの起動状態がある。
購入済:ライセンスキーの入力
体験版(30日間):保存、書き出しが可
Demoモード:保存、書き出し不可
今回は30日体験版を利用する。
下図の「Start a free 30-day trial」を選択して、OKボタンを押す。
※体験版が終了するまでに、課題作成を行う必要がある
再度、ライセンスについて確認する場合は、Helpメニュー > Activate Product...から確認する。
4. 撮影データの準備
4.1 配布データ(今回の方法)
事前にターンテーブル型3Dスキャンシステムで撮影した練習用のデータを授業内で配布する。
shiisaa_20220827.zip(USBメモリ or ギガファイル便)
4.2 参考)oakcorp.net公式チュートリアルデータ
上記URLでは、チュートリアルとサンプルデータが公開されている。本演習では扱わないマスク処理なども紹介されている。
5. ワークフロー
一般的なワークフロー
下図はUser Manual Standard Edition, Version 1.8の12p. Chapter 3. General workflowを元に作成したもの。
本来は④高密度点群生成(Build Dense Cloud)を行うことも多いが、今回の演習では撮影段階で高解像度写真が撮影できているため、Regionの設定に支障はなく、処理時間の短縮することも目的として、③Alignment後に⑤Mesh生成を行う。②に関しても今回は不要なデータがないものを配布しているので行わない。
処理プロセスの理解
フォトグラメトリの処理は各工程で数十分〜数時間を要する。そのため、各工程の精度や品質を下げることで処理時間を短くする工夫を行う。最終的な目的に合わせて検討する必要もある。例えば、ゲーム内での人体アバターを目的だとした場合、3Dスキャンはあくまでもモデル作成の下地の位置付けであり、後処理でリトポロジーやメッシュの再構築を手動で行うのであれば、簡易的なメッシュ生成でかまわない。
下図はMetashapeの処理プロセスを分析したもの。それぞれの工程に複数の選択肢があり、プロジェクトの目的に合った手順を検討する必要がある。赤紫が今回行う流れ。
6. 写真の読み込み
6.1 Metashapeの起動
MetashapeのUIはそれほど複雑ではないので、作業を進めながら解説する。
6.2 GPUの設定
利用しているPCがGPUを持つ場合はGPU設定を行う。
Metashapeメニュー > GPUタブのGPU devicesに表示されるGPUにチェックを入れて、OKボタンを押す。
6.3 写真の読み込み
左のWorkspaceパネルの中のChunk 1を右クリックして、Add > Add Folderをクリックする。
単独の写真を選択する場合はAdd Photosだが、数百枚ある写真はフォルダ毎にまとめてAdd Folderで読み込むほうがが効率的に作業できる。
Chunkは日本語で「塊」の意味。MetashapeではChunkごとに写真データをセットして処理を行う。今回は1つのChunkだけを利用する。

読み込み時に下図の警告が表示される場合があるがOKを押す。撮影時にレンズのズーム?を使うことは避けることを推奨するもの。ズームを使わない=画角の条件が同じ写真の方が良い解析結果が出やすいというもの。
読み込みが完了すると、下図のようにWorkspaceパネルとPhotosパネルで写真データを確認することができる。読み込んだ後に不要な写真の削除や処理から外す設定を行うこともできる。練習用データでは使える写真のみなので作業不要。
WorkspaceのリストもしくはPhotosパネルのサムネイルをダブルクリックすることで写真の確認モードに入ることができる。メニューも写真データの編集用に切り替わる。明るさの変更や解析させてくない場所のマスキングも可能だが、今回は扱わない。
3Dビューに戻るにはModelタブ(下図紫)をクリックする。
7. Alignment(低密度点群生成)
フォトグラメトリの解析処理では、複数画像の特徴点を解析して、そこからカメラの撮影位置や角度を逆算していく。このことをカメラのAlignment(並べる、整列の意味)と呼ばれる。
処理対象のChunkが指定されている状態(太字、複数ある場合は対象Chunkをダブルクリックする)で、Workflowメニュー > Align Photosをクリックする。
Align Photosの設定ウィンドウが表示される。
Accuracy(精度)の設定は低密度点群の密度に関わるので、Region Boxを細かく調整したい場合は高めに設定したほうがよい。今回は高解像度の撮影データを利用したことである程度点群数が担保できるので、時間節約も理由にLowに変更しておく。
上図でOKを押すと、処理がスタートしてProcessing in progessが表示される。
カメラのAlignmentと同時に特徴点の集合である低密度点群が生成される。
カメラプレビューの表示切替
カメラプレビューの表示/非表示、カメラサムネイルの表示/非表示は以下の方法で切り替える。
・Modelメニュー > Show/Hide Items > Show Cameras
・Modelメニュー > Show/Hide Items > Show Thumbnails
8. Region Boxの調整
不要な部分はBlenderでの後作業で削除するので、ここではある程度の調整でかまわない。MetashapeのRegion Boxの調整は若干わかりづらく慣れも必要なので、Blenderでの調整にまかせてもよい。ただし、Region Boxを設定しないと全ての範囲を処理するので処理時間はかかる。
8.1 カメラプレビューの非表示
Modelメニュー > Show/Hide Items > Show Thumbnailsで、カメラプレビューを非表示にする。
8.2 操作モードの切り替え
UI上部のアイコンを押すことで操作モードを切り替える。今回Selectionモードは使わない。
特にLMBドラッグが各モードで機能が異なるので慣れが必要。ビュー操作は必ずNavigationに戻る必要がある。
8.3 Navigationモードのマウス操作
・LMB:ビューの回転
・RMB or MMB:ビューの移動(Navigation、Move Region、Move Objectの各モード共通)
・Wheel:ビューのズーム(各モード共通)
8.4 視点の切り替え(ショートカットのみ)
Numpadもしくはキーボードの数字キーを押すことで視点を切り替えることができる。一部異なるが、Blenderとかなり近い。
8.5 Transform Object > Rotate Obeject ※操作性に難がある
正面視点(Numpad 1)にする。
座標表示が右下のようになっていることを確認する。Metashapeの座標系はBlenderと同じ向き。
Transform ObejectメニューからRotate Objectを選択する。
LMBドラッグでObjectの方向や水平を調整する。ビューの回転はできない。ビューの回転したい場合はNavigationモードに切り替える。
MetashapeではXYZ平面のグリッド表示ができない。Objectの操作とビューの回転を同時に操作することはできないので完全に合わせるのは至難の業。Rotate Objectではギズモは使わないで、ビューポート上でドラッグすると画面に対して平行に回転している?ようなので調整しやすいかも。難しい場合は後処理のBlenderにまかせる。
8.6 Transform Region
Navigationモードの状態で、Numpad 5を押してOrthographic(平行投影)に切り替える。
 Rotate RegionやResize Region、視点切り替えを行いながら、メッシュ生成に必要な部分だけを囲むように調整していく。
Rotate Regionの作業。ギズモをドラッグすることで画面に対して垂直平行に回転させることができる。
Resize Regionの作業。
不要な部分を除くようにRegionを設定する。
9. Build Dense Cloud(高密度点群生成)
※練習では省略
Workflow > Build Dense Cloudをクリックする。
この段階を飛ばして、直接Build Meshを行うことも可能。
高密度点群の生成は数十分〜数時間は要する。撮影解像度やQuality設定、利用しているPCの性能に依存する。練習段階では時間がかかりすぎるので省略する。
下図は、Hight設定での高密度点群。300万points超。一見メッシュのように見えるが密な点群。
10. Mesh生成
Workflowメニュー > Build Meshをクリックする。
設定ウィンドウではQualityをMediumに変更。時間のある場合はHigh以上を試してみるとよい。
11. Texture生成
Wirkflowメニュー > Build Textureをクリックする。
設定は変更せずにOKを押す。
下から見るとオブジェクトは薄いハリボテで中身がなく穴が空いていることがわかる。MetashapeではRealityCaptureのようにこのような穴を塞ぐ機能はないので(メッシュ表面の小さい穴は処理可能)、後作業のBlenderで穴を塞ぐ。
12. Texture付Meshデータの出力
3つのファイルが出力されるので、事前の保存用のフォルダを新たに作成しておく。
​​​​​​​Fileメニュー > Export Modelをクリックする。
保存先の指定、ファイル名を入力して、保存ボタンを押す。
Export Modelの設定ウィンドウが表示される。ここでは初期値のままOKを押す。
Include commentはOBJファイルの冒頭にコメントで記載されるだけなので不要といえば不要。
OBJ、MTL、JPGが生成される。
13. ビューポート表示の切替
UI上部の下図アイコンからビューポートの表示を切り替えることができる。
14. Blenderでの調整
14.1 Blenderの起動
最初のBoxは削除しておく。
14.2 OBJファイルの読み込み
File > Import > Wavefront(.obj)でOBJファイルを読み込む。.mtlや.pngはOBJファイルに紐付いて読み込まれる。
14.3 原点と回転の調整
Metashapeから出力したメッシュはそのままではオブジェクトの原点(Object Origin)がずれている。
オブジェクトを選択した状態で、Objectメニュー > Set Origin > Geometry to Origin。
視点をFront(Numpad 1)やRight View(Numpad 3)に切り替えながら、Rキーで生成したオブジェクトの回転角度を調整する。
14.4 不要な部分を削除
Front(Numpad 1)視点、Edit Mode(TABキー)に切り替える。
X-Rayモードにした上で、土台部分を領域選択する。
Deleteキーを押して表示されるメニューのFacesをクリックする。
14.5 穴埋め
EditModeでEdge選択(Key 2)に切り替える。X-Rayモードはオフ。
Edit ModeでEdgeをループ選択(Option+左ダブルクリック)して、Faceメニュー > Fillをクリックする。メッシュ生成の進め方によっては穴が複数の場合もある。その場合は一つずつ行う。
穴埋めがうまくいかない場合は、穴埋めしたい縁周りをカットして、もう一度Fillを試す。
テクスチャを確認するため、Viewport ShadingはMaterial Previewに切り替える。
今回、底面のテクスチャに関しては処理しない。
14.6 底面とエッジの処理の検討(参考)
13.4の方法だと強引にメッシュを削除してから底面を作成しているので、底面のエッジがギザギザになる。手動でSubdivideや頂点を調整していくこともできるが効率的ではない。
SculptのSmooth Toolである程度調整できる。ただし底面のテクスチャは他の部分から投影されるのでぐちゃぐちゃになる。Dyntopoはテクスチャが外れる。
メッシュ全体をRemeshすれば自動的に大きな穴は塞がれ、底面のメッシュ分割も綺麗になるが、テクスチャは外れる(下図)。
基本的にはメッシュ分割し直して、テクスチャを貼り直す方が扱いやすいデータとなる。
14.7 XY平面上に移動
FrontやRight Viewに切り替えて、GeometryをXY平面上に移動させる。
OriginはGeometryの中心のままとなる。
Objectメニュー > Set Origin > Origin to 3D Cusor(World Originの位置の場合)をクリックすることで、OriginがGeometryの底面中心付近=原点(World Origin)にフィットする。
15. Sketchfabへアップロード
生成した3DデータをSketchfabへアップロードする。
Sketchfabの使い方に関しては、別記事に掲載。
16. 課題(持参したものをスキャン)
持参したものの撮影データから生成した3DデータをSketchfabへアップロードして、URL提出
スキャン日程は教員と相談して調整する。
Back to Top