スマホの動画からフォトグラメトリしてみた話

これは [Photogrammetry Advent Calendar 2019](https://qiita.com/advent-calendar/2019/photogrammetry) の3日目の記事です。

# やったこと
複数の画像から3Dモデルを作成する**フォトグラメトリ**という技術を使い、
スマートフォンからの動画から3Dモデルを作成してみました。

# できたもの

![kyoto01.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267569/09f5b896-e83c-10c1-35f5-971a2d6e1215.png)
![kyoto02.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267569/6b1bcca2-9491-4d39-184b-f96fcf73da39.png)

# 使ったもの

- iPhoneXで撮影した動画
- [3DF Zephyr free](https://www.3dflow.net/3df-zephyr-free/)


使用した動画の1シーン。1分ぐらいの動画です。
<img width="300" alt="6CC49636-8C25-4AFA-AC7D-03E0A4C861DA.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267569/d6a42bc4-f0f4-2619-3e99-8c17fda65e12.jpeg">



# きっかけ

**このツールなら、スマホで何気なくとった風景の動画でもいけるのでは？**
と思ったことがきっかけでした。　　

以前から風景をフォトグラメトリにする方をSNSで知っていたのですが、
それなりに撮影が難しいだろうな～と漠然と思っていました。　　

しかし、いざ自分のスマホとフィギュアでフォトグラメトリしてみたら、
あまりの簡単さとモデルの出来に感動し、これまでの撮影した動画してみたくなりました。

# モデルの作成
ツールの使用方法は、以下を参考にさせていただいています。
[3DF Zephyrで3Dモデルを作成する その１](http://bluebirdofoz.hatenablog.com/entry/2018/12/17/092206)
[3DF Zephyrで3Dモデルを作成する その2](http://bluebirdofoz.hatenablog.com/entry/2018/12/18/090306)

気を付けた点としては、

- 動画からの画像への変換設定

![設定画面.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267569/887ed333-b7b9-4881-9bea-f4045521086b.png)


フレーム抽出を全部にするとものすごい枚数の画像を生成します。
Zephyr freeは、画像は50枚までという制限なので、すべては取り込めません。
画像を自分で間引きしても良いのですが、正直大変。。。

なので、私は、2.00あたりを使用し、50枚になるように調整しました。
値は、動画の長さや画像を何枚使用するかで決めると良いと思います。

# VRChatのワールドでみてみる

できたモデルを眺めていたら、やっぱりVRでも見たいなという思いがでてきました。
そこで、ちょうど作成中のVRChatのワールドに置いてみました。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">iPhoneXで撮った動画から作ったモデルをワールドに反映してみた！<br>ボロボロなモデルだけど、それでも楽しい！ 小人になってしまった〜(^^)<a href="https://twitter.com/hashtag/photogrammetry?src=hash&amp;ref_src=twsrc%5Etfw">#photogrammetry</a><a href="https://twitter.com/hashtag/VRChat?src=hash&amp;ref_src=twsrc%5Etfw">#VRChat</a> <a href="https://t.co/jbapPoWMw1">pic.twitter.com/jbapPoWMw1</a></p>&mdash; もののう (@mononou) <a href="https://twitter.com/mononou/status/1183680953014554624?ref_src=twsrc%5Etfw">October 14, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

予想以上に楽しい！モデルサイズを誤って、小人になってしまいましたが、
逆にそれが新しい体験になりさらなる楽しさがうまれました。

# モデルをより綺麗につくるには

楽しかったけれど、モデルがボロボロはやはり気になりました。
モデルを修正するにあたり、
[【フォトグラメトリ】3DF Zephyrを使ってモデルのメッシュを綺麗にする方法](https://styly.cc/ja/tips/3dfzephyr_processing/)
が非常に参考になりました。

基本は、参考ページのとおり不要なポリゴンを削って穴を埋める作業です。
私は、そこからさらにラプラシアンスムーサーで床や壁の平坦になるように調整しました。
以下が、ポリゴンを綺麗にする前と後です。

$\Large{修正前}$
![kyoto03.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267569/4cde65bf-c8c6-e39c-987b-15a6366109cc.png)

$\Large{修正後}$
![kyoto04.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267569/dd82b545-eac1-0658-6694-624fa1239177.png)

個人的には、モデルのテクスチャーがはっきりしているところを平坦にしていくとすごくきれいに見えると感じられました。


# 今後の課題
さらに綺麗なモデルにするために、やはり使用する枚数を増やしたいと感じました。

また、人物や空の削除もできるとさらに良くなるな感じました。

そして、モデルを滑らかにしたことでポリゴン数もだいぶ増えてしまったので、もっと減らせればと思います。

# さいごに
本記事を作成するにあたり、以下のページを参考にさせていただきました。ありがとうございました。

[3DF Zephyrで3Dモデルを作成する その１](http://bluebirdofoz.hatenablog.com/entry/2018/12/17/092206)
[3DF Zephyrで3Dモデルを作成する その2](http://bluebirdofoz.hatenablog.com/entry/2018/12/18/090306)
[フォトグラメトリ入門 撮影方法～3Dモデル作成](https://styly.cc/ja/tips/photogrammetry_discont_photogrammetry/)
[【フォトグラメトリ】3DF Zephyrを使ってモデルのメッシュを綺麗にする方法](https://styly.cc/ja/tips/3dfzephyr_processing/)