Craneです。
前回はフォトグラメトリソフト 3DF Zephyrのフリー版でモデルを作りましたが、
今回は有料ソフトであるRealityCaptureを使ってみます。機能が多くて使いこなせていませんが・・・このソフトはクオリティがすごいです。初めて使ったときは精度の高さに感動しました。
(Steam版で月額約4千円です)
https://store.steampowered.com/app/489180/RealityCapture_Steam_Edition/3DF Zephyr – photogrammetry software – 3d models from photos (3dflow.net)
RealityCaptureのワークフロー
流れは基本的に3DF Zephyrと同じです。3DF Zephyrでモデル化したものと同じ写真群でトライしてみます。
①のInputsで写真を選択、②のAlgn Imagesで点群を作成、③のCalculate Modelでメッシュ作成、④のTextureでテクスチャ作成、の順でモデル化ができます。
Textureの前にメッシュをColorizeすると、頂点に色を付けられるのですが、しなくても普通にモデル化できるため私はそのままTextureに進んでいます。
出力されたモデルです。精度の高さに惚れ惚れします。素晴らしい!!
モデルの修正 – 余分なメッシュを削除
まずは、台座部分の余計なメッシュを削除します。
「RECONSTRUCTION」→ 「Selection」→「Lasso」で投げ縄ツールを選択。Ctrl+Cを押しながら削除したい領域を選択していきます。
次に「Tools」→「Filter Selection」で、選択した部分を取り除けます。
できました。
モデルのサイズを確認(巨大)
さて、objで出力してみましたが、450MBと桁違いのサイズになっています。デフォルト設定でこのクオリティですが、頂点数も数百万あり、これは多すぎます。
ここから1~2MBをターゲットに削減していきますが、まずはモデルをきれいにします。
Blenderでのモデルの修正 - メッシュを滑らかにする
Blenderを立ち上げ、インポートします。
ちなみにメッシュが450MBもあると、Blenderにインポートするのも一苦労で時間がかかります。
PCの処理速度が追い付かない場合は、一旦RealitiCaptureで「2.Process」→「Simplify」で少し頂点数を減らしてから出力することをお勧めします。
よくよく見ると、頬のあたりなど形が歪んでいます。スカルプティングで修正します。
モデルをマウスで選択してから、「スカルプトモード」に変更します。
「スムーズ」ブラシできれいにしていきます。もともとの頂点数が多いため、滑らかに修正が可能です。
こんな感じにしました。
Blenderからobjファイルで出力します。
モデルの修正 – スカルプトしたモデルをRealityCaptureに再インポート
RealityCaptureで、「RECONSTRUCTION」→「Imort」→「Import Model」から、先程Blenderで出力したobjをインポートします。
その後、再び「WORKFLOW」→「Texture」でテクスチャを貼り付けます。
きれいにテクスチャが貼り付けられました。このモデルをベースにポリゴンの頂点数を削減していきます。
「Simplify Tool」で頂点数を減らす
「Simplify」→「Simplify Tool」で頂点数を削減します。Typeで「Relative」を選択し、Target triangle percentageを 10%程度にしてみます。
ボタンを押すと、頂点数が1/10になります。外観を確認し、破綻がなければOKです。ここから再度、objへエクスポートします。
Blenderへ再インポートし、頂点を減らす
再びBlenderでインポートし、「編集モード」にします。先程、頂点数を1/10にしており、現段階で147,427頂点となっています。
なぜ、Blenderで編集するかというと、RealityCaptureの「Simplify」のみだと、モデルの部分によってよりメッシュを細かくしたい部分・粗くてもいい部分の使い分けが難しいからです。
14万でもまだ頂点数が非常に多いため、すべてを選択し、一旦、「形状のポリゴン数削減」で頂点数を1/10にします。
これで頂点数が15,000弱になりました。もう一声削減します。
顔は精度高く保ちたいため、ほかの部分を選択して再度「形状のポリゴン数削減」で削減。
見づらいですが、これで約7千頂点になりました。
なお、頂点を減らすまでのやり方は匙加減ですので、色々と試してみてください。
Blender以外にもMeshMixerというツールなどもおすすめです。
モデルの修正 – RealityCaptureでハイポリ→ローポリへテクスチャをReprojection
再びRealityCaptureへインポートします。テクスチャがところどころ破綻していますね。
「Tools」→「Texture Reprojection」で、テクスチャを再構築します。
Source modelには、ハイポリのモデルを、Result modelには、最後にインポートしたモデルを選択します。これで、ハイポリモデルをベースにしてローポリモデル用のテクスチャが再構築されます。
(上のキャプチャで「Model 3」「Model 6」と記載されていますが、objをRealityCaptureから出力する際にデフォルトで表示されるモデル名と合致しますので、メモなどしておくといいかも)
Normal reprojectionを有効にしておくと、ハイポリモデルをベースにしたローポリモデルの法線をノーマルマップとして出力してくれます。ローポリでクオリティを上げるには非常に有効な方法です。
ノーマルマップについてはwikipediaなどを参照ください。
Reprojection後のモデルです。ほぼ見た目が変わらず7000頂点程度に削減できています。objの容量も2MB弱でした。
今回は以上です。少しでも参考になれば幸いです。
“バーチャルアートミュージアムを作る(8)フォトグラメトリ - RealityCaptureによるモデル作成” への1件の返信