DEV Community

KOGA Mitsuhiro
KOGA Mitsuhiro

Posted on • Originally published at qiita.com

VulkanをサポートしたOculus QuestでVisual Effect Graphを使う

はじめに

Unity2019.3になってOculus QuestでVulkanがサポートされました。
更にURP 7.2.0からXR周りが改善されたりXR Interaction Toolkitだけでクロスプラットフォームにカメラリグやコントローラーを扱えるようになっています。

そこでUnityとPackage Managerの機能だけで外部アセットを使わずにOculus QuestでVisual Effect Graphを使ってみます。

できあがったもの

開発環境

  • Unity2019.3.1f1
    • Android Build Support
    • Android SDK & NDK Tools
    • OpenJDK
  • Oculus Quest v13以上

Unityインストール時にAndroid Build Supportを展開してAndroid SDK & NDK ToolsとOpenJDKもチェックします。
0.unity2019.3install.png

手順概要

  1. 新規プロジェクト作成
  2. Oculus Quest向けにProject Settingsを変更
  3. Package Managerから必要なパッケージを追加
  4. VisualEffectGraph Additionsをインポート
  5. シーン構築
  6. ビルドと実行
  7. クオリティ調整

新規プロジェクト作成

UnityHubで新規作成してUniversal Template Projectから作成します。
1.10.new-project.png

Oculus Quest向けにProject Settingsを変更

  1. Androidプラットフォームに変更

    • メニューのファイル > ビルド設定を開き、プラットフォームからAndroidを選択してSwitch Platformボタンを押します。

    2.10.switch-platform2.png

  2. Oculus Quest向けにProject Settingsを変更

    1. Build Settingsのプレイヤー設定ボタンを押してProject Settingsを開きます。
    2. Player > Androidアイコン > その他の設定を開きます。

      • Graphics APIsをVulkanのみに変更
      • 最低APIレベルを4.4から6.0に変更

      2.30.player-settings-after2.png

    3. XR Plugin Managementを開きます。

      1. Install XR Plugin Managementボタン、Oculus XR PluginのInstallボタンの順に押します。
      2. AndroidアイコンのPlugin ProvidersにOculus Loadersを追加します。

      2.50.xr-settings-all2.png

    4. Oculusを開きます。

      • 作成ボタンを押してOculus Quest用の設定を作ります。

      2.80.oculus-all2.png

Package Managerから必要なパッケージを追加

  1. メニューのウインドウ > Package Managerを開き、AdvancedからShow preview packagesをチェックしてプレビューバージョンを見えるようにします。
  2. プロジェクト内をすべてのパッケージに変更して以下のパッケージをインストールします。

    • XR Integration Toolkit
    • Visual Effect Graphの7.2以上
    • Universal RPの7.2以上
    • Android Logcat

    3.10.package-manager.png

VisualEffectGraph Additionsをインポート

  1. Package ManagerのVisual Effect GraphからVisualEffectGraph AdditionsのImport into Projectボタンを押します。

    4.10.import-vfx-additions2.png

  2. Assets/Samples/Visual Effect Graph/7.2.1/VisualEffectGraph Additions/VFX/にアセットが作られますがそのままでは動かないのでメニューの編集 > Visual Effects > Rebuild All Visual Effect Graphsから再コンパイルします。

    image.png

シーン構築

  1. メニューのゲームオブジェクト > XR > Room-Scale XR Rigを選択するとMain CameraがVR用のXR Rigに変換されます。

    5.10.xr-rig2.png
    元のカメラに合わせる場合は以下のTransformになります。
    5.20.xr-rig-transform.png

  2. Assets/Samples/Visual Effect Graph/7.2.1/VisualEffectGraph Additions/Prefabs/にあるVFXのプレハブをヒエラルキーに追加します。

    5.30.vfx-prefab2.png

  3. 追加したVFXをカメラから見やすい位置に調整します。

ビルドと実行

  1. メニューのファイル > ビルド設定を開きます。
  2. デバイスを実行しますからOculus Questを選択します。
  3. ビルドして実行ボタンを押します。
  4. アプリを起動してメニューのウインドウ > 分析 > Android Logcatを開くとVulkanが使われているのが分かります。

    androidlog.png

クオリティ調整

このままでもVisual Effect Graphは動きますがBloomが弱いのでPCと比べると貧弱です。以下の設定を行うとBloomの違いが分かります。
ただしHDRとPostProcessingはOculusの開発者ブログでパフォーマンス低下させると指摘されているようにFPSが更に下がってしまいます。

  1. Assets/Settings/UniversalRP-MediumQuality.assetsAssets/Settings/UniversalRP-OculusQuest.assetsに複製して以下の項目を変更します。

    • HDRを有効にする
    • Anti Aliasing (MSAA)を4xにする
    • Grading ModeをHigh Dynamic Rangeにする

    image.png

  2. Player Settings > 品質にOculusQuestを追加して以下の項目を変更します。

    • AndroidのDefaultに設定する
    • RenderingにUniversalRP-OculusQuestを設定する
    • それ以外はMediumと同じ

    image.png

  3. Player Settings > グラフィックスのスクリプタブルレンダーパイプライン設定にUniversalRP-OculusQuestを設定します。

    image.png

その他

  • カメラのPost Processingを有効にしてStereo Rendering ModeをMultiviewにすると右目の位置がおかしくなります。
  • Post Processingが重いのでFPSは40~60くらいしか出ません。Post Processingを無効にすると70FPSくらい出ます。
  • Visual Effect GraphをRebuildするとOpenGLES3でもVulkanと同様に表示できました。設定ミスの場合OpenGLES3だとVisual Effect Graphのエフェクトが謎のレーザーになってしまいました。 screenshot

Discussion (0)