LoginSignup
15
11

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-02-17

はじめに

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. Main Cameraのnear clipがデフォルトの0.3では遠いので0.01に変更します。

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

    5.30.vfx-prefab2.png

  4. 追加した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
15
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
11