How to use VRMFirstPerson

FirstPerson と Renderer の可視制御

実行時にVRMFirstPerson.Setupを呼び出すことで、FirstPerson設定に応じた Renderer の可視制御を行うことができます。 明示的に外部から呼び出してください。

Specify the additional render layers for the application

The following layers are defined as constant:

public class VRMFirstPerson : MonoBehaviour
{
    public const int FIRSTPERSON_ONLY_LAYER = 9;
    public const int THIRDPERSON_ONLY_LAYER = 10;

    // 省略
}

{{< img src=”images/vrm/layer_setting.png” >}}

Set Layer in #9 and #10

Call Setup function at runtime and set LayerMask in Camera

  • Call VRMFirstPerson.Setup

  • Set LayerMask for first-person camera view and other camera views

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using VRM;

public class SetupExample : MonoBehaviour
{
    [SerializeField]
    Camera m_firstPersonCamera; // HMDのカメラ

    [SerializeField]
    LayerMask m_firstPersonMask; // HMDのカメラにセットするマスク default | VRMFirstPersonOnly など

    [SerializeField]
    LayerMask m_otherMask; // HMDのカメラにセットするマスク default | VRMThirdPersonOnly など

    [SerializeField]
    VRMFirstPerson m_firstPerson;

    void Reset()
    {
        m_firstPerson = GameObject.FindObjectOfType<VRMFirstPerson>();
    }

    void Start()
    {
        foreach (var camera in GameObject.FindObjectsOfType<Camera>())
        {
            camera.cullingMask = (camera == m_firstPersonCamera)
                ? m_firstPersonMask
                : m_otherMask
                ;
        }

        // VRMFirstPersonの初期化
        if (m_firstPerson != null)
        {
            m_firstPerson.Setup();
        }
    }
}