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

<img src="http://megamin.jp/wp-content/uploads/2018/03/20090827-4.jpg" alt="" />


# 概要

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



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

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



# 具体的にはどうするの？

　<a href="https://www.capturingreality.com/" target="_blank">RealityCapture</a>を使います。

<img alt='' class='alignnone size-full wp-image-2449 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5aa23baefd.png' />

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

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

と。

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



# 作業の流れ

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

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



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

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

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



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

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


<img alt='' class='alignnone size-full wp-image-2450 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5aa44afe1a.png' />

バババババーン

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

まずは、入力用画像を生成する UnityPackage を用意したので <a href="http://megamin.jp/wp-content/uploads/2018/03/FBXPhotoCreate.zip" target="_blank">FBXPhotoCreate.zip</a> をダウンロードしてください。


<img alt='' class='alignnone size-full wp-image-2451 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5aa694d805.png' />

- Unity を起動する


<img alt='' class='alignnone size-full wp-image-2452 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5aa7ae9366.png' />

- New


<img alt='' class='alignnone size-full wp-image-2453 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5aa898e91a.png' />

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


<img alt='' class='alignnone size-full wp-image-2454 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5aa9d62d54.png' />

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


<img alt='' class='alignnone size-full wp-image-2455 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5aaae0b8bb.png' />

- Import


<img alt='' class='alignnone size-full wp-image-2456 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5aac6a0fc4.png' />

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


<img alt='' class='alignnone size-full wp-image-2457 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5aad62b5bf.png' />

- シーンが開く


<img alt='' class='alignnone size-full wp-image-2458 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5aae551e79.png' />

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


<img alt='' class='alignnone size-full wp-image-2459 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5aaf407b21.png' />

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


<img alt='' class='alignnone size-full wp-image-2460 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ab0385f5b.png' />

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


<img alt='' class='alignnone size-full wp-image-2461 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ab14a5ff8.png' />

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


<img alt='' class='alignnone size-full wp-image-2462 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ab280c87a.png' />

- 正面図になる


<img alt='' class='alignnone size-full wp-image-2463 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ab3a8954c.png' />

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


<img alt='' class='alignnone size-full wp-image-2464 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ab4a27029.png' />

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


<img alt='' class='alignnone size-full wp-image-2465 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ab5c28f98.png' />

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


<img alt='' class='alignnone size-full wp-image-2466 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ab709a09f.png' />

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


<img alt='' class='alignnone size-full wp-image-2467 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ab82449d2.png' />

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


<img alt='' class='alignnone size-full wp-image-2468 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ab9989460.png' />

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


<img alt='' class='alignnone size-full wp-image-2469 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5abb4f339f.png' />

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


<img alt='' class='alignnone size-full wp-image-2470 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5abc6b2153.png' />

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


<img alt='' class='alignnone size-full wp-image-2471 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5abdfe3440.png' />

- FBX モデルに色がつく


<img alt='' class='alignnone size-full wp-image-2472 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5abfc64a06.png' />

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

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


<img alt='' class='alignnone size-full wp-image-2473 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ac090c08b.png' />

- 実行


<img alt='' class='alignnone size-full wp-image-2474 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ac18972d1.png' />

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


<img alt='' class='alignnone size-full wp-image-2475 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ac25eea20.png' />

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


<img alt='' class='alignnone size-full wp-image-2476 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ac339d176.png' />

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


<img alt='' class='alignnone size-full wp-image-2477 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ac41c9c46.png' />

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


<img alt='' class='alignnone size-full wp-image-2478 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ac4f628ef.png' />

- このような感じ

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



# 写真画像を RealityCapture に食わせる


# RealityCapture を買っちゃう

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


<img alt='' class='alignnone size-full wp-image-2479 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ac7645605.png' />

- Steam を起動する


<img alt='' class='alignnone size-full wp-image-2480 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ac87ddf66.png' />

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


<img alt='' class='alignnone size-full wp-image-2481 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ac975e980.png' />

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


<img alt='' class='alignnone size-full wp-image-2482 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5acaba6b65.png' />

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


<img alt='' class='alignnone size-full wp-image-2483 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5acc0ed21b.png' />

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


<img alt='' class='alignnone size-full wp-image-2484 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5acd550148.png' />

- 購入完了


<img alt='' class='alignnone size-full wp-image-2485 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ace3eb7a6.png' />

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


<img alt='' class='alignnone size-full wp-image-2486 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5acf070aa1.png' />

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


<img alt='' class='alignnone size-full wp-image-2487 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ad00058f7.png' />

- 次へ


<img alt='' class='alignnone size-full wp-image-2488 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ad0e4d2ac.png' />

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


<img alt='' class='alignnone size-full wp-image-2489 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ad1b77b21.png' />

- 完了


<img alt='' class='alignnone size-full wp-image-2490 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ad272bd2a.png' />

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


<img alt='' class='alignnone size-full wp-image-2491 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ad32e6468.png' />

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



# 写真画像を RealityCapture に食わせる


<img alt='' class='alignnone size-full wp-image-2492 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ad48f0daf.png' />

- Steam から RealityCapture を起動する


<img alt='' class='alignnone size-full wp-image-2493 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ad5a7a76c.png' />

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


<img alt='' class='alignnone size-full wp-image-2494 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ad6a1fbf5.png' />

- こんな画面になる


<img alt='' class='alignnone size-full wp-image-2495 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ad78d2503.png' />

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


<img alt='' class='alignnone size-full wp-image-2496 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5adcccca0c.png' />

- Start をクリックする


<img alt='' class='alignnone size-full wp-image-2497 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5add926f72.png' />

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


<img alt='' class='alignnone size-full wp-image-2498 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5adeb2deea.png' />

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


<img alt='' class='alignnone size-full wp-image-2499 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5adf8ca1b7.png' />

- RECONSTRUCTION をクリック


<img alt='' class='alignnone size-full wp-image-2500 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ae0438f0c.png' />

- Texture ボタンをクリック


<img alt='' class='alignnone size-full wp-image-2501 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ae11425bc.png' />

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


<img alt='' class='alignnone size-full wp-image-2502 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ae23aac14.png' />

- Export の Mesh をクリック


<img alt='' class='alignnone size-full wp-image-2503 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ae3594800.png' />

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


<img alt='' class='alignnone size-full wp-image-2504 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ae42641ed.png' />

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


<img alt='' class='alignnone size-full wp-image-2505 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ae4edc6b8.png' />

- エクスポートされる

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



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


<img alt='' class='alignnone size-full wp-image-2506 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ae62b36b6.png' />

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


<img alt='' class='alignnone size-full wp-image-2507 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ae716834f.png' />

- Before 353万ポリゴン


<img alt='' class='alignnone size-full wp-image-2508 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ae7d5fef3.png' />

- After 60万ポリゴン


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

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

ただ、

<img alt='' class='alignnone size-full wp-image-2509 ' src='http://megamin.jp/wp-content/uploads/2018/03/img_5ab5ae901eb29.png' />

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


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

ではまた！