初めてのPhotogrammetry スキャン
技術書典に申し込んでしまったので、モチベーションを上げるためになんか書かないといけないと思って「週刊 Photogrammetry tips」という連載を始めたい。週刊と言いつつ毎週出すのではなく、Photogrammetry一通りの作業を終えて「一周」したらまた次のスキャンでスキルアップを目指そう的な感じでゆっくり進めようと思う(不定期連載) 。小ネタをはさみながら
前書きと自己紹介
- Photogrammetryとは
複数の写真画像から対象物の三次元形状を計算する方法で、特に物体の形状を非接触で短時間かつ高精度に記録できるという利点から文化財の保存に広く使われている。最近はFF15やワンフェスの件で少しCGやゲーム業界のほうで認知度が上がっているような気がして…(もとから低くないか)
私は今年卒業を控えてる院生で(日本語ネイティブではない)、入院してから手探りでphotogrammetry始めて、ほぼネットに転がってるチュートリアルを見て独学。その時初めてスキャンしたモデルはこちら
ミラーレスで写真60枚を撮影し、Photoscanでを低精度の処理しただけ
ほかの作例→https://sketchfab.com/FFT_kedar/models
つまり写真いっぱい撮ったらこういう3Dモデルが簡単に作れるということ。
(実は簡単ではないが↓)
Photogrammetry Workflow by Unity (p5)
あれからUnityがチュートリアルを出したり、自分にとってPhotogrammetry大先生のvladさんがこれを出して… もしこのブログを読んでる方はかなりPhotogrammetryの研究を進んでいるならそちらを読むほうがいいと思う。また、この連載では基本的なPhotogrammetryソフトの操作や基本ワークフローについては触れない(大体検索すれば出る&ソフトが優しいので)。
それで私はPhotogrammetry始めてからそろそろ3年目になるけど、ぶっちゃけ完璧なワークフローが今一つ精通していない。何せAAAタイトル/VFXの実務経験皆無だからな…なのでもしphotogrammetryの現場ですでに働いてる方がたまにツイッターとかで検索してここに迷い込んでしまったら是非アドバイスをください。 ありがどうございます。
一方、院で学部の学生に教える機会があって、チュートリアルの通りに独学するのはいいだけど、人にそのまま教えるのまたなんか違うと感じた。なぜかというと学生達のほうからも私がPhotogrammetryを始めたばかりの頃から出会った様々な問題が次々と出てくる。それで今ネット上にある既存のチュートリアルやガイドブックだけでは不十分かと思い、自分のための復習も兼ねて、学生に教える感じで連載を書いていく(Photogrammetryの座学に関してはまた別の機会で)。
-
まずは被写体を決めよう。
はじめに
授業でいきなり
- 艶々として光沢のある
- 黒い
- 茶碗
が被写体とされていた。
私はその授業の二回目からの参加で、現場に出て前回撮った黒茶碗の写真がPhotoscanのチャンクに並んているのを見て、「これやばいな…」と思った。
てかてかの被写体はまずPhotogrammetryに向いていない。
不得意な被写体はこちらでまとめられている。
(しかし、それらの不得意な被写体に魔法をかけてスキャンすることができる。例えば透明のものの表面を「サーフェイサー」、「パウダースプレー」や「マーカー」とかで…ここで1つの小技をあっさり流す)
Photogrammetryの技術に関してはここでは長く説明したくないので、ざっくり言うとSfM(形状を復元する)段階の「写真の特徴点を検出し各撮影位置の推定するプロセス」では、てかてかな被写体はうまくいかない。
それではじめの一歩にどれを撮ればいいのかと言うと
狛犬,iphone 6s 400shots, photoscan(metashape)
(なぜテクスチャが貼られていないかというと、 テクスチャを取り除いた状態のほうが被写体の傷の観察/分析に使えるから。 ゲームやCG制作には役に立たないTipsだけど考古学とアーカイブの分野ではかなり有用)
石の表面に模様があって、撮った画像の特徴点が多いから。
さて、撮影しに行きましょう。
-
iphone6sで、近くの公園で。
最初は被写体を画面の真ん中に置くように、一枚撮ったら少し位置ずらして撮る。繰り返し1周。高さ変えて2周目。一回目の撮影はこれぐらいでいいでしょう、特に枚数は気にしなくていいと思う。
(3DF Zephyr無料版は50枚が上限だけど、実際私の最初の数ヶ月の撮影は2019年現在のように1モデルを数百枚撮ったりしていなかった。)
(自分はMetashape/Reality Captureを主に使ってるので…とりあえずスクショはMetashapeで…また、事例なのでこれは完璧な撮影方法ではない。へたくその)
Photogrammetryソフトで処理を行う
最近のソフトはどれも優しい。 例:(詳しさ順)
Metashape(Photoscan)/Reality Capture/3DF Zephyr
非常に優しくて、どれも「Workflow」メニューに一列に並んでいるボタンを1つずつクリックしていけば簡単にモデルを作成できる。(なのでここでは詳細を省略,教える側各自チュートリアルを探す…)
- バウンディングボックスでモデルの作成範囲を指定しよう。使用ソフトによっても大きな違いはない
- 母校のアーカイブ授業ではMetashape(Photoscan)を使ってるので、それのチュートリアルを載せよう
- ↑と自分のワークフローの違いは: (あるいはTips?)
- GPUアクセラレーション処理時にCPUを利用しない(強いGPUなら
- アライメントの時、写真枚数で「汎用事前選択」を利用するか決めよう
- 「汎用事前選択」処理の中身は「写真をダウンスケールしアライメントの事前にペア選択することでプロセスを高速化」、なので写真枚数が少ない場合や被写体が不鮮明/解像度低い場合は不要
- 回転する時メニュー「モデル→ビューモード→オルソグラフィック」に変更
- 「高密度点群を構築する」のステップは飛ばす、そのままメッシュ構築に(ソースデータを深度マップに変更)
- ポリゴン数を設定しよう、400万などに。深度マップを使ったメッシュ構築は簡単に何千万のポリゴンを出すので、Metashapeの場合はパソコンが簡単に固まってしまう。(Reality CaptureはOk)
- マスク要らない
- 深度マップを使ったメッシュ構築はReality Captureが最初からついている機能で、そのアルゴリズムは2010年あたりの論文に書かれていて、2018年にようやくPhotoscanが実装したようだ。しかし処理スピードはReality Captureより遅い。
また、一回目は全部デフォルトの設定でいいと思う。被写体が石だったら大体うまくいける。むしろ石が被写体なら精度「低」とかでも大丈夫。
ここでTips
- 3DF Zephyr無料版はただで使えるが、もしガッツリPhotogrammetryやりたいであればReality CaptureかAgisoft Metashape(元PhotoScan)がおすすめ。
- 3DF Zephyrは優れたソフトではあるが、Lite版の扱える画像枚数上限が500という中途半端な数字なのでちょっと微妙かと。アルゴリズムはかつてのPhotoscanよりは上で操作も簡単だけどこの500枚はどうしても気に食わない (最近たまに1000枚ぐらい撮ったりするので)
- また、Metashape(Photoscan)を購入する際に代理店より公式のほうが安い(ころされr…)。日本語サポートやマニュアルがついてないため安い。支払いは確かクレジットカード決済のみ。
- さらに、Reality Captureはこの間Steamでセールがあって…() 洋ゲーに詳しい人ならセールが来る時期がわかると思う。
- ほかにMeshroomという無料ソフトもかなり良いとの評判。
で…できました。
ぱっと見かなり綺麗じゃないかと。
- まずは成功体験
しかし
モデルをチェックしてみよう。ここからが本番だ。
うまく撮れていないところがあったらメッシュがうまく作れない。
ボケている画像があったらテクスチャもボケて作られる。
また
ディレクションライトこそなかったはずが、石の裏に植栽があったためか、表側より暗い。
解決法
- 被写体を観察して、撮影計画を立ててから撮ろう。被写体のすべての面を撮るように心がけよう。写真画像に写っているところしか3Dモデルにならない。しかも十分の枚数でないと形状はうまく構築しない。
- (後ろ側、裏側、下から、上から)
- (もう1つのキーワード→オーバラップ)
-
Before you start shooting like crazy, first you will need to estimate how, and from where you will shoot your object.「Full Photogrammetry Guide for 3D Artists」, vlad
- (私はPhotogrammetry撮影をする時いつもイヤホンしてて外からのノイズを完全に遮断している状態なので、もうクレイジーという形容詞にぴったり)
- 曇天で、ひらけた場所にぽつんとあった石を撮影(あるいはDelighting、こちらはまた今度)
- ブレない写真を撮るためにマニュアルモードで撮ろう。
そして思い出してほしい、今回の撮影機材を
-
iphone6s
iphone6sの標準カメラアプリはシャッタースピードを調整できない。
今回撮影したのは数十枚の写真だったので腕がさほど疲れなかっただろうが、もし数百枚、千枚撮るんだったらブレる回数もかなり増えるので。できるだけ早いシャッタースピードで撮りたい。
つまり、シャッタースピードを変えられるアプリを使って撮影すればいい。
探せば多分無料のアプリもあると思う。
さらに、写真に詳しい人だったらRAW/JPGで撮った写真の違いがわかると思うので、Photogrammetryも同じく、手持ちの機材で最高精度のスキャニングを目指すのであればRAWで撮ろう。ホワイトバランスもオートではなく固定で。マニュアルモードで。
(WB固定/マニュアルモードで撮影の理由はPre-processingがやりやすいところにあるけど、それはまた3,4周進んだらその話をしよう)
-
iphoneで十分か
前に貼った狛犬の3Dモデルは自分のiphone6sで撮ったのは置いといて、
こちらのモデルを見てみよう。
千手観音、iPhone 6S Plus、1450 images
全然綺麗です。
つまりカメラやPhotogrammetryソフトはあくまでツールで、モデルの品質はやはり撮影者のスキルで決める。
しかし、これはカメラのことを気にしなくていいというわけではなく、自分のカメラを完全に理解してからそれで何が撮れるかがわかった上での話。
iphone6sのレンズは1200万画素, f2.2(固定), 最小ISO 25, 焦点距離35mm換算値 29mm. など
スマートフォンだったら石像を全然撮れるし、小さいりんごだってかなり綺麗に撮れる。 (一眼レフなどで撮るほうがもっといいモデルが作れるが、)
撮影の工夫
ここからの内容は2周目にしたい、
ぶっちゃけPhotogrammetryの一番肝心なのが照明と撮影、つまりPhotogrammetryにおいての「実写パート(勝手にネーミング)」だと思ってる。
良い写真データさえあれば後でいくらでも処理し直せるし、ソフト側のアルゴリズムが進化したらより良い3Dモデルが得られたりもする(例:Metashape 1.5)。
なので、実際Photogrammetryをはじめる際はフォトグラファーのほうが圧倒的に有利と考えている。ソフトは学べばいいし(みんな初心者)、クリーンアップなどの作業は分業や外注すればいい、そちらはCGアーティストが強いから。
ではまた来週。
(最後に今週撮ったばかりのLemonを)