Photogrammetyで写真から実物大のモデルを作るのは楽しいです
しかし、特徴点が少ない平面や反射・透過の物体は苦手です
例えば、こちらのケーキのポップは虫食いみたいで見た目がよくありません
今回は簡易に穴ぼこを補修する方法を紹介します
RealityCaptureとBlenderを使いました
注意:
確実に成功するとは限りません
Blenderで行うモデルの修正内容やExportの状態に依存するようなのですが、完全に原因を把握できていません
少しずつ補修部分を増やしていく方が良いと思います
1. RealityCaptureでモデルを出力する(FBX形式)
とりあえず、Reality Captureで最低限度の状態のモデルを生成し、結果をFBX形式でExportします
今回はスマホのカメラの写真44枚だったので、使用料金は1.08$です
Imagesに入っている写真に対して課金されるので、以降のExportにはお金がかからないのが助かります
(課金額は決まった単位があるので、実際は29.9€で買った8000Mpix分のクレジットから切り崩して使います)
2. Blenderで穴が開いている部分に別のメッシュを置く
先ほど作ったFBXファイルをImportします
商品名のプレートは板なので、planeをextrudeして、モデルと合うように大きさと位置を調整します
Before
After
3. BlenderからObj方式でモデルを出力する
Importしたオブジェクトと追加したオブジェクトをJoinで一つにまとめ、選択・アクティブにして、Obj形式で出力します
チェック欄の一番上のSelection Onlyにチェックを入れます
方向のUpがZupですが、Forwardは-Xか-Yのどちらかを選択します
実は、だいぶ成功確率は上がってきたのですが、この時の設定を完全に把握できていません
ExportしたいモデルをJoinでまとめなかったり、Materialのチェックを外さなかったら、次のステップでエラーが出て進めなかったことがあったり、挙動が安定しなかったです
詳しい方のコメントをいただけると助かります
4. FBX出力した同じファイルに、作成したObjファイルをImportする
RealityCaptureに戻り、ReconstructionにあるImport Modelを選び、さきほど作ったObjファイルを読み込みます
必要に応じてUnwrapします
Sceneのscene renderをSweetにすると、こんな感じに表示されます
Blenderで追加したオブジェクトのメッシュが大きすぎると、Textureの解像度が低くなってしまいました
Unwrapのテクセルサイズの調整で対応できなかったら、Blenderに戻って追加するオブジェクトのメッシュの大きさをloop cutなどで小さくします
5. RealityCaptureでTextureを貼る
こちらのようになりました
ちなみにBeforeはこのような感じでした
まとめ
結局、写真からメッシュの位置を再構成して、カメラの位置から貼るべきテクスチャを選んで貼っているはずなので(と理解していますが)、対応したスケールでモデルのメッシュを補ってあげれば、反射などでキャプチャーできなかった平面も再現できるのでしょう
他にも良い方法がありましたら、ご教示いただけますよう、よろしくお願いします