プログラマーのメモ書き

伊勢在住のプログラマーが気になることを気ままにメモったブログです

フォトグラメトリーやってみた

子どもが夏休みの宿題で、工作というか駅の模型を作りました。

市内の近鉄宇治山田駅です。

親(バカ)的には頑張ったなという感じなんですが、いかんせん、段ボール工作なので、そのうち壊れるのが目に見えてます。実際、持ち帰ってくるときに既に一部破損しました。

ふと、せっかくなので壊れてしまう前に、3Dモデルにしておいたらどうだろうか?と思いつきました。最近の iPhone PRO版 だと LiDAR 搭載で、 3D スキャンできるけど、 Androidってできないよな?と思いつつ、たしか、複数の写真から 3D モデル作る方法があったよなって、調べると、『フォトグラメトリー』と呼ぶそうです。

ということで、試しにやってみたので、メモっておきます。

やり方

まずはネットをググると、ちょうどよさそうな記事がいくつも見つかりました。

なるほど。いまや、スマホのアプリで簡単にできるようです。アプリもいくつかあるようですね。Google アカウントですぐに使えるので、今回は Polycam というやつを使うことにしました。

poly.cam

写真の撮影と 3D モデルの作成

Polycam をスマホにインストールして立ち上げます。ログインするように求められるので、 Google アカウントでログインします。

次に、早速モデルを撮影します。写真が 20 枚あれば、3Dモデルを作ってくれるそうです。無料版だと最大 100 枚だそうです。

こんな感じに、とりあえず、あちこちの角度から撮ってみます。ある程度撮れたな?と思ったら、『DONE』のボタンを押すと、

と表示されるので、デフォルトの設定のまま、『UPLOAD & PROCESS』ボタンを押すと、写真がアップロードされて、 3D モデルが作成されます。

しばらく(数分ぐらい?枚数でも変わるっぽいです)すると、3Dモデルができました。いや、すごいな、これ。

poly.cam

一度モデルができると、スマホアプリでも、PCのブラウザでもアクセスできるようになります。リンク貼っておくので、ご興味のある方は一度見てみてください。

公開方法

なお、上記にリンクを貼りましたが、作成した 3D モデルはリンクを知っている人にはいつでも公開することができるようです。有料版だと、個別のユーザー限定での公開もあるようです。

また、それとは別で、『Publish』とすると、データを Polycam 内で公開して、 Polycam 内で共有することができるそうです(『Explore』と呼んでいる機能みたい)。

データのダウンロード

作成した 3D データはダウンロードもできるようです。PC版(ブラウザ)の場合だと、

右上にある『Download』ボンタンを押すと、

のようにフォーマットの選択画面が表示されます。ほとんどが『PRO』のラベルがついているので、有料になるのかな?と思いきや、『gltf』にはマークがついていません。

Polycam の説明などをみると、作成したデータのダウンロード(エクスポート)には有料プランが必要とあるのですが、フォーマットが gltfだと無料版でもいけそうですね。

ということで、『gltf』を選択して、『EXPORT』ボタンを押すと、おぉ、ちゃんとダウンロードされました。

ダウンロードすると glb という拡張子のファイルが保存されました。glTFのバイナリー版だそうです。

確認

ダウンロードしたファイルをどうやって確認しようかな?と考えてネットを探すと、 gltf/glb を表示してくれるサイトがありました。

glTF Viewer

ここにダウンロードしたファイルをドラッグ&ドロップすると、ちゃんと表示されました。

ちなみに、下記の記事などをみると、VSCode でも表示することができるようです。こんどやってみようかな。

glTFの確認手段 – ft-lab

それにしても、3Dモデルをマウスで操作するの難しいですね。なかなか思うような向きに変えることができません。このあたり、もっと直観的にできるようになるといいんでしょうね。

アプリについて

Polycam 簡単にフォトグラメトリができていいですね。ただ、気になる点もいくつかありました。

まず、何度か試していると、写真アップロード後の processing のあとに failed となることがありました。ただ、画面上には理由などが出てこないので、なぜ失敗したのかがわからないのがちょっと残念なところですね。まあ、理由書かれても対応むずかしいような気もしますので、致し方ないのでしょうが。

あと、フォトグラメトリが月に 5 件できるとあるのですが、アプリ上ではなにやら別のカウンタもあり、これが何を意味しているのかがちょっと分からないです。両者に関係があるのかどうかも不明。このあたりがもうちょっとわかりやすいといいですよね。

アプリの表示は英語のみみたいです。日本語への切り替えとかできるとこの分野に慣れていない人間にも使いやすいのにな、と思います。

所感

今回の撮影対象は段ボールということもあり、3D モデルはできるんだけど、一部が抜けていたり、うまく全体をモデル化するのが意外と難しかったです。何も考えずにやった一番最初のが結構よかったりしました。

いろいろと試した印象では、写真の枚数が多ければいいというものでもなさそうだし、近すぎる写真が多くても平板になって背景として扱われるのかやはりうまくモデル化できない感じでした。撮影した部屋に窓があって、昼間だと外の光が意外と明るくて、逆光気味の写真になるのも影響してるような気がします(夜に蛍光灯の下でやったときのほうがいい感じでした)。もろもろ、このあたりもテクニックがあるんだろうなと感じてます。

最終的には、上にあげたものになったんですが、一番上のアンテナみたいなのは結局うまくモデル化できませんでした。全体に対して線が細すぎるから除外されるんでしょうね、たぶん。このたりもフォトグラメトリの限界なのかな?

とはいうものの、 Android でしかも無料のアプリをインストールするだけで簡単に3Dモデルを作れるのはなかなかいいですね。ちょっと遊んでみようと思います。