Reality Captureを使用した3Dデータ(fbxデータ)の作成
Part1であっさりとできてしまった「まほろばの標(しるべ)」のUnreal Engineへの取り込み作業。あまりにも簡単にできてしまったため手順を記録しておらず再現できなくなってしまった。
まず前回使用した「まほろばの標」の写真は、卒論でSfM(Structure from Motion)の研究用に撮影し、データの取り出しに成功した写真である。対象物をぐるっとまわりながら撮影すれば良いことはわかっていたのだが、実際にやってみたらどうなるか・・・以下、写真撮影からやりなおして卒論テンプレート風に記録してみた。
第一節 Reality Captureを使用した3Dデータ(fbxデータ)の作成
Reality CaptureはEpic Gamesが提供するフォトグラメトリアプリケーションであり、撮影された複数の写真から3Dデータを作成することができる。レーザースキャナー等の特別な機材を使用することなく、スマホ等のカメラを使用して対象物を撮影することによりフルカラーの3Dデータを得ることができる。安田女子大学造形デザイン学科一期生の原田の研究(2020卒論)によると複数の写真から3Dデータを得る技術はSfM(Structure from Motion)と呼ばれ、ドローンを使用して建物等を撮影し景観ごと3Dデータ化する作業等に使用されている。
1.1. 写真撮影
安田女子大学1号館アトリウムには彫刻家 杭谷一東氏制作の「まほろばの採光」が設置されている。今回はこのオブジェを3Dデータ化し、Unreal Engineに設置する作業までを行った。
使用したカメラはSONY ZV-1で、スチール写真モード(JPeg L 17MB)を使用した。先述の原田の卒業研究にならい、オブジェを取り囲むように高さを変えながら撮影を行ったが、設置場所の制約から障害物を避けながらの撮影となった。
撮影は写真2.に示すポイントで高さを変えながら行い、35mm画角を基本として写真3.に一部を示す150枚の写真を撮影した。
1.2. Reality Captureの起動と写真の読み込み
今回の試みでは、Reality Capture 及び Unreal Engine とも、ノート型PCである、HP Spectre x360を使用した。CPUはインテル Core Ultra 7 プロセッサー 155H、グラフィックボード NVIDIA GeForce RTX 4050、32Gbyteのメモリーを搭載したモデルである。
Epic gamesランチャーからRealityキャプチャーをインストールし起動する。
Reality Captureを起動後、画面構成を左上、2番目の縦3画面構成を選択し、左から 1DS,2DS,3DSの設定とした。次に撮影した写真を収めたフォルダを開き、写真を全て選択した状態で、1DSのパネルのコントロールポイントにドロップすると写真の登録が行われた。
1.3. アラインメント(点群データの作成)
左上の「ワークフロー」の隣の「アラインメント」を選択し、その下の「アラインメント」のボタンを押すと、読み込まれた写真画像を配列、そののずれを検出・計算し、立体的な点群データが得られた。
点群データの範囲指定のボックスをターゲットのオブジェをギリギリ囲むように調整した。一番上の 「SCENE3D」パネルを選択し、その下の「VIEW」を選択し、「遠近法」を「上」「右」「左」「正面」とそれぞれ切り替えながら範囲指定の箱の大きさを調整した。
VIEWを正面に向け、VIEWの隣の「TOOLS」に切り替える。画面左上の「Set Ground Plane」のメニューから「Set Ground by REconstruction Region」を選択し、拡大しながらモデルの床面とフレームの底辺が一致するように調整した。
1.4. 面(ポリゴン)を貼る
点群データの整理が済んだら、アライメント右隣の「MESH MODEL」を選択する。SCENE 3DのTOLLSメニューのCheckがついた項目を一通り試し、データに異常がないことを確認して、「Normal Detail」のボタンを押すと点群にポリゴンが貼られた。
ポリゴン数が多いとデータ処理に時間がかかり、処理エラーの確立も高まる。このモデルのポリゴン数は16,175,465であったが、ポリゴン数=解像度を 1/100以下に落としてもモデルの形状品質は保たれるため、ここではポリゴン数を 100,000にまで落とすこととした。 SCENE 3DのTOOLSから、Select Allを押し全ポリゴンを選択する。さらに、「Simplify Tool」を選択し、左下に出てきた簡素化ツールの目標の三角形数とした 100000 を入力し、「簡素化」のボタンを押すとポリゴン数の削減が実施された。
ノイズとして空中に浮遊するポリゴンを削除する方法は、 SCENE 3D、TOOLS の "Lasso"投げ縄ツールを使用する。投げ縄ツールで不要なポリゴンを選択し、"Filter Selection"を適用すると不要ポリゴンが削除された。
1.5. テクスチャーを貼り、カラー化する
ポリゴンを貼った3Dモデルが完成したら、 MESH MODELのTextureを押し、撮影した写真を適用しテクスチャーを貼ったカラーモデルが作成された。
1.6. fbx形式で保存する
完成した3DデータをUnreal Engineに読み込めるようにするために、fbxの形式で出力を行う必要がある。
画面左上のワークフローに戻り「Export」を選択。出力フォルダ、ファイル名を指定して保存を押すと、設定パネルが開く。まずトランスフォーメーションの設定の変換プリセットをUnreal Engineを含むタブに設定する。
次に設定の各項目を開き、メッシュ設定のファイルにエクスポート、テクスチャオプションのテクスチャをエクスポートをそれぞれ「はい」に設定しOKを押すと fbx形式のファイルが出力された。
第二節 Unreal Engineへの取り込み
制作したfbxファイルは、ファイルのインポートを行い、コンテンツブラウザに登録したアセットを配置するだけでUnreal Engineの世界に取り込むことができた。
本文では成功した場面のキャプチャ写真のみを組み合わせて使用しているが、正しくモデルを取り込むまでに何回か失敗を繰り返している。
失敗例1は、Reality Captureでアライメントを行った後、処理する点群の範囲をデフォルトのままで行ったためポリゴン数が多くなりすぎてかすれた状態の環境ごとデータ読み込まれた例である。
失敗例2の左側はポリゴン数をもとのままで処理し、出力設定を誤った例、右側も出力設定を誤りテクスチャーをoff、カメラ位置の表示をONしてしまった例である。
また、写真撮影時にオブジェの最上部の写真が十分でなく、データ化する際に穴が開いてしまっていた。穴は自動的に塞がれるが余計なポリゴンがつくためノイズとして残ってしまった。
失敗してロスするのは時間だけであるため、今後も試行錯誤を重ねながらこのスキームを完成させたい。