2
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?

STYLYAdvent Calendar 2024

Day 7

【Unity】Meta QuestのMRでオクルージョンを行う

Posted at

デモ

まずはデモです。手やコントローラーがオクルージョンされていることがわかります。ハードオクルージョンとソフトオクルージョンをボタンで切り替えています。

MetaOcclusion.gif

Depth API

Metaの提供するDepth APIを利用してオクルージョンを実現します。開発者が何か特別な実装をする必要はないので便利で助かります。

参考リンク:Depth APIの概要

以下に公式サンプルが用意されています。

バージョン情報

ツール/SDK バージョン
Unity 2022.3.3f1
Meta XR All in one SDK 71.0.0

準備

以下をmanifest.jsonに追加します。(URPを想定)

    "com.meta.xr.depthapi": "https://github.com/oculus-samples/Unity-DepthAPI.git?path=/Packages/com.meta.xr.depthapi",
    "com.meta.xr.depthapi.urp": "https://github.com/oculus-samples/Unity-DepthAPI.git?path=/Packages/com.meta.xr.depthapi.urp"

PackagesにShaderが追加されるので、オクルージョン処理を行いたいオブジェクトに対して適用すればOKです。
image.png

サンプルコード

ボタン押下でShaderのオクルージョン状態を変更するサンプルです。EnvironmentDepthOcclusionController.csはMetaの提供するコードです。


using System;
using Meta.XR.Depth;
using TMPro;
using UnityEngine;

public class OcclusionToggle : MonoBehaviour
{
    [SerializeField] private EnvironmentDepthOcclusionController _occlusionController;
    [SerializeField] private TextMeshProUGUI _currentOcclusionsModeText;

    private int _currentOcclusionTypeIndex = (int)OcclusionType.NoOcclusion;

    void Update()
    {
        if (OVRInput.GetDown(OVRInput.RawButton.A))
        {
            SwitchToNextOcclusionType();
        }
    }

    private void SwitchToNextOcclusionType()
    {
        _currentOcclusionTypeIndex = (_currentOcclusionTypeIndex + 1) % Enum.GetValues(typeof(OcclusionType)).Length;
        var newType = (OcclusionType)_currentOcclusionTypeIndex;

        _occlusionController.EnableOcclusionType(newType);

        if (_currentOcclusionsModeText)
        {
            _currentOcclusionsModeText.text = $"Occlusion mode: {newType.ToString()}";
        }
    }
}
2
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
2
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?