mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-04-22 15:07:40 -05:00
2.2 KiB
2.2 KiB
FirstPerson
{doc}FirstPerson と Renderer の可視制御 </implementation/first_person>
Runtime に FirstPerson 機能を有効にする
VR向け FirstPerson 設定の初期化手順です。
- Load する
- Vrm10Instance を取得する
controller.Vrm.FirstPerson.SetupAsyncを呼び出す- ShowMeshes
async Task<RuntimeGltfInstance> LoadAsync(string path)
{
var data = new GlbFileParser(path).Parse();
if (!Vrm10Data.TryParseOrMigrate(data, true, out Vrm10Data vrm))
{
throw new System.Exception("vrm parse error !");
}
using (var loader = new Vrm10Importer(vrm))
{
// 1.
var instance = await loader.LoadAsync();
// 2.
var controller = instance.GetComponent<Vrm10Instance>();
// 3. The headless model that created is added to instance
await controller.Vrm.FirstPerson.SetupAsync(controller.gameObject);
// 4.
instance.ShowMeshes();
return instance;
}
}
VRMの推奨する VR 向けのカメラ構成
ヘッドマウントディスプレイを表すカメラ と その他のカメラという2種類のカメラを想定ます。 それぞれに対して、
- FIRSTPERSON_ONLY_LAYER(このレイヤーを指定した gameObject はその他のカメラから消えます)
- THIRDPERSON_ONLY_LAYER(このレイヤーを指定した gameObject はヘッドマウントディスプレイから消えます)
を定義します。 これにより、ヘッドマウント視点のアバターの描画を抑止しつつ、他者からは見えるようにします。
例: アバターの頭の描画を抑止して前が見えるようにする
VRMは、VRMFirstPersonOnly と VRMThirdPersonOnly という名前のレイヤーを予約しています。
Project Settings - Tags and Layers に VRMFirstPersonOnly と VRMThirdPersonOnly を
設定してください。
サンプルでは、それぞれに 9 と 10 を割り当ています。
初期化時に layer を明示する
追加の引数で指定できます。
var created = await controller.Vrm.FirstPerson.SetupAsync(controller.gameObject, firstPersonOnlyLayer: 9, thirdPersonOnlyLayer: 10);