Reality Captureプラグイン


今回の記事では、Reality Captureプラグインの概要およびReality Captureノードを使用したシーンの構築や各パラメーターについてご紹介します。
Reality Captureプラグインについては、SideFX社ホームページ(英語)で紹介されています。併せてご参照ください。

インテグレーション

Reality Captureプラグインを使用した場合、Houdini内からReality Captureプロセスを実行して、パイプラインを合理化することができます。入力から複数の画像を取得して、出力として高解像度モデルを生成し、Houdiniのメッシュパイプラインで実行できるように設計されています  。Reality Captureの全ての機能を完全に置き換えるようには設計されていませんが、Houdiniパイプラインに正確に適応します。
Reality Captureは、通常の画像やレーザースキャンから美しく正確な3Dモデルを自動的に抽出します。最先端の一体型フォトグラメトリソフトウェアソリューションです。

クイックデモ

ライセンス情報

Reality Captureプラグインを実行する場合、有効なReality Captureのライセンスが必要です。Reality CaptureのSteamバージョンを除き、全てのライセンスタイプはプラグインと互換性があり、Promoライセンスは正常に機能します。

互換性情報 

現在、プラグインはWindowsでのみ利用可能です。

Reality Captureプラグインインストール手順

Houdini 17.5の場合、Reality CaptureはGameDevelopment Toolsetとともに配布されます。
GameDevelopment Toolsetのインストール手順

Houdini 18.0の場合、Reality CaptureはSideFX Labsとともに配布されます。
SideFX Labsツールセットのインストール手順については、以下の記事をご参照ください。

Houdiniの内部システムからの直接インストール

Githubからの手動インストール

▼Reality Captureサンプルコンテンツのダウンロードはこちら

Reality Captureライセンスのインストール

最初に、Capturing Reality社のホームページにアクセスし【Download Now】をクリックします。

インストーラーの保存先を指定します。

インストーラーを実行し【Next】をクリックします。

次に、End – User License Agreement(ライセンス契約書)が表示されます。
【I accept the terms in License Agreement】にチェックを入れ【Next】をクリックします。

プログラムファイルの保存先を指定します。
【Next】をクリックします。

【Install】をクリックすることで、インストールが開始されます。

インストール完了後、【Finish】をクリックします。

Reality Captureノードについて

Houdiniで使用することのできる、Reality CaptureノードはGeometryネットワーク内に5つあります。ここからは、各ノードについてご紹介します。

RC Register Images

こちらのノードは、チェーンの始まりであり、画像を追加することが可能です。[Add Images]をクリックすると、ダイアログが起動し画像を選択することができます。

イメージリストは、ディテールアトリビュートとして保存され、次のノードに渡されます。

■補足:このプロセスを自動処理、または完全にバイパスする場合、「images」という名前のstring array detailアトリビュートが必要です。以下のコードを使用して、Pythonでこれを生成することができます。

 my_image_list = []
geo.addAttrib(hou.attribType.Global, "images", my_image_list, False)
geo.setGlobalAttribValue("images", my_image_list)

RC Align Images

このノードは、画像を処理しHoudiniにポイントクラウドを返します。

パラメーター

①Image Downscale Factor

処理時間を短縮するために画像を縮小します。数値1の場合は、拡大縮小はしません。数値2の場合は、画像の半分を拡大縮小して、数値3は画像の4分の1に対して実行します。

②Max Features Per Image

画像ごとに使用される機能の絶対制限を定義します。使用される機能が多いほど速度は遅くなりますが、コンポーネント数が少なくなります。

③Image  Overlap

隣接する画像について表示する際、同じパートで覆われるオブジェクトの画像空間の量を定義します。

④Preselector Features

これは、検出されたフィーチャーからのアライメントで使用されるフィーチャー数です。最適化する場合は、検出されたフィーチャーの4分の1、2分の1に設定します。

⑤Detector Sensitivity

自然な特徴検出は、画像内の場所に焦点を当てます。この場所は、様々な画像およびジオメトリの変換のもとで容易に認識することができ、安定しているようです。
例:視点の変更または照明条件の変更。
この設定により、検出機が安定性をどのように認識するかを制御することができます。Ultraに設定した場合、テクスチャが弱い場所でより多くの特徴点が検出されます。また、これによりポイントが追加され、画像のノイズに起因するテクスチャが生じることがあります。一方、この値を低く設定した場合、画像の登録に使用することができる特徴点が破棄されます。

⑥Draft Mode

ハードコーディングされた低い設定​​でアライメントを実行します。

⑦Cache File 

RC progressファイルを保存する場所です。これらのファイルは、ノードからノードに渡されます。

RC Create Model

RC Create Modelは、アライメントデータを取得し、それを高解像度モデルに変換します。 最初の入力は、RC Align Imagesノードからの出力である必要があります。2番目の入力は、オプションですが、計算領域を制限するための軸調整ボックスです。

■補足:こちらは実際には、到着点ではなくディスク上のキャッシュファイルを処理します。そのファイルは、RC Align Imagesノードにディテールアトリビュートとして保存されます。従って、ポイントクラウドを操作する必要はありません。

パラメーター

Model Options

①Detail Decimation Factor

値が大きいほど、ディテールは低くなり、最終モデルの三角形の数は少なくなります。

②Max PolyCount

モデルを目標とする解像度まで簡素化します。 

③Colorize Model

画像に基づいてモデルのバーテックスカラーを生成します。 

④Generate Triangles

ポイントクラウド以外に三角形も生成します。 

Advanced Options

⑤Use Input’s Model Data

モデルデータは再計算せずに入力データを使用します。これは、異なる単純化されたパスを実行する場合やモデルのCreateノードを連結する際に役立ちます。 

⑥Max Display Polycount

オプションとして、ビューポートで表示されるモデルを削減します。これは、Reality Capture内部のモデルデータとは異なりますが、ビューポートで1億以上のメッシュを読み込まないように制御する場合に役立ちます。 

⑦Export Raw RC Model

内部のReality Captureモデルデータ(フル解像度)をplyファイルにエクスポートします。 

⑧Cache File

RCprogressファイルを保存する場所です。これらのファイルは、ノードからノードに渡されます。 

RC Texture Model

RC Texture Modelは、テクスチャモデルを読み込むための補助ノードです。 
[Create Model]ノードに接続されている場合、テクスチャモデルファイルパスを検出し、ジオメトリを読み込み、テクスチャを使用してマテリアルをセットアップします。 

パラメーター

Texturing Options

①Model Path

エクスポートされたテクスチャオブジェクトファイルへのパスです。テクスチャは、Reality Captureに基づいて自動的に作成されます。

②Max Texture Resolution

Reality Captureは、テクスチャをUDIMとして分割します。これにより、テクスチャのサイズが決定されます。

③Style

Visibility Basedスタイルは、高速かつ鮮明ですが、Photo Consistency Basedスタイルは遅くより複雑な結果になります。

■注意:Reality Captureの開発者によると、低解像度モデルでテクスチャリングプロセスを行う代わりに、モデル、テクスチャを10%削減したバージョンを生成し、低解像度モデルに対して従来のテクスチャベイク処理を行うことを推奨しています。低解像度モデルは、元のモデルと比較した際、大差があるため不適切でぼやけた投影になる可能性があります。 既に、Reality Captureモデルがメモリにロードされているため、このモデルを使用してテクスチャを生成することもできます。これにより、UDIMテクスチャを備えた個別の(僅かに縮小された)モデルが出力されます。つまり、より多くのテクスチャを作成して、良好なテクセル解像度を確保するため、可能な限り高いテクスチャ品質が必要です。

RC Extract Cameras

RC Extract Camerasは、適切に配置された各カメラのポイントを生成します。現在、カメラの位置のみをサポートしています。将来的に、より多くのパラメーターをサポートする予定です。

Reality Captureノードの使用例

今回は、Houdini18.0.348を使用しています。
最初に、Houdiniを実行して、SideFX Labsツールが適切に読み込まれていることを確認します。

Objectネットワーク上でGeometryノードを作成します。こちらでは、名前をTestとしています。

ノードの中に入り、TabキーからRC Align Imagesノードを作成します。

パラメーターから【Get License】ボタンをクリックします。こちらから、Houdini内でライセンス認証を行います。

ボタンをクリックすると、ウェブブラウザが起動します。アカウント登録に使用した、メールアドレスとパスワードを入力して【Sign in】をクリックすることで、ライセンスを認証することができます。

次に、Houdiniに戻り、Geometryネットワーク上でRC Register Images(Beta)ノードを作成します。

パラメーターから【Add Images】を選択し、こちらから画像を読み込みます。

ウィンドウが展開されるので、読み込む画像を選択します。

RC Register Imagesノードの下にRC Align Imagesノードを接続します。

ノードを接続して、RC Align Imagesのパラメーターから【Align Images】をクリックします。

Align Imagesによって、ポイントクラウドとして画像が処理されます。

次に、余計なポイントを削除します。ビューポート上のSelect Pointアイコンを選択します。

TabキーからBlastノードを選択して、RC Align Imagesノードの下に配置します。

パラメーターのGroup欄の右端カーソルアイコンをクリックします。

ビューポート上のポイントを全て選択します。

次に、りんごオブジェクトを形成する以外の不要なポイントをCtrlキーを押しながら、選択解除にします。

すると、BlastパラメーターのGroupにポイントが追加されます。次に、Delete Non Selectedにチェックを入れます。

ビューポートを確認すると、余分なポイントが削除されたことが確認できます。

この状態でバウンディングボックスを作成するため、Blastノードの下にBoxノードを接続します。

更に、Transformノードを接続して、ボックスのサイズ/位置を調整します。

次に、TabキーからRC Create Modelノードを作成し、1番目の入力にRC Align Images、2番目の入力にTransformノードを接続します。

パラメーターから【Create Model】をクリックします。

アライメントデータから高解像モデルが生成されたことが確認できます。また、Blastノードで余分なポイントを削除し、バウンディングを作成することで計算範囲を制限して時間を短縮することができます。
※PCの使用環境によって異なりますが、モデルの生成には多くの時間を要する場合があります。

RC Create Modelノードの下にRC Extract Camerasノードを接続します。

ビューポートを確認すると、配置された各カメラのポイントが確認できます。

こちらのノードは、カメラの向きとして上、横、前方のアトリビュートを抽出することが可能です。

以上で、Reality Captureノードを使用して画像処理を行い、モデルを生成することができました。

■補足
モデルを正確に解析するため、デフォルトの表示設定の一部を変更します。
ビューポート上でDキーを押し、Display Optionsを表示します。
Material > Default Material > Diffuseを[1,1,1]に変更します。

デフォルトの0.4から1.0に変更することで、明度が上がりより正確にオブジェクトを認識することができます。