1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VIVE Focus Vision/XR Elite MRアプリ開発 - OpenXR + XR Interaction Toolkit

Last updated at Posted at 2025-07-07

はじめに

Vive Foucus Vision & VIVE XR Elite対応のMRアプリ開発について説明します。
今回はXR Interaction Toolkitからセットアップし、続けてVIVE Focus Vision向けにセットアップします。

PICO4/4U版はこちら。

開発環境

  • Unity 6000.0.48f1
  • Vive Open XR Plugin v2.5.1
  • OpenXR 1.4.1
  • XR Interaction Toolkit 3.2.0

Unityプロジェクトの作成

Universal 3Dテンプレートでプロジェクトを作成してください。

XR Interaction Toolkitをインストールする

Pacakge Manager > 左メニュー3段目のUnity Registry を選択し、検索欄でXR Interaction Toolkitと入力します。
最新バージョンをインストールしたいので、Version HistoryからOther version を選択。LatestをInstallします。現時点では3.2.0が最新です。
image.png

続いて、Samplesタブから Hands Interaction Demoをインポートします。
image.png

エラーが出るのでProject VaridationでFix All してください。
1回では終わらない場合は何度か試してください。一度UnityEditorからフォーカスを外して戻すと処理されて解消する事もあります。
image.png

Samples > XR Interaction Toolkit > 3.2.0 > Hands Interaction Demo > Hands Interaction Demoシーンを開きます。

image.png

XR Origin (XR Rig)のXR Origin > Trackign Origin ModeをFloorに設定します。

image.png

シミュレーターで動作確認する

デバイスのセットアップはまだなので、シミュレーターで動作確認しましょう。
Project Settings > XR Plug-in Management > XR Interaction Toolkitを開き、Use XR Interaction Simulator in scenesにチェックを入れてください。アセットのインポートを促されるのでOKボタンを押してインポートします。
image.png

Playボタンを押すと、XRデバイスでの動作がキーボードでシミュレート出来るようになります。
image.png

Vive Open XR Pluginをインストールする

Vive Open XR Pluginのインストール方法はいくつかありますが、ここではOpen UPMを使ったインストール方法を紹介します。

  • OpenUPM CLIをインストール(初回のみ)
    npm install -g openupm-cli

  • Unity Projectのディレクトリに移動
    cd YOUR_UNITY_PROJECT_DIR

  • -fオプションをつけてVive Open XR Pluginをインストール
    openupm add -f com.htc.upm.vive.openxr

公式ドキュメントのインストール方法 htc公式ドキュメントではUnitypackageのtgzファイルをgithubからダウンロードしてインポートする方法が紹介されています。

https://developer.vive.com/resources/openxr/unity/tutorials/setup-and-installation/how-to-install-vive-openxr-plugin/

Projectをセットアップする

公式ドキュメントのGetting Startに従ってセットアップします。

Build ProfilesでAndroidにSwitch Platform
image.png

Project Settings-> Player-> Resolution and Presentation-> Orientation Default Orientation を Landscape Leftにセット
image.png

2025/07/21追記 Graphics APIはVulkanを削除しなくても動作することを確認 Graphics APIからVulkanを削除し、OpenGLES3のみにする ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43734/3bf4ed08-ce77-420e-8e9f-da49b06decb8.png)

Project Settings-> XR Plug-in Management enable OpenXR and VIVE XR Support feature group.
image.png

Project VaridationでFix All
image.png

ビルドしてVive Focus Vision実機で動作確認

ここでビルドすると、 Unsupported Input Handringのポップアップが表示される場合があります。
これは、新旧Input System両方利用する設定になっている場合にパフォーマンスが低下する事を警告してます。
image.png

ここでは新Input Systemを使いたいので、Noを選択して戻り、Project Settings > Player > Othersの Active Input HandringをBothからInput System Package(New)を選択します。
image.png

選択するとプロジェクトの再起動を求められますので Apply ボタンで再起動します。
image.png
いよいよビルドです。
PlatformがAndroidになっていない場合はSwitch PaltformでAndroidにしてください。
Build & Runボタンを押せば、Hand Interaction DemoシーンがVRで体験できます。
image.png

Hand Trackingを有効にする

image.png

Vive Hand Trackingを有効にする
注意:Hand Tracking SubSystemでは挙動がおかしくなります。Vive Hand Trackingの方を有効にしてください。
image.png

image.png

公式ドキュメント

https://developer.vive.com/resources/openxr/unity/tutorials/hand-tracking/hand-tracking-joint-pose/

パススルーを有効にする

Vive Foucus Visionといえばカラーパススルー。パススルーを有効にしてMRにしましょう。

Main Cameraの設定

Environment > Background TypeをSkyboxからSolid Colorに変更
BackgroundのColorを0x00000000に変更
image.png

XR Plug-in Management > Open XRからVIVE XR Composition LayerとVIVE XR Passthroughを有効にする

image.png

Graphics >2025/07/21追記 Advanced Properties は設定不要な事を確認 ### Preferences > Graphics > Properties > Advanced PropertiesをAll Visibleにする ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43734/72a6f9a9-e3d0-4b37-b86e-2a19d308feb4.png)

HDR設定を変更する

Project Settings > Quality > MobileのRender Pipeline Assetを選択。
image.png

QualityのHDRをオフにする

image.png
または、

QualityのHDRはONのまま、HDR Percisionを64bitに変更する

image.png

PassthroughAPIでパススルーを有効にする

以下のスクリプトをPassthroughSetter.csとしてプロジェクトに追加し、HierarchyにPassthroughSetter GameObjectを追加してセットしてください。

using UnityEngine;
using VIVE.OpenXR.CompositionLayer;
using VIVE.OpenXR.Passthrough;

public class PassthroughSetter : MonoBehaviour
{
    private VIVE.OpenXR.Passthrough.XrPassthroughHTC activePassthroughID = 0;
    private LayerType currentActiveLayerType = LayerType.Underlay;
    private void Start()
    {
        StartPassthrough();
        SetPassthroughToUnderlay();
    }
    
    private void StartPassthrough()
    {
        PassthroughAPI.CreatePlanarPassthrough(out activePassthroughID, currentActiveLayerType, OnDestroyPassthroughFeatureSession);
    }
    
    private void OnDestroyPassthroughFeatureSession(VIVE.OpenXR.Passthrough.XrPassthroughHTC passthroughID)
    {
        PassthroughAPI.DestroyPassthrough(passthroughID);
        activePassthroughID = 0;
    }
    
    private void SetPassthroughToUnderlay()
    {
        if (activePassthroughID == 0){ return;}
        PassthroughAPI.SetPassthroughLayerType(activePassthroughID, LayerType.Underlay);
        currentActiveLayerType = LayerType.Underlay;
    }
}

設定は以上です。
ビルドして実機で動作確認してください。

パススルーで現実に重なってオブジェクトが表示されていれば成功です。

公式ドキュメント

https://developer.vive.com/resources/openxr/unity/tutorials/passthrough/
公式ドキュメントではVIVE XR Composition Layer(Passthrough)を使う形で説明されていますが、v2.5.1ではDeprecatedになっており、VIVE XR Passthroughに置き換わっているようです。

おわりに

お疲れ様でした。
OpenXR + XR Interaction Toolkitにより、デバイス間の違いは吸収され、同じ作り方でコンテンツを開発出来るようになります。
とはいえ、各デバイス向けのセットアップは今回説明した事だけでもPICO4とVIVE Foucs Visionで微妙な差異がある事が分かります。

XRデバイスの環境構築は詰まることも多いので、積極的に知見を共有していきたいと思います。
今回解説したセットアップ済みUnity ProjectはGitHubで公開しますので、自由にご利用ください。
https://github.com/afjk/VIVE-MR-Unity-Template
※ サンプルのHands Interaction Demoのインポートとセットアップは記事に沿ってご自身で設定してください。

XRアプリ開発に少しでもお役に立てれば幸いです。

参考

  • htc公式ドキュメント

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?