こんにちは。
今日は画像から3Dモデルを作る方法について書いていきたいと思います。
Unityなんかで3Dのモデルが欲しいと思うことが度々あるのですが、そのたびに3Dモデルを購入すると、すごくお金がかかるし、かといって、自分で3DCADやblenderなんかを使ってモデルを作成するのは手間だし、ということで、今回写真を撮ってソフトに入れるだけで3Dモデルを作成できるSFMというのをやってみようと思いました。
SFMについては、詳しくはよくわかっていないのですが、簡単に言うと、たくさんの写真の中から特徴点が同じところを探して、カメラの位置を推定しながら、モデルの位置も推定していくような方法です。(間違っていたら、ごめんなさい)
使うソフト
今回使うのはMeshroomというソフトです。
SFMができるソフトはたくさんあるのになぜこれを選んだのかというと、フリーで使えるというのと、GUIで使えて手軽にできるなと思ったからです。
Meshroomは以下のページからダウンロードできます。
AliceVision | Photogrammetric Computer Vision Framework
現在、対応しているのは、WindowsとLinuxだけのようです。
僕は使っていないので関係ありませんが、Macの方は使うことができないので、別のソフトを探してください。
このソフトはオープンソースで、GitHubでも公開されています。
GitHub - alicevision/meshroom: 3D Reconstruction Software
そういえば、書き忘れていたのですが、このソフトはcudaの使えるGPU(要は、NVIDIAのGPU)がないと動きません。
このソフトがというよりも、SFMソフトウェアは大体GPUが積んであるのが前提になっているような気がします。
モデルの写真を撮る
今回は、身近なものと思って、以下の画像のカッターをモデルにしたいと思います。
まあ、普通のTajima製のカッターですね。
愛用しているので、汚れています。
この画像を見ればわかると思いますが、下に字が印刷されている紙を置いて撮影しました。
これは、特徴点が見つかりやすいので、おいています。
実際にSFMソフトウェアを販売している方に聞いたときに、下に新聞紙などを置くと、きれいにモデルが作れると教えてもらいました。
撮る枚数は、20枚程度でも行けるような気がしましたが、一応 40枚くらいとりました。
3Dモデルを作成する
それでは、ここからは、Meshroomを使っていきます。
まず、ダウンロードしたもの(zipファイル)を解凍します。
その中にあるexe(下の画像のやつ)を実行します。
すると、ソフトが立ち上がり、以下のような画面が出ます。
あとは、以下の画像のように、撮った画像をドラッグアンドドロップします。
できたら、startを押しましょう。
最初startを押すと、saveしてくださいと出るので、saveします。
以下の画像のような感じです。
今回は適当にmodelという名前にしました。
ここまで来たら、もう一回startを押しなおすと、処理が開始します。
pcのスペックや撮った画像にもよりますが、30分くらいかかると思います(そうとういいGPU を複数枚さしていますという人はかからないかもしれませんが)。
待ち時間は長いですが、自分でモデリングするよりは間違いなく、速くて楽なので、おとなしく待ちます。
完了すると、以下のようなものが右側の画面に表示されます。
この白いのがカメラの位置です。
うまくできているように見えますね。
実際に、出来たモデルは以下のページに置いておきます。
見ればわかりますが、全然うまくできていないです。
特に、エッジがうまく出ていません。
原因はおそらくスマホのカメラでやったことにあると思います。
高いデジタルカメラでやると、もっときれいにできた覚えがあります。
また、もしかしたら、ソフト側での設定が足りていないのかもしれません。
ということで、今回は写真(画像)から3Dモデルを作ってみました。
やってみると奥が深そうなので、皆さんもぜひやってみてください。
きっと楽しいと思います。