この基本的なターンテーブル・フォトグラメトリー・シリーズのエピソードでは、前回のエピソードの最後にBlenderで生成した透過画像から、高ポリゴンのジオメトリを再構築する方法を見ていきます。
動画の書き起こし
こんにちは、皆さん! この基本的なターンテーブル・フォトグラメトリー・シリーズのエピソードでは、前回のエピソードの最後にBlenderで生成した透過画像から、高ポリゴンのジオメトリを再構築する方法を見ていきます。
そのほか、処理を途中で中断して再構築領域のサイズを調整し、その後中断した箇所から再開する方法についても説明します。
まず、Meshroomのプロジェクトを開きます。これは第2エピソードで作成し、Feature MatchingノードのMinimal 2D Motionフィールドを2に設定した後に保存したものです。
Blenderでレンダリングした画像をImage Galleryタブにインポートします。赤いシャッターアイコンから分かるように、今回は追加情報が含まれていません。なぜなら、これらはもはやオリジナルの写真ではなく、Blenderで作成されたレンダー画像だからです。

第2エピソードで扱ったImage Maskingノードを使用すると、元のデータを保持することができますが、グリーンバックの削除が少し難しくなります。一方で、BlenderでColor Keyingを適用する方が簡単ですが、その代償としてオリジナルのEXIFデータを失います。しかし、これは大きな問題ではありません。なぜなら、Meshroomがこの問題をうまく処理してくれるからです。
Meshroomプロジェクトを新しいデータとともに保存し、Graph Editorの空白部分をクリックしてすべてのノードを選択解除します。 その後、Startボタンをクリックして再構築を開始します。
プロジェクトのMGファイルを保存したフォルダーを確認すると、Meshroom Cacheフォルダーとそのサブフォルダーが作成されているのがわかります。このフォルダーには、Meshroomが各ノードの処理に関連するログファイルや中間作業ファイルを保存します。
Meshroomのこの機能は非常に便利で、ノードが処理する特定の情報だけを対象にして計算を行うことができます。
処理中は、画面上部に全体の進捗状況を示すプログレスバーが表示され、各ノードにもそれぞれの進捗バーがあります。どちらの場合も、緑色は処理が正常に完了したことを示し、オレンジ色は現在処理中であることを意味します。赤色はエラーが発生したことを示し、シアン色はノードが実行キューに追加されている状態を表します。

これらの進捗状況は、Task Managerタブで詳細に確認できます。また、各ノードのLogセクションには追加の情報が記録されています。
もう一つ便利な機能として、処理を一時中断し、後で再開する場合、Meshroomは各ノードごとに新しいサブフォルダーを作成するため、これまでの作業は失われず、異なる処理段階のデータにアクセスすることが可能です。
そこで、一時中断の操作についてですが、まず最初のパイプライン処理であるStructure From Motionが完了した時点でStopをクリックします。こうすることで、新しく生成されたデータを確認し、Bounding Boxとして知られる再構築領域の調整を行うことができます。

まず、Image Galleryタブの下部を見ると、Meshroomがすべての146枚の入力画像を認識し、処理したことが確認できます。これは非常に良い結果だと思います。
3D Viewerタブには、さまざまなカメラを表すアイコンが表示されています。これらのアイコンは、写真が撮影された視点を示しています。Image Gallery内の写真をクリックすると、対応するカメラが3D Viewerタブ内で選択されます。
3D Viewerタブでは、左クリックしてドラッグすると、ピボットポイントを中心に回転できます。ズームはマウスのスクロールホイールで行い、スクロールホイール(または中央のマウスボタン)をクリックしながらドラッグするとビューをパンできます。ピボットポイントは、3D View内の要素をダブルクリックすることで再設定できます。

次に、Meshingノードを選択し、Custom Bounding Boxオプションを有効にして、カスタムの再構築領域を定義します。このシーンは特に複雑ではないため、この手順は不要に思えるかもしれませんが、他のケースでは、必要な範囲だけに再構築を限定できるため、非常に便利な機能です。
ただし、Custom Bounding Boxオプションを有効にするだけでは、再構築のボリュームは表示されません。Meshroomでは、ノードを選択するだけでは、そのノードの詳細情報や機能が表示されません。ノードをダブルクリックする必要があります。
これで、中央に表示されたトランスフォームマニピュレーターを使ってBounding Boxをインタラクティブに調整できます。矢印を使うとBounding Boxの中心を移動できます。四角形を使うと、各軸方向にサイズを変更できます。最後に、円を使うと各軸を中心に回転できます。
Bounding Boxを定義したら、Startをクリックして、ジオメトリ再構築のパイプラインを中断した地点から再開できます。

ここで、プロジェクトのCache内のサブフォルダーを確認すると、新しいフォルダーが作成されているのがわかります。これは、前回のパイプラインが中断されたため、新しいデータが別のサブフォルダーに保存されるようになったためです。
これらのサブフォルダーは、デフォルトでは汎用的な名前が付けられていますが、各ノードのFolderフィールドで名前を変更できます。これは、異なるパラメーターで複数のテストを実行したい場合に便利で、フォルダー名を変更内容に応じて整理できます。とはいえ、フォルダーを日付順に並べ替えるだけでも、最新の処理結果をすばやく見つけることができます。
最後の処理ステップであるTexturingが完了した時点で、録画を再開しました。このプロセスを開始する前に、このノードのデフォルトパラメーターは変更しなかったため、MeshroomはEXR形式のBase Colorテクスチャを持つOBJファイルを作成し、UVアンラッピングにはUDIM方式を使用したはずです。
しかし、Meshroomのメニューオプションを見ても、このメッシュを特定の場所にエクスポートするための設定は見当たりません。
ただし、心配する必要はありません。メッシュとそのテクスチャはすでにディスクに保存されています。ファイルのパスは、TexturingノードのAttributesタブの下部で確認できます。
もっと簡単に言うと、ファイルはTexturingフォルダー内の最新のサブフォルダーに保存されています。
EXRファイルとOBJファイルをメインのプロジェクトフォルダーにコピーし、コピーしたファイルをHigh Polyとしてリネームします。こうすることで、オリジナルのデータを保護しつつ、Blender内でコピーを編集できるようにします。

Meshroomでプロジェクトの変更を保存し、プログラムを終了します。後で、High PolyバージョンからLow PolyバージョンへテクスチャをBakeするときに、再度Meshroomを開く予定です。次のエピソードでは、High PolyバージョンをBlenderにインポートし、クリーンアップしてLow Polyバージョンを作成する方法を紹介します。それでは、また次回!