フォトグラメトリとは、「物体を、写真や動画で撮影して、立体化するやつ」です。
Twitterで見かけて面白そうなので、とりあえずお試してやってみたメモです。
Steamで3DF Zephyrの無料デモ版を使う。1プロジェクト50枚まで取り込める。
使った機材
概要
被写体は立った人間。
自宅。
三脚にカメラを縦置きで設置。
F8.0, ISO AUTO, シャッタースピード AUTO, ポートレート, AWB
- シャッタスピードは固定しても良かったかも、後で見たら1/8~1/13くらいだった。
- チュートリアルの動画を見たところ、もう少し絞っても良かったかも、F11くらい。
- カメラは三脚固定なのでシャッタスピードをあまり気にしなくてよいのでそういう事ができる。そこはメリット。
- 手持ちだとブレを防ぐための絞りとシャッタスピードの制約が出てくる。
焦点距離は25mmくらい(フルサイズ換算40mmくらい)
無線ストロボを後ろ向きにしてレフ板で反射し、立った人間に対してライティングをなるべく均一にする。
フラッシュ設定はマニュアル、ズーム35mm、1/4、環境や服装によって微調整。
※50枚ほど連射するので撮影がブレないようにカメラ関連の設定はなるべくマニュアルにしたほうが良い。
天井の照明もつける。
リモートレリーズでインターバル5秒くらいに設定。
腕を軽く開いたAポーズで、5度くらいずつ回転しながら撮る。
シャッター音が止まってから動くこと。(何枚か失敗してブレた)
取り込む写真は変換しないとダメか?と思ったがRAWデータそのままでも取り込んでくれた(キヤノン .CR2)。
しかし、なぜか横倒しの写真と認識してしまってダメだったので、Lightroomでtiffにしてから3DF Zephyrへ取り込んだ。
レンズ補正(較正)
3DF Zephyr自体にカメラやレンズの収差を補正する機能がついている。それはLightroom側のレンズ補正と被っておかしくならないか?という気もする。あと中級モデルくらいの一眼レフカメラであればカメラ自体でレンズ歪み補正を施すものもある。
ワークフローのうち「レンズの補正をどこでやるか」を意識して決めておいたほうが良いのかも知れない。
はじめ、その辺の補正(較正)を手動でいろいろイジっていたせいでうまく点群が作れなかった。
「オンラインの事前カメラ較正計算をチェック」のチェックボックスは外さないで、オンにしたほうがうまくいくことが多いようだった。
初めの「低密度点群」を通過できた写真が下にリストアップされるが、それは3DF Zephyrによる補正済みの写真になる。そこで「モデル化に失敗するものが多すぎる」「やけに糸巻き歪みしてる」ようだったら較正を疑おう。あるいは撮影やマスクがダメすぎるか。
撮影する角度
チュートリアルによると「隣り合う写真どうしの内容が60%くらい重なるように連続で撮影していく」のがコツらしい。
立った人間が回転しながら連続で撮るとき、1度の回転角が大きすぎると、連続性を見失ってそれ以降取り込みに失敗してしまう。なのでかなり細かく回転したほうが良い。
計算上は360 ÷ 50枚 = 7.2度ずつ回転すればよいことになる。人力で7度を正確に測るのって難しいな、何か方法はないか?テレビ用のターンテーブルのようなものがあると良いか。7.2度の目印つけて。
何度か失敗して気づいたが、1プロジェクトに「人間2周分の写真」を取り込ませても3DF Zephyrが混乱してしまって逆効果みたい。「1周分の写真」にしといたほうが良いぽい。
足首がなかった
角度によっては足先が見切れてしまっているのが失敗だった。画角をもう少し広くして余裕を持たせるべきか。
部屋の角の部分で足首から下が切れてしまうため、モデル化に失敗していた。足首から先がないモデルになっていた。取り込むときにマスキングで囲ったが、その努力も意味がなかった。
なので人間撮影用の布でL字に背景を作れば足先もモデル化できるんじゃないかと思う。
撮影枚数
「人間の真正面から1周」のモデル化するのにも40枚以上くらい~は必要な感じがする。当然それだと頭頂部のデータがないため、モデルを上から見るとカッパのようになってしまう。手作業で修正するなら別にいいけども・・。他には「帽子をかぶせる」とか。
キチンとした3Dモデルにするには「人間のローアングルから見上げるように1周」「人間のハイアングルから見下ろすように1周」も欲しいので、単純に120枚以上が必要になる。それは有料版でないと無理そうだ。実際、一眼レフがアレイになってるスタジオは120台程度のカメラで構成されているらしい。
無料版は1プロジェクトに50枚まで取り込めるのは確かなのだけども、そのうち何枚がモデルに使えるかというのも撮影する物体次第。歩留まり問題が出てくる。
今回のお試し撮影ワークフローだと、50枚撮影→ブレたのを除いて40枚→モデル化できたのが25枚(背後が無い)。みたいな流れだった。なので50枚以上、70~80枚くらいは撮っておくのが完璧と思う。
3DF Zephyr有料版であれば500枚だそうなので、あまり気にしなくて済む。ただし処理にかかる時間も増えていく。
リンク
誰でも簡単にフォトグラメトリを今すぐ無料で始める方法
https://qiita.com/amaiokashi/items/db88da0423a1549abcd8
3DF Zephyr Tutorials
https://www.3dflow.net/technology/documents/3df-zephyr-tutorials/
チュートリアルの動画
3DFゼファー(3DF Zephyr)は、
写真から自動で簡単に3Dモデルを作成します
http://www.opt-techno.com/opt-zephyr/product.html
販売代理店?日本語。
フォトグラメトリ入門 撮影方法~3Dモデル作成
https://styly.cc/ja/tips/photogrammetry_discont_photogrammetry/
フォトグラメトリ入門 動画からフォトグラメトリを行う方法
https://styly.cc/ja/tips/photogrammetry_discont_video/
動画のほうが撮影はラクそうですね。解像度は低くなりますが。トレードオフ。
人間はデカイので撮影するのが難しいが、もっと小さい小物ならもう少し撮影がラクだと思う。
バターロール(パン)
https://sketchfab.com/3d-models/butterrolllow-poly-12k-tri-37ae05c23fe34e3199ee6d2175fbe23f
あと写真ファイルのフルパスの中に日本語があるとうまく読んでくれないことがあったような気がする。21世紀にもなってまだその問題あるのか・・って絶望した。フォルダやファイル名は英数字にしよう。
3DF Zephyr を使う前にやっておきたいこと
https://manabuokajima.hatenablog.com/entry/2018/04/11/102047
応用
年老いたときに「バーチャル若かりし頃の自分受肉」(バ若肉)することで、「あの頃の俺はこんな感じだったのか・・」という思い出に浸ることができるかもしれない。なので定期的に自身を3Dモデル化しておくと良いかも知れない。写真や動画で思い出を撮っておくのと同じ。
自分の3Dモデルがあれば、BeatSabre+バーチャルモーションキャプチャで遊ぶ様子を撮影したり、VRChatやらバーチャルキャストでも使おうと思えば使える。なのでFacebookのような「本名顔出し陽キャ文化圏」と親和性があると言える。モーションを読み込ませれば踊らせることもできるし、VTuberと勝手にツーショット撮影したり共演することもできる。
SF映画などで「故人を蘇らせてホログラムで映しだして会話する」みたいなシーンがあるが、あれは割と現代の技術で実現に近づいているといえる。
3Dモデルはフォトグラメトリがあるし、モーションキャプチャーの手段も様々あるし、声はボーカロイドなりなんなりあるし、音声認識はSiriなりOK Googleなり進歩しているし、受け答えは人工知能があるし。故人の性格診断やTwitterやBlogなどのテキストをDeepLearningすれば疑似再現できるのかも。