Closed8

VR * MultiplayerのUdemy学習メモ

だーら(Flamers / Memotia)だーら(Flamers / Memotia)

環境構築

既知の問題: ユニバーサルレンダーパイプライン(URP)を使用している場合、MSAAレベルを手動で4xに設定する必要があります。Oculusでは、URPでMSAAレベルが自動的に設定されない問題を認識しています。修正が公開され次第、「リリースノート」ページでお知らせする予定です。

  • URPのMSAAの設定はここから

XRI初期設定

名称変更

Deprecated XRRig which was replaced by XROrigin in a new dependent package XR Core Utilities. XROrigin combines the functionality of XRRig and ARSessionOrigin.

Action-basedとDevice-basedの違いについて

https://docs.unity3d.com/ja/Packages/com.unity.xr.interaction.toolkit@2.0/manual/general-setup.html#アクションベースの動作とデバイスベースの動作の違い

Tracking Origin

  • このUdemyでは、XROriginのTracking Origin ModeをFloorにしている
    • 「現実世界の床を、ゲームの床と合わせるため」とのこと
    • 「一方で、Deviceは、ストーリーテーリングなど動かず定常で体験するVRに向いている」とのこと

他の設定用GameObject

  • XR Interaction Manager(GameObject)が、インタラクトするもの(コントローラー)とされるもの(ものなど)を結び付ける
  • ヒエラルキーにInput Action Managerを作成、同コンポーネントを追加
    • これも新Input System関連だが詳細理解せず

  • Preset Managerでコントローラーの設定をする。(これ理由分かってない)
    • 設定後、XROriginをdeleteして再度Createすると、コントローラーが割り当てられた状態で生成される
だーら(Flamers / Memotia)だーら(Flamers / Memotia)

デバッグ

  • Air Linkをつないだ状態で(Oculus Riftのホームにいる状態)、Unityエディターの再生を押すとPCVRとして再生できる(Quest単機でのテストではないけどBuildする必要がなくてよいかも)
だーら(Flamers / Memotia)だーら(Flamers / Memotia)

インタラクション

インタラクションレイヤーについて

新しいインタラクションレイヤーを追加するには、Project Settings ウィンドウで Interaction Layers を編集します。これらのレイヤーは、Edit > Project Settings > Tags and Layers で定義される物理演算レイヤーとは無関係です。

持つ位置

  • XR Grab Interactable > Attach Transformで変更可能

対象のオブジェクトが自分と当たり判定を持ってしまう問題の解決

  • 自身(XR Origin単体、子オブジェクトを含まない)に、Playerのレイヤーを設定する
  • インタラクタブルに、Interactableのレイヤーを設定する
  • Project Settings > PhysicsのLayer Collision Matricsで設定
だーら(Flamers / Memotia)だーら(Flamers / Memotia)

UI

  • XR用のUI Canvasが作成できる

ネットワーク

  • XROriginを、Generic VR Playerの子に配置する
    • XROriginは、HMDにアクセスするが、これはローカルのみである必要があるから。
    • Generic VR Playerに対してPhotonViewをアタッチする
    • アバターはXROriginの子ではなく、Generic VR Playerの子として配置する(XROriginと並列。リモートのXROriginはinactiveになる)
だーら(Flamers / Memotia)だーら(Flamers / Memotia)

要調査メモ

targetの前の()は?

RoomManager roomManager = (RoomManager)target;

=> キャスト
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/types/casting-and-type-conversions

outなど参照渡し

シングルトンを使う必要のある状況

  • Sceneの読み込みの中でSpawnされるオブジェクト(Player)についているスクリプトから、Scene内の別のゲームオブジェクトについているスクリプトのメソッドを利用したいときに発生?
  • 関係あるか分からないけど、どういう順番でそれぞれのゲームオブジェクトが生成されて、スクリプトのメソッドが実行されるのか

interfaceの概念

だーら(Flamers / Memotia)だーら(Flamers / Memotia)

未解決Unityエディターエラー

  • 起動してから、2回目のplayで必ずクラッシュする(1回目は成功する)。Questをつなげているかは関係ない
  • エラー時のログ
Obtained 47 stack frames
0x00007ffaa3456449 (ViveOpenXRHandTracking) xrNegotiateLoaderApiLayerInterface
0x00007ffa54480b9b (openxr_loader) xrWaitSwapchainImage
0x00007ffa5446443b (openxr_loader) xrWaitSwapchainImage
0x00007ffa54465f9f (openxr_loader) xrWaitSwapchainImage
0x00007ffa54458786 (openxr_loader) xrWaitSwapchainImage
0x00007ffa9b2b8d3e (UnityOpenXR) session_RequestExitSession
0x00007ffa9b28e110 (UnityOpenXR) DiagnosticReport_StartReport
0x00007ffa9b28d4d9 (UnityOpenXR) DiagnosticReport_StartReport
0x00007ff6a7d77725 (Unity) 
0x00007ff6a7e70b1b (Unity) 
0x00007ff6a7d7402d (Unity) 
0x00007ff6a6a7f5c3 (Unity) 
0x000002f48e1ca6fa (Mono JIT Code) (wrapper managed-to-native) UnityEngine.SubsystemDescriptorBindings:Create (intptr)
0x000002f48e1ca57b (Mono JIT Code) UnityEngine.IntegratedSubsystemDescriptor`1<TSubsystem_REF>:Create ()
0x000002f48e1ca50b (Mono JIT Code) UnityEngine.IntegratedSubsystemDescriptor`1<TSubsystem_REF>:CreateImpl ()
0x000002f48e1ca4c8 (Mono JIT Code) UnityEngine.IntegratedSubsystemDescriptor:UnityEngine.ISubsystemDescriptor.Create ()
0x000002f48e1c9b09 (Mono JIT Code) [XRLoaderHelper.cs:118] UnityEngine.XR.Management.XRLoaderHelper:CreateSubsystem<TDescriptor_REF, TSubsystem_REF> (System.Collections.Generic.List`1<TDescriptor_REF>,string) 
0x000002f48e1c994b (Mono JIT Code) [OpenXRLoader.cs:477] UnityEngine.XR.OpenXR.OpenXRLoaderBase:CreateSubsystem<TDescriptor_REF, TSubsystem_REF> (System.Collections.Generic.List`1<TDescriptor_REF>,string) 
0x000002f48e1c9623 (Mono JIT Code) [OpenXRLoader.cs:265] UnityEngine.XR.OpenXR.OpenXRLoaderBase:CreateSubsystems () 
0x000002f48e1b4ee3 (Mono JIT Code) [OpenXRLoader.cs:237] UnityEngine.XR.OpenXR.OpenXRLoaderBase:InitializeInternal () 
0x000002f48e1ae623 (Mono JIT Code) [OpenXRLoader.cs:183] UnityEngine.XR.OpenXR.OpenXRLoaderBase:Initialize () 
0x000002f48e1aded7 (Mono JIT Code) [XRManagerSettings.cs:190] UnityEngine.XR.Management.XRManagerSettings:InitializeLoaderSync () 
0x000002f48e1addb3 (Mono JIT Code) [XRGeneralSettings.cs:176] UnityEngine.XR.Management.XRGeneralSettings:InitXRSDK () 
0x000002f48e1adc53 (Mono JIT Code) [XRGeneralSettings.cs:149] UnityEngine.XR.Management.XRGeneralSettings:AttemptInitializeXRSDKOnLoad () 
0x000002f48f30b8f5 (Mono JIT Code) (wrapper runtime-invoke) object:runtime_invoke_void (object,intptr,intptr,intptr)
0x00007ffaa020e4b4 (mono-2.0-bdwgc) mono_jit_set_domain
0x00007ffaa014e764 (mono-2.0-bdwgc) mono_object_get_virtual_method
0x00007ffaa014e8fc (mono-2.0-bdwgc) mono_runtime_invoke
0x00007ff6a74a58c4 (Unity) 
0x00007ff6a74a04e4 (Unity) 
0x00007ff6a7158f5c (Unity) 
0x00007ff6a715e10f (Unity) 
0x00007ff6a71a9642 (Unity) 
0x00007ff6a71a787b (Unity) 
0x00007ff6a71a83d2 (Unity) 
0x00007ff6a71a8f7b (Unity) 
0x00007ff6a71acb71 (Unity) 
0x00007ff6a71ad14f (Unity) 
0x00007ff6a838c296 (Unity) 
0x00007ff6a809d2a5 (Unity) 
0x00007ff6a80ac7e7 (Unity) 
0x00007ff6a80afbed (Unity) 
0x00007ff6a84fb00a (Unity) 
0x00007ff6a84ff8bb (Unity) 
0x00007ff6a98328be (Unity) 
0x00007ffb46757034 (KERNEL32) BaseThreadInitThunk
0x00007ffb46cc2651 (ntdll) RtlUserThreadStart
このスクラップは2022/08/15にクローズされました