今回は指向を変えて、「Portal with RTX」の3DモデルをOmniverse Createに読み込んでみます。
Portal with RTX
「Portal with RTX」はSteamで公開されているゲームです。
https://store.steampowered.com/app/2012840/Portal_with_RTX/
「Portal with RTX」で遊ぶには以下が必要です。
- Portal (たまにセールで安くなる)
- NVIDIA RTX 3060以降のGPU (RTX 3060では厳しいかも。RTX 3080以上はほしい)
名作パズルゲームの「Portal」をRTXのレイトレーシングを使って綺麗なレンダリングを行うように改造(MOD)されたものになります。
「NVIDIA RTX Remix」というのを使って開発されたとのこと。
https://www.nvidia.com/ja-jp/geforce/campaigns/play-portal-with-rtx/
https://www.nvidia.com/ja-jp/geforce/rtx-remix/
Omniverse上の環境のようですので(詳細は知らない)USDがあるのでは?
と探すと、ありました!
Portal with RTXで使われているUSDファイルを探す
まず、Steamでインストールしたアプリがどこに保存されているか調べます。
Steamアプリのメニューから「Steam」-「設定」を選択します。
設定ウィンドウで「ダウンロード」-「STEAMライブラリフォルダー」を選択します。
ストレージマネージャーというウィンドウが開きます。
ここでインストールドライブをクリックして、「Portal with RTX」を探します。
この場合は、"K:\STEAMLIBRARY"にインストールされているのを確認できました。
"[STEAMライブラリ]\steamapps\common\PortalRTX"にPortal with RTXがインストールされています(この場合は"K:\STEAMLIBRARY\steamapps\common\PortalRTX")。
この中の"lss\gameReadyAssets\SubUSDs"をファイルエクスプローラで開きます。
usdファイルが多数見つかりました。
これをOmniverse Createで開いてみましょう。
Omniverse CreateでUSDファイルを開く
Omniverse Create 2022.3.1を使用しました。
Contentウィンドウで"[STEAMライブラリ]\steamapps\common\PortalRTX\lss\gameReadyAssets\SubUSDs"を開きます。
キューブを読み込みましょうか。
Searchで"Cube"を入力し、絞り込みを行いました。
"M_PropCompanionCube_A1_01.usd"をダブルクリックしてStageに読み込みます。
おなじみのキューブが読み込まれましたね。
ただ、マテリアルが割り当てられていないというか読み込みに失敗しています。
マテリアルの構成を再割り当て
マテリアル割り当てを見てみましょう。
"/World/Looks/M_Prop_CompanionCube/Shader"のPrimを選択します。
このときの"mdl:sourceAsset"にMDLファイル"AperturePBR_Opacity.mdl"が指定されていますが、これが参照されていません。
"lss/gameReadyAssets/SubUSDs/materials"を見てみると、この中にmdlファイルがありました。
この"AperturePBR_Opacity.mdl"ファイルをPropertyウィンドウの"mdl:sourceAsset"にドラッグします。
テクスチャが割り当てられました。
ただ、ゲームをプレイした方は違和感に気づくかと。
発光がないです(厳密には発光が弱い)。
"/World/Looks/M_Prop_CompanionCube/Shader"のPrimを選択した状態で、
Propertyの"Emissive Intensity"の値を10000.0と大きくしてみました。
これで見慣れたキューブになりました。
USDファイル保存は別フォルダで !
この"M_PropCompanionCube_A1_01.usd"をファイルに保存します。
なお、元のファイルは上書きしないようにしてください!
Omniverse Createのメインメニューで"File"-"Save As"で別フォルダに保存するようにしました。
いろいろ読み込んでみよう
では、同じように様々な3Dモデルを読み込んでみます。
SM_Prop_RTX4090_A1_01.usd
同様に"AperturePBR_Opacity.mdl"を再割り当てしました。
ただ、なんとなく黒が淡いです。
そこで"OmniPBR"のマテリアルに入れ替えることにしました。
その前に現在のShaderで参照されているテクスチャファイルをメモしておきます。
Propertyウィンドウで各数値入力ボックスを右クリックしてCopyを選択すると、クリップボードにパスを格納できます。
- Albedo Map : ./textures/T_Prop_RTX4090_A1_Albedo.dds
- Normal Map : ./textures/T_Prop_RTX4090_A1_Normal_OTH.dds
- Metallic Map : ./textures/T_Prop_RTX4090_A1_Metal.dds
- Roughness Map : ./textures/T_Prop_RTX4090_A1_Rough.dds
DDSファイルを使ってるのですね。
また、従来のゲームではあったOcclusion Mapは見当たりません。
さすがレイトレーシングゲーム。
Stageウィンドウで"/World/SM_Prop_RTX4090_A1_01"のMeshのPrimを選択し、右クリックのポップアップメニューで"Create"-"Material"-"OmniPBR"を選択します。
これでテクスチャはクリアされて灰色になりました。
メモしておいたテクスチャのパスをOmniPBRの各テクスチャパラメータにペーストします。
このとき、"Roughness Map Influence"と"Metallic Map Influence"を1.0に変更します。
これにより、Roughness/Metallicそれぞれはテクスチャのみを使用するようになります。
以下のようになりました。
"Albedo Brightness"を0.2くらいに下げてみました。
これでいい感じになりました。
同じようにこのUSDファイルを別フォルダに保存しました。
SM_Furniture_Desk_A1_01.usd
同じくマテリアルをOmniPBRにしてテクスチャを入れ替え。
"Albedo Brightness"を0.5としました。
このUSDファイルを別フォルダに保存しました。
SM_Prop_Keyboard_01.usd
同じくマテリアルをOmniPBRにしてテクスチャを入れ替え。
"Albedo Brightness"を0.6としました。
このUSDファイルを別フォルダに保存しました。
SK_Character_CameraBot_D_01.usd
この3Dモデルの場合は、Meshは2つのSubsetに分かれていました。
"Camera_Body_01"に対して、OmniPBRを割り当て。
Emissiveの指定があるため、"Enable Emission"をOn、"Emission Intensity"を10000.0としました。
"Camera_Glass_01"に対して、OmniGlassを割り当て。
これはパラメータは変更せず。
以下のようになりました。
このUSDファイルを別フォルダに保存しました。
これくらいにしておきましょうか。
小物の3Dモデルもラスボスもありますので、いろいろ読み込んで遊ぶと楽しそうです。
1つのStageに読み込んで配置
では、今まで保存した3Dモデルを同一ステージに並べてみます。
"RTX-Real-Time"でレンダリングしてます。
Environmentsから背景を変更し、地面のマテリアルを入れ替えました。
Portalの3Dモデルは、ドラッグしてステージに配置するだけです。
素晴らしい3Dモデルが大量にあるため、これだけでも結構遊べそうですね。