見出し画像

Text2Light によるテキストからのHDRパノラマ生成を試す

「Text2Light 」によるテキストからのHDRパノラマ生成を試したので、まとめてみました。

1. Text2Light

「Text2Light」は、テキストから4kの「HDRパノラマ」を生成することができる手法です。

「HDRパノラマ」は、3Dシーンのフォトリアルな照明や360度反射をグラフィックスで表現するための最も一般的な方法の一つになります。

2. インストール

インストール手順は、次のとおりです。

(1) 以下のColabノートブックを開く。

(2) 「Setup Environment」の3つのセルの実行。
パッケージがインストールされます。

(3) 「Load model and config」のセルの実行。
モデルをダウンロードします。デフォルトでは「Googleドライブ」からダウンロードしますが、1日のダウンロード数制限に引っかかると失敗します。
「# using onedrive, uncomment if download from onedrive」下のコメントアウト(#)を外して、「OneDrive」からダウンロードした方が良さそうです。

(4) 「Import Library」と「Define some utilities」のセルの実行。
パッケージをインポートし、ユーティリティ関数を準備します。

3. HDRパノラマの生成

HDRパノラマの生成の実行手順は、次のとおりです。

(1) 「Parameters」のセルのパラメータを設定して実行。
プロンプトに「japanese school classroom」(日本の学校の教室)に設定してみました。

・texts : 生成するHDRパノラマの風景を説明するテキストプロンプト
・model : モデル種別 (full / outdoor / indoor)
・sritmo : super-resolution と inverse tonemapping の有効化
・sr_factor: sr factor
・top_k : 上位k個からランダム選択
・temprature : 温度

(2) 「Run Text2Light!」のセルの実行。

(3) 左端のフォルダアイコンから出力されたHDRパノラマ画像をダウンロード。

・Text2Light
 ・Text2Light
  ・text2light_generated
   ・hdr
    
・hdr_[プロンプト].exr
   ・holistic
    
・holistic_[プロンプト].png (256 x 128)
   ・ldr
   
 ・hrldr_[プロンプト].png (4096 x 2048)
    ・ldr_[プロンプト].png (1024 x 512)

OpenEXR」(拡張子はexr)は、各ピクセルの複数の露出値や、複雑な合成のための「ディープデータ」を保存し、他よりも広いダイナミックレンジを持っている画像フォーマットになります。

4. UnityへのHDRパノラマの配置

UnityのSkhyboxにHDRパノラマを配置する手順は、次のとおりです。

(1) Unityの3Dプロジェクトの準備。
(2) Assetsに「hdr_[プロンプト].exr」を配置。
(3) 「hdr_[プロンプト]」を選択し、Inspectorウィンドウで「Texture Shape」に「Cube」を指定して保存。

(4) 新規「Material」を生成し、名前に「BgMat」を指定し、Inspectorウィンドウで、「Shader」に「Skybox → Cubemap」、「Cubemap (HDR)」に「hdr_[プロンプト]」を指定。

(5) Unityメニュー「Window → Rendering → Lighting」を選択し、「Environment」タグを選択し、「Skybox Material」に「BgMat」を指定。

これで、UnityのSkhyboxにHDRパノラマを配置できました。

メタリック(Metalic1:/Smoothness:1)な球を配置すると、周囲が映り込むことを確認できます。

5. 関連



この記事が気に入ったらサポートをしてみませんか?