Unity
Quill
realitycapture

RealityCaptureをQuillで作成したメッシュの頂点数削減ツールとして利用する、ていうかVR版全身スキャン

概要

  • Quill でものすごく描きこみ密度の高いモデルをクオリティを保ったまま最適なポリゴン数に削減する

大風呂敷ひろげちゃったよ、出来るんですかね?

 すいません、この記事思いつきです。本当にできるのか自分でもわかりません。が、そんな見切り発車でこの記事を書いてます。無事成功すればこのままこの記事は掲載される事でしょう。失敗すればこの文章は私の心の肥やしになってそのままハードディスクの(長いので以下略

具体的にはどうするの?

 RealityCaptureを使います。

このソフト、立体化したいターゲットの写真を数百枚用意し、それを分析する事でモデルデータを生成してくれるそうなのです。 Quill で作成したモデルデータはブラシのストロークを真面目にメッシュで表現しているため、普通に数十万ポリゴンを簡単に超え、場合によっては数百万ポリゴンいってもおかしくなかったりします。これを真面目にポリゴン数削減しようとすると相当苦労するので考えました。

「そうだ、Quill のモデルを周囲から写真撮影して RealityCapture に食わせたらいけるんちゃうか?」

と。

うまくいくといいですねぇ。

作業の流れ

  1. Quill でモデリングしたデータを FBX 形式でエクスポート
  2. FBX を Unity にインポートし、モデルの周囲から撮影した写真画像を数百枚生成する
  3. 写真画像を RealityCaptyre に食わせる
  4. モデリングデータが出来てくる

うまくいくといいですねぇ。

Quill でモデリングしたデータを FBX 形式でエクスポート

ここでは、下記動画をご覧ください。

https://youtu.be/Dkrk-OB-njg

FBX を Unity にインポートし、モデルの周囲から撮影した写真画像を数百枚生成する

 というわけで、この記事のために準備したモデルをご紹介します。

バババババーン

 なんか、色使いがアレですが、これには理由があります。決して素体を作ったところで力尽きたとかそういうのではないです。 Quill で作成したモデルなのですが、Quill から FBX に変換し、Unity に食わせ、RealityCapture の入力用画像を生成することにします。

まずは、入力用画像を生成する UnityPackage を用意したので FBXPhotoCreate.zip をダウンロードしてください。

  • Unity を起動する

  • New

  • Project名を適宜入力して Create Project

  • 先ほどダウンロードした zip を解凍し、その中の UnityPackage を実行する

  • Import

  • Project ビューの Scenes を展開し、PhotoCreate をダブルクリック

  • シーンが開く

  • Project ビューに RealityCapture 入力画像を作らせたい FBX ファイルをドロップし、インポートする

  • Project ビューの先ほどインポートした FBX を Hierarchy ビューにドロップする

  • Scene ビューに配置したオブジェクトが表示される
  • もし、Scenew ビューにオブジェクトが表示されない場合、極端にサイズが小さいか、原点がズレているため画面外に表示されているか、またはメッシュそのものが存在してないなどが考えられる

  • Scene ビュー右上の X のコーンをクリック

  • 正面図になる

  • Scene ビューの右上の四角形をクリックする

  • 平行法表示になるので、青緑の枠の中心に FBX モデルが収まるようにハンドルを使って移動させる

  • Scene ビュー右上の Z をクリック

  • 先ほどと同じ用にハンドルを動かして枠の中心に FBX モデルを移動させる

  • 拡大縮小ボタンをクリック
  • FBX オブジェクトのハンドルが拡大縮小になるので、中心の四角をドラッグし、枠内からはみ出ない程度に拡大縮小させる

  • Scene ビュー右上の X をクリック

  • こちら側の視点についても拡大縮小の必要があれば調整し、枠内に収まるようにする

  • Hierarchy ビューの FBX モデルのノードを全て展開する
  • Project ビューの Materials フォルダを展開する
  • Project ビューの QuillMaterial を Hierarchy ビューのメッシュのあるノードにドロップする
  • FBX モデルのメッシュの存在するノードは、Quill で作成した時のレイヤーと同じ構造になっているので Quill モデルを作成した君が知っている筈なのである

  • FBX モデルに色がつく

  • Hierarchy ビューの PhotoRoomBase、PhotoCameraBase ノードを展開
  • PhotoCamera をクリック
  • 移動ボタンをクリック
  • カメラの青いハンドルをドラッグし、被写体がはみ出ない距離まで近づけておく

ここまでで画像生成の準備OK

  • 実行

  • FBX モデルをあらゆる角度から描画し、スクリーンショットを撮り始める

  • FBX モデルの回転が終わったら撮影終了なのでプログラムを終了させる

  • Project ビューの何もないところを右クリックし、Show in Explorer をクリック

  • 先ほど生成した画像フォルダが表示されるので、ダブルクリックして中に入る
  • フォルダ名は、日時が反映される

  • このような感じ

これで、RealityCapture に食わせる準備は完了

写真画像を RealityCapture に食わせる

RealityCapture を買っちゃう

 買っちゃいます。 RealityCapture さぁ、あなたも買っちゃいましょう。

  • Steam を起動する

  • 検索窓に「RealityCapture」と入力し、有料の方の RealityCapture をクリック

  • RealityCapture ページを下にスクロールさせ、好みの金額を選択してクリックする
    • 1 Month は一か月毎に 3980 円の支払い
    • 3 Month は三か月毎に 11310 円の支払い

  • 自分用に購入をクリック

  • 必要事項を記入し、購入

  • 購入完了

  • ライブラリ -> ソフトウェア をクリック

  • RealityCapture を右クリックし、アプリをインストール...

  • 次へ

  • 利用規約をよく読んで同意する

  • 完了

  • ダウンロードが開始されるので待機する

  • ダウンロードが完了すると通知が表示される

写真画像を RealityCapture に食わせる

  • Steam から RealityCapture を起動する

  • 起動後、ウインドウ左上の左から5番目のアイコンをクリックする

  • こんな画面になる

  • Unity で作成した画像フォルダを Ctrl + A で全選択し、RealityCapture の一番左のビューへドロップする
  • もし、何故かドロップできない場合、Ctrl + A で選択したファイルの中に画像ファイル以外のものがまぎれている可能性が大(Thumbs.db とかね)

  • Start をクリックする

  • 終了予告時刻が表示されるのであまりあてにせず気長に待つ

  • スキャン完了
  • 軸がめっさズレてるw

  • RECONSTRUCTION をクリック

  • Texture ボタンをクリック

  • テクスチャ処理が開始されるので絵終了するまで待つ

  • Export の Mesh をクリック

  • ファイル名を適宜入力して 保存

  • Export オプションが表示されるので、テクスチャが True になっている事を確認し、OK をクリック

  • エクスポートされる

以上で、Quill のモデリングデータの変換作業は完了

モデリングデータが出来てくる

  • FBX モデルとテクスチャが出力される

  • Before 353万ポリゴン

  • After 60万ポリゴン

というわけで、テクスチャ付きで Quill のカオスなメッシュが滑らかに最適化されて 350万 -> 60万ポリゴンまで削減されました。 写真画像からモデルを生成する以上は色々形状のきめ細かさが欠損している部分もあるのですが、その辺はスキャンする画像をどううまく撮影して RealityCapture に食わせるかなのかなと考える次第です。

実際単純な形状の場合はそれなりにオリジナルに近い形状になるのですが、髪の毛や装飾品など複雑な形状になると破綻してくる感じなので、この辺は要研究なのかなと思います。

ただ、

こんな感じでメッシュが良い感じでならされて、メッシュに塗った色がテクスチャカラーに置き換わるので良い感じに最適化されていると思います。

というわけで、特にオチのセリフも思い浮かばず今日はこのへんで。

ではまた!