summaryrefslogtreecommitdiff
path: root/Assets/Samples/XR Hands/1.6.0/HandVisualizer
diff options
context:
space:
mode:
authorpryazha <pryadeiniv@mail.ru>2025-07-02 08:46:23 -0700
committerpryazha <pryadeiniv@mail.ru>2025-07-02 08:46:23 -0700
commit8263edd59284aba390aca011d25b79efecef4c48 (patch)
tree6346e2afaaabd32156601cafaf20d4ee813befaf /Assets/Samples/XR Hands/1.6.0/HandVisualizer
Diffstat (limited to 'Assets/Samples/XR Hands/1.6.0/HandVisualizer')
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/.sample.json4
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/HandVisualizer.unity833
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/HandVisualizer.unity.meta7
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials.meta8
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/Blue.mat159
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/Blue.mat.meta8
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/Green.mat159
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/Green.mat.meta8
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/HandsDefaultMaterial.mat164
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/HandsDefaultMaterial.mat.meta8
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/MaterialPipelineHandler.asset58
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/MaterialPipelineHandler.asset.meta8
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/Red.mat159
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/Red.mat.meta8
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/TransparentRed.mat165
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/TransparentRed.mat.meta8
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/White.mat159
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/White.mat.meta8
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models.meta8
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/LeftHand.fbxbin0 -> 318800 bytes
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/LeftHand.fbx.meta103
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/LeftHandAndroidXR.fbxbin0 -> 170912 bytes
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/LeftHandAndroidXR.fbx.meta247
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/RightHand.fbxbin0 -> 319648 bytes
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/RightHand.fbx.meta103
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/RightHandAndroidXR.fbxbin0 -> 170944 bytes
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/RightHandAndroidXR.fbx.meta247
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs.meta8
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/Joint.prefab522
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/Joint.prefab.meta7
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/Left Hand Tracking.prefab351
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/Left Hand Tracking.prefab.meta7
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/Right Hand Tracking.prefab347
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/Right Hand Tracking.prefab.meta7
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/VelocityPrefab.prefab131
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/VelocityPrefab.prefab.meta7
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/README.md3
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/README.md.meta7
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts.meta8
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/HandProcessor.cs171
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/HandProcessor.cs.meta11
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/HandVisualizer.cs608
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/HandVisualizer.cs.meta11
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/JointVisualizer.cs38
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/JointVisualizer.cs.meta11
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/MaterialPipelineHandler.cs242
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/MaterialPipelineHandler.cs.meta11
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Unity.XR.Hands.Samples.VisualizerSample.asmdef18
-rw-r--r--Assets/Samples/XR Hands/1.6.0/HandVisualizer/Unity.XR.Hands.Samples.VisualizerSample.asmdef.meta7
49 files changed, 5172 insertions, 0 deletions
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/.sample.json b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/.sample.json
new file mode 100644
index 0000000..a128f18
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/.sample.json
@@ -0,0 +1,4 @@
+{
+ "displayName": "HandVisualizer",
+ "description": "Basic sample showing how visualize hands."
+}
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/HandVisualizer.unity b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/HandVisualizer.unity
new file mode 100644
index 0000000..a7cee77
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/HandVisualizer.unity
@@ -0,0 +1,833 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+ m_SceneGUID: 00000000000000000000000000000000
+ m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 9
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 0
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 12
+ m_GIWorkflowMode: 1
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 0
+ m_LightmapEditorSettings:
+ serializedVersion: 12
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_AtlasSize: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAmbientOcclusion: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_FinalGather: 0
+ m_FinalGatherFiltering: 1
+ m_FinalGatherRayCount: 256
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 512
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 256
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 1
+ m_PVRDenoiserTypeDirect: 1
+ m_PVRDenoiserTypeIndirect: 1
+ m_PVRDenoiserTypeAO: 1
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 1
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0}
+ m_LightingSettings: {fileID: 2722834}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 2
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ accuratePlacement: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!850595691 &2722834
+LightingSettings:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ serializedVersion: 4
+ m_GIWorkflowMode: 1
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 0
+ m_RealtimeEnvironmentLighting: 1
+ m_BounceScale: 1
+ m_AlbedoBoost: 1
+ m_IndirectOutputScale: 1
+ m_UsingShadowmask: 1
+ m_BakeBackend: 1
+ m_LightmapMaxSize: 1024
+ m_BakeResolution: 40
+ m_Padding: 2
+ m_LightmapCompression: 2
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAO: 0
+ m_MixedBakeMode: 2
+ m_LightmapsBakeMode: 1
+ m_FilterMode: 1
+ m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0}
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_RealtimeResolution: 2
+ m_ForceWhiteAlbedo: 0
+ m_ForceUpdates: 0
+ m_FinalGather: 0
+ m_FinalGatherRayCount: 256
+ m_FinalGatherFiltering: 1
+ m_PVRCulling: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 512
+ m_PVREnvironmentSampleCount: 256
+ m_PVREnvironmentReferencePointCount: 2048
+ m_LightProbeSampleCountMultiplier: 4
+ m_PVRBounces: 2
+ m_PVRMinBounces: 2
+ m_PVREnvironmentMIS: 1
+ m_PVRFilteringMode: 1
+ m_PVRDenoiserTypeDirect: 1
+ m_PVRDenoiserTypeIndirect: 1
+ m_PVRDenoiserTypeAO: 1
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_PVRTiledBaking: 0
+--- !u!1 &215855080
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 215855081}
+ - component: {fileID: 215855084}
+ - component: {fileID: 215855083}
+ - component: {fileID: 215855082}
+ - component: {fileID: 215855085}
+ m_Layer: 0
+ m_Name: Main Camera
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &215855081
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 215855080}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 944581975}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &215855082
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 215855080}
+ m_Enabled: 0
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5a2a9c34df4095f47b9ca8f975175f5b, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Device: 0
+ m_PoseSource: 2
+ m_PoseProviderComponent: {fileID: 0}
+ m_TrackingType: 0
+ m_UpdateType: 0
+ m_UseRelativeTransform: 0
+--- !u!81 &215855083
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 215855080}
+ m_Enabled: 1
+--- !u!20 &215855084
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 215855080}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 1
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+ m_projectionMatrixMode: 1
+ m_GateFitMode: 2
+ m_FOVAxisMode: 0
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_FocalLength: 50
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.01
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 0
+ orthographic size: 5
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 3
+ m_HDR: 1
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!114 &215855085
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 215855080}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: c2fadf230d1919748a9aa21d40f74619, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_TrackingType: 0
+ m_UpdateType: 0
+ m_IgnoreTrackingState: 0
+ m_PositionInput:
+ m_UseReference: 0
+ m_Action:
+ m_Name: Position
+ m_Type: 0
+ m_ExpectedControlType: Vector3
+ m_Id: e8ff7b7a-9f10-4ee3-8333-563442d7ba93
+ m_Processors:
+ m_Interactions:
+ m_SingletonActionBindings:
+ - m_Name:
+ m_Id: 32444af1-0203-4f80-82eb-ce8caabdcfc3
+ m_Path: <XRHMD>/centerEyePosition
+ m_Interactions:
+ m_Processors:
+ m_Groups:
+ m_Action: Position
+ m_Flags: 0
+ - m_Name:
+ m_Id: 05aa6447-a626-43f2-aaaa-0a7026bc02e0
+ m_Path: <HandheldARInputDevice>/devicePosition
+ m_Interactions:
+ m_Processors:
+ m_Groups:
+ m_Action: Position
+ m_Flags: 0
+ m_Flags: 0
+ m_Reference: {fileID: 0}
+ m_RotationInput:
+ m_UseReference: 0
+ m_Action:
+ m_Name: Rotation
+ m_Type: 0
+ m_ExpectedControlType: Quaternion
+ m_Id: 193e5ce3-4bd7-4b7f-b8d1-4e82524e705c
+ m_Processors:
+ m_Interactions:
+ m_SingletonActionBindings:
+ - m_Name:
+ m_Id: 000caf52-48a9-43c2-9211-0615cc4e6b2d
+ m_Path: <XRHMD>/centerEyeRotation
+ m_Interactions:
+ m_Processors:
+ m_Groups:
+ m_Action: Rotation
+ m_Flags: 0
+ - m_Name:
+ m_Id: 43882e43-112e-47fc-bb4d-c0695fd7ed12
+ m_Path: <HandheldARInputDevice>/deviceRotation
+ m_Interactions:
+ m_Processors:
+ m_Groups:
+ m_Action: Rotation
+ m_Flags: 0
+ m_Flags: 0
+ m_Reference: {fileID: 0}
+ m_TrackingStateInput:
+ m_UseReference: 0
+ m_Action:
+ m_Name: Tracking State Input
+ m_Type: 0
+ m_ExpectedControlType:
+ m_Id: 5a2bcbea-fd36-402d-bf3e-e299ba6113ac
+ m_Processors:
+ m_Interactions:
+ m_SingletonActionBindings: []
+ m_Flags: 0
+ m_Reference: {fileID: 0}
+ m_PositionAction:
+ m_Name:
+ m_Type: 0
+ m_ExpectedControlType:
+ m_Id:
+ m_Processors:
+ m_Interactions:
+ m_SingletonActionBindings: []
+ m_Flags: 0
+ m_RotationAction:
+ m_Name:
+ m_Type: 0
+ m_ExpectedControlType:
+ m_Id:
+ m_Processors:
+ m_Interactions:
+ m_SingletonActionBindings: []
+ m_Flags: 0
+--- !u!1 &447680416
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 447680417}
+ - component: {fileID: 447680420}
+ - component: {fileID: 447680419}
+ - component: {fileID: 447680418}
+ m_Layer: 0
+ m_Name: LeftRuntimeMesh
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!4 &447680417
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 447680416}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &447680418
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 447680416}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Size: {x: 2, y: 2, z: 2}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &447680419
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 447680416}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &447680420
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 447680416}
+ m_Mesh: {fileID: 0}
+--- !u!1 &713583834
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 713583835}
+ - component: {fileID: 713583838}
+ - component: {fileID: 713583837}
+ - component: {fileID: 713583836}
+ m_Layer: 0
+ m_Name: RightRuntimeMesh
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!4 &713583835
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 713583834}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &713583836
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 713583834}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Size: {x: 2, y: 2, z: 2}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &713583837
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 713583834}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &713583838
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 713583834}
+ m_Mesh: {fileID: 0}
+--- !u!1 &935940900
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 935940901}
+ - component: {fileID: 935940902}
+ - component: {fileID: 935940903}
+ m_Layer: 0
+ m_Name: Hand Visualizer
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &935940901
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 935940900}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 944581975}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &935940902
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 935940900}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2e9813c68d7d6f44282ace8bd2d1fd46, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_UseOptimizedControls: 0
+ m_MetaQuestLeftHandMesh: {fileID: 919132149155446097, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_MetaQuestRightHandMesh: {fileID: 919132149155446097, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_AndroidXRLeftHandMesh: {fileID: 919132149155446097, guid: 7eff605df5fc69141bad762b74fb9228, type: 3}
+ m_AndroidXRRightHandMesh: {fileID: 919132149155446097, guid: 49090752ee8bba242ad64a291905ee10, type: 3}
+ m_HandMeshMaterial: {fileID: 2100000, guid: 613690cd962241049a0ec289a6ff835e, type: 2}
+ m_DrawMeshes: 1
+ m_DebugDrawPrefab: {fileID: 6507399986997092475, guid: 254b742d65a15d14b9df756ae77de868, type: 3}
+ m_DebugDrawJoints: 1
+ m_VelocityPrefab: {fileID: 8538602047018081646, guid: 629fd7882ec6bfc499a5fcf20035282b, type: 3}
+ m_VelocityType: 2
+--- !u!114 &935940903
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 935940900}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: ac5903b776721d74786a2e43f00b949a, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_ProcessorExampleMode: 0
+ m_LeftHandSmoothingFactor: 16
+ m_RightHandSmoothingFactor: 16
+--- !u!1 &944581974
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 944581975}
+ m_Layer: 0
+ m_Name: Camera Offset
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &944581975
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 944581974}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 1.2, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 215855081}
+ - {fileID: 935940901}
+ m_Father: {fileID: 1085439597}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1085439595
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1085439597}
+ - component: {fileID: 1085439596}
+ m_Layer: 0
+ m_Name: XR Origin
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1085439596
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1085439595}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e0cb9aa70a22847b5925ee5f067c10a9, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Camera: {fileID: 215855084}
+ m_OriginBaseGameObject: {fileID: 1085439595}
+ m_CameraFloorOffsetObject: {fileID: 944581974}
+ m_RequestedTrackingOriginMode: 0
+ m_CameraYOffset: 1.1176
+--- !u!4 &1085439597
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1085439595}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 944581975}
+ m_Father: {fileID: 0}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1517268251
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1517268253}
+ - component: {fileID: 1517268252}
+ m_Layer: 0
+ m_Name: Directional Light
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!108 &1517268252
+Light:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1517268251}
+ m_Enabled: 1
+ serializedVersion: 10
+ m_Type: 1
+ m_Shape: 0
+ m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
+ m_Intensity: 1
+ m_Range: 10
+ m_SpotAngle: 30
+ m_InnerSpotAngle: 21.80208
+ m_CookieSize: 10
+ m_Shadows:
+ m_Type: 2
+ m_Resolution: -1
+ m_CustomResolution: -1
+ m_Strength: 1
+ m_Bias: 0.05
+ m_NormalBias: 0.4
+ m_NearPlane: 0.2
+ m_CullingMatrixOverride:
+ e00: 1
+ e01: 0
+ e02: 0
+ e03: 0
+ e10: 0
+ e11: 1
+ e12: 0
+ e13: 0
+ e20: 0
+ e21: 0
+ e22: 1
+ e23: 0
+ e30: 0
+ e31: 0
+ e32: 0
+ e33: 1
+ m_UseCullingMatrixOverride: 0
+ m_Cookie: {fileID: 0}
+ m_DrawHalo: 0
+ m_Flare: {fileID: 0}
+ m_RenderMode: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingLayerMask: 1
+ m_Lightmapping: 4
+ m_LightShadowCasterMode: 0
+ m_AreaSize: {x: 1, y: 1}
+ m_BounceIntensity: 1
+ m_ColorTemperature: 6570
+ m_UseColorTemperature: 0
+ m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
+ m_UseBoundingSphereOverride: 0
+ m_UseViewFrustumForShadowCasterCull: 1
+ m_ShadowRadius: 0
+ m_ShadowAngle: 0
+--- !u!4 &1517268253
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1517268251}
+ m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
+ m_LocalPosition: {x: 0, y: 3, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/HandVisualizer.unity.meta b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/HandVisualizer.unity.meta
new file mode 100644
index 0000000..4662255
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/HandVisualizer.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: ab7acf0d9677fbe4db51bc36647d4fcb
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials.meta b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials.meta
new file mode 100644
index 0000000..557e3d1
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: fe662ea7d4bacf74ea2459d10b988a1b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/Blue.mat b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/Blue.mat
new file mode 100644
index 0000000..17bbc75
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/Blue.mat
@@ -0,0 +1,159 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &-7628788528051855285
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 5
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Blue
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_ValidKeywords:
+ - _EMISSION
+ m_InvalidKeywords: []
+ m_LightmapFlags: 0
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _AlphaTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BaseMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SpecGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_Lightmaps:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_LightmapsInd:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_ShadowMasks:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - PixelSnap: 0
+ - _AlphaClip: 0
+ - _Blend: 0
+ - _BlendOp: 0
+ - _BumpScale: 1
+ - _CameraFadingEnabled: 0
+ - _CameraFarFadeDistance: 2
+ - _CameraNearFadeDistance: 1
+ - _ClearCoatMask: 0
+ - _ClearCoatSmoothness: 0
+ - _ColorMask: 15
+ - _Cull: 2
+ - _Cutoff: 0.5
+ - _DetailAlbedoMapScale: 1
+ - _DetailNormalMapScale: 1
+ - _DistortionBlend: 0.5
+ - _DistortionEnabled: 0
+ - _DistortionStrength: 1
+ - _DistortionStrengthScaled: 0
+ - _DstBlend: 0
+ - _EmissionEnabled: 0
+ - _EnableExternalAlpha: 0
+ - _EnvironmentReflections: 1
+ - _FlipbookMode: 0
+ - _GlossMapScale: 1
+ - _Glossiness: 0
+ - _GlossyReflections: 1
+ - _LightingEnabled: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _QueueOffset: 0
+ - _ReceiveShadows: 1
+ - _Smoothness: 0.5
+ - _SmoothnessTextureChannel: 0
+ - _SoftParticlesEnabled: 0
+ - _SoftParticlesFarFadeDistance: 1
+ - _SoftParticlesNearFadeDistance: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _Stencil: 0
+ - _StencilComp: 8
+ - _StencilOp: 0
+ - _StencilReadMask: 255
+ - _StencilWriteMask: 255
+ - _Surface: 0
+ - _UVSec: 0
+ - _UseUIAlphaClip: 0
+ - _WorkflowMode: 1
+ - _ZWrite: 1
+ m_Colors:
+ - _BaseColor: {r: 0, g: 0, b: 1, a: 1}
+ - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0}
+ - _Color: {r: 0, g: 0, b: 1, a: 1}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ - _Flip: {r: 1, g: 1, b: 1, a: 1}
+ - _RendererColor: {r: 1, g: 1, b: 1, a: 1}
+ - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0}
+ - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/Blue.mat.meta b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/Blue.mat.meta
new file mode 100644
index 0000000..8b54781
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/Blue.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7b26add94f09dc44fb811013f007a3aa
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/Green.mat b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/Green.mat
new file mode 100644
index 0000000..17b20ab
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/Green.mat
@@ -0,0 +1,159 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Green
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_ValidKeywords:
+ - _EMISSION
+ m_InvalidKeywords: []
+ m_LightmapFlags: 0
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _AlphaTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BaseMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SpecGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_Lightmaps:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_LightmapsInd:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_ShadowMasks:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - PixelSnap: 0
+ - _AlphaClip: 0
+ - _Blend: 0
+ - _BlendOp: 0
+ - _BumpScale: 1
+ - _CameraFadingEnabled: 0
+ - _CameraFarFadeDistance: 2
+ - _CameraNearFadeDistance: 1
+ - _ClearCoatMask: 0
+ - _ClearCoatSmoothness: 0
+ - _ColorMask: 15
+ - _Cull: 2
+ - _Cutoff: 0.5
+ - _DetailAlbedoMapScale: 1
+ - _DetailNormalMapScale: 1
+ - _DistortionBlend: 0.5
+ - _DistortionEnabled: 0
+ - _DistortionStrength: 1
+ - _DistortionStrengthScaled: 0
+ - _DstBlend: 0
+ - _EmissionEnabled: 0
+ - _EnableExternalAlpha: 0
+ - _EnvironmentReflections: 1
+ - _FlipbookMode: 0
+ - _GlossMapScale: 1
+ - _Glossiness: 0
+ - _GlossyReflections: 1
+ - _LightingEnabled: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _QueueOffset: 0
+ - _ReceiveShadows: 1
+ - _Smoothness: 0.5
+ - _SmoothnessTextureChannel: 0
+ - _SoftParticlesEnabled: 0
+ - _SoftParticlesFarFadeDistance: 1
+ - _SoftParticlesNearFadeDistance: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _Stencil: 0
+ - _StencilComp: 8
+ - _StencilOp: 0
+ - _StencilReadMask: 255
+ - _StencilWriteMask: 255
+ - _Surface: 0
+ - _UVSec: 0
+ - _UseUIAlphaClip: 0
+ - _WorkflowMode: 1
+ - _ZWrite: 1
+ m_Colors:
+ - _BaseColor: {r: 0, g: 1, b: 0, a: 1}
+ - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0}
+ - _Color: {r: 0, g: 1, b: 0, a: 1}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ - _Flip: {r: 1, g: 1, b: 1, a: 1}
+ - _RendererColor: {r: 1, g: 1, b: 1, a: 1}
+ - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0}
+ - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
+ m_BuildTextureStacks: []
+--- !u!114 &9064977523446290879
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 5
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/Green.mat.meta b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/Green.mat.meta
new file mode 100644
index 0000000..a1073c5
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/Green.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 727f87098255ad04987a60f5f08390bc
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/HandsDefaultMaterial.mat b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/HandsDefaultMaterial.mat
new file mode 100644
index 0000000..704258c
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/HandsDefaultMaterial.mat
@@ -0,0 +1,164 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &-6565127186501960882
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 5
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: HandsDefaultMaterial
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_ValidKeywords:
+ - _ALPHABLEND_ON
+ - _EMISSION
+ m_InvalidKeywords:
+ - _SURFACE_TYPE_TRANSPARENT
+ m_LightmapFlags: 0
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: 3000
+ stringTagMap:
+ RenderType: Transparent
+ disabledShaderPasses:
+ - DepthOnly
+ - SHADOWCASTER
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _AlphaTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BaseMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SpecGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_Lightmaps:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_LightmapsInd:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_ShadowMasks:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - PixelSnap: 0
+ - _AlphaClip: 0
+ - _Blend: 0
+ - _BlendOp: 0
+ - _BumpScale: 1
+ - _CameraFadingEnabled: 0
+ - _CameraFarFadeDistance: 2
+ - _CameraNearFadeDistance: 1
+ - _ClearCoatMask: 0
+ - _ClearCoatSmoothness: 0
+ - _ColorMask: 15
+ - _Cull: 2
+ - _Cutoff: 0.5
+ - _DetailAlbedoMapScale: 1
+ - _DetailNormalMapScale: 1
+ - _DistortionBlend: 0.5
+ - _DistortionEnabled: 0
+ - _DistortionStrength: 1
+ - _DistortionStrengthScaled: 0
+ - _DstBlend: 10
+ - _EmissionEnabled: 0
+ - _EnableExternalAlpha: 0
+ - _EnvironmentReflections: 1
+ - _FlipbookMode: 0
+ - _GlossMapScale: 1
+ - _Glossiness: 0
+ - _GlossyReflections: 1
+ - _LightingEnabled: 1
+ - _Metallic: 0
+ - _Mode: 2
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _QueueOffset: 0
+ - _ReceiveShadows: 1
+ - _Smoothness: 0
+ - _SmoothnessTextureChannel: 0
+ - _SoftParticlesEnabled: 0
+ - _SoftParticlesFarFadeDistance: 1
+ - _SoftParticlesNearFadeDistance: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 5
+ - _Stencil: 0
+ - _StencilComp: 8
+ - _StencilOp: 0
+ - _StencilReadMask: 255
+ - _StencilWriteMask: 255
+ - _Surface: 1
+ - _UVSec: 0
+ - _UseUIAlphaClip: 0
+ - _WorkflowMode: 1
+ - _ZWrite: 0
+ m_Colors:
+ - _BaseColor: {r: 0.66518503, g: 0.66518503, b: 0.66518503, a: 0.64705884}
+ - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0}
+ - _Color: {r: 0.66518503, g: 0.66518503, b: 0.66518503, a: 0.64705884}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ - _Flip: {r: 1, g: 1, b: 1, a: 1}
+ - _RendererColor: {r: 1, g: 1, b: 1, a: 1}
+ - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0}
+ - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/HandsDefaultMaterial.mat.meta b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/HandsDefaultMaterial.mat.meta
new file mode 100644
index 0000000..c5f8f6b
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/HandsDefaultMaterial.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 613690cd962241049a0ec289a6ff835e
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/MaterialPipelineHandler.asset b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/MaterialPipelineHandler.asset
new file mode 100644
index 0000000..024d5c4
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/MaterialPipelineHandler.asset
@@ -0,0 +1,58 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 6772a216ed6f29c42abef904c7d6940d, type: 3}
+ m_Name: MaterialPipelineHandler
+ m_EditorClassIdentifier:
+ m_ShaderContainers:
+ - material: {fileID: 2100000, guid: 7b26add94f09dc44fb811013f007a3aa, type: 2}
+ useSRPShaderName: 1
+ scriptableRenderPipelineShaderName: Universal Render Pipeline/Lit
+ scriptableRenderPipelineShader: {fileID: 0}
+ useBuiltinShaderName: 1
+ builtInPipelineShaderName: Standard
+ builtInPipelineShader: {fileID: 0}
+ - material: {fileID: 2100000, guid: 727f87098255ad04987a60f5f08390bc, type: 2}
+ useSRPShaderName: 1
+ scriptableRenderPipelineShaderName: Universal Render Pipeline/Lit
+ scriptableRenderPipelineShader: {fileID: 0}
+ useBuiltinShaderName: 1
+ builtInPipelineShaderName: Standard
+ builtInPipelineShader: {fileID: 0}
+ - material: {fileID: 2100000, guid: 613690cd962241049a0ec289a6ff835e, type: 2}
+ useSRPShaderName: 1
+ scriptableRenderPipelineShaderName: Universal Render Pipeline/Lit
+ scriptableRenderPipelineShader: {fileID: 0}
+ useBuiltinShaderName: 1
+ builtInPipelineShaderName: Standard
+ builtInPipelineShader: {fileID: 0}
+ - material: {fileID: 2100000, guid: 55fa12dc7870f1e46b6a7f8617949a86, type: 2}
+ useSRPShaderName: 1
+ scriptableRenderPipelineShaderName: Universal Render Pipeline/Lit
+ scriptableRenderPipelineShader: {fileID: 0}
+ useBuiltinShaderName: 1
+ builtInPipelineShaderName: Standard
+ builtInPipelineShader: {fileID: 0}
+ - material: {fileID: 2100000, guid: d149182fa7aa1dc47bd32b2a6da80ec9, type: 2}
+ useSRPShaderName: 1
+ scriptableRenderPipelineShaderName: Universal Render Pipeline/Lit
+ scriptableRenderPipelineShader: {fileID: 0}
+ useBuiltinShaderName: 1
+ builtInPipelineShaderName: Standard
+ builtInPipelineShader: {fileID: 0}
+ - material: {fileID: 2100000, guid: c3474c208278e814cb8d1c29aa806e81, type: 2}
+ useSRPShaderName: 1
+ scriptableRenderPipelineShaderName: Universal Render Pipeline/Lit
+ scriptableRenderPipelineShader: {fileID: 0}
+ useBuiltinShaderName: 1
+ builtInPipelineShaderName: Standard
+ builtInPipelineShader: {fileID: 0}
+ m_AutoRefreshShaders: 1
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/MaterialPipelineHandler.asset.meta b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/MaterialPipelineHandler.asset.meta
new file mode 100644
index 0000000..7e377e5
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/MaterialPipelineHandler.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e22d037d5d9286644b4b81a8b91b5ee5
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/Red.mat b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/Red.mat
new file mode 100644
index 0000000..b323048
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/Red.mat
@@ -0,0 +1,159 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Red
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_ValidKeywords:
+ - _EMISSION
+ m_InvalidKeywords: []
+ m_LightmapFlags: 0
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _AlphaTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BaseMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SpecGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_Lightmaps:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_LightmapsInd:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_ShadowMasks:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - PixelSnap: 0
+ - _AlphaClip: 0
+ - _Blend: 0
+ - _BlendOp: 0
+ - _BumpScale: 1
+ - _CameraFadingEnabled: 0
+ - _CameraFarFadeDistance: 2
+ - _CameraNearFadeDistance: 1
+ - _ClearCoatMask: 0
+ - _ClearCoatSmoothness: 0
+ - _ColorMask: 15
+ - _Cull: 2
+ - _Cutoff: 0.5
+ - _DetailAlbedoMapScale: 1
+ - _DetailNormalMapScale: 1
+ - _DistortionBlend: 0.5
+ - _DistortionEnabled: 0
+ - _DistortionStrength: 1
+ - _DistortionStrengthScaled: 0
+ - _DstBlend: 0
+ - _EmissionEnabled: 0
+ - _EnableExternalAlpha: 0
+ - _EnvironmentReflections: 1
+ - _FlipbookMode: 0
+ - _GlossMapScale: 1
+ - _Glossiness: 0
+ - _GlossyReflections: 1
+ - _LightingEnabled: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _QueueOffset: 0
+ - _ReceiveShadows: 1
+ - _Smoothness: 0.5
+ - _SmoothnessTextureChannel: 0
+ - _SoftParticlesEnabled: 0
+ - _SoftParticlesFarFadeDistance: 1
+ - _SoftParticlesNearFadeDistance: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _Stencil: 0
+ - _StencilComp: 8
+ - _StencilOp: 0
+ - _StencilReadMask: 255
+ - _StencilWriteMask: 255
+ - _Surface: 0
+ - _UVSec: 0
+ - _UseUIAlphaClip: 0
+ - _WorkflowMode: 1
+ - _ZWrite: 1
+ m_Colors:
+ - _BaseColor: {r: 1, g: 0, b: 0, a: 1}
+ - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0}
+ - _Color: {r: 1, g: 0, b: 0, a: 1}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ - _Flip: {r: 1, g: 1, b: 1, a: 1}
+ - _RendererColor: {r: 1, g: 1, b: 1, a: 1}
+ - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0}
+ - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
+ m_BuildTextureStacks: []
+--- !u!114 &2151432713694262380
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 5
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/Red.mat.meta b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/Red.mat.meta
new file mode 100644
index 0000000..3b6c8af
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/Red.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 55fa12dc7870f1e46b6a7f8617949a86
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/TransparentRed.mat b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/TransparentRed.mat
new file mode 100644
index 0000000..b95247f
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/TransparentRed.mat
@@ -0,0 +1,165 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: TransparentRed
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _ALPHAPREMULTIPLY_ON
+ - _EMISSION
+ m_InvalidKeywords: []
+ m_LightmapFlags: 0
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: 3000
+ stringTagMap:
+ RenderType: Transparent
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _AlphaTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BaseMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SpecGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_Lightmaps:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_LightmapsInd:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_ShadowMasks:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - PixelSnap: 0
+ - _AlphaClip: 0
+ - _Blend: 0
+ - _BlendOp: 0
+ - _BumpScale: 1
+ - _CameraFadingEnabled: 0
+ - _CameraFarFadeDistance: 2
+ - _CameraNearFadeDistance: 1
+ - _ClearCoatMask: 0
+ - _ClearCoatSmoothness: 0
+ - _ColorMask: 15
+ - _Cull: 2
+ - _Cutoff: 0.5
+ - _DetailAlbedoMapScale: 1
+ - _DetailNormalMapScale: 1
+ - _DistortionBlend: 0.5
+ - _DistortionEnabled: 0
+ - _DistortionStrength: 1
+ - _DistortionStrengthScaled: 0
+ - _DstBlend: 10
+ - _EmissionEnabled: 0
+ - _EnableExternalAlpha: 0
+ - _EnvironmentReflections: 1
+ - _FlipbookMode: 0
+ - _GlossMapScale: 1
+ - _Glossiness: 0
+ - _GlossyReflections: 1
+ - _LightingEnabled: 1
+ - _Metallic: 0
+ - _Mode: 3
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _QueueOffset: 0
+ - _ReceiveShadows: 1
+ - _Smoothness: 0.5
+ - _SmoothnessTextureChannel: 0
+ - _SoftParticlesEnabled: 0
+ - _SoftParticlesFarFadeDistance: 1
+ - _SoftParticlesNearFadeDistance: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _Stencil: 0
+ - _StencilComp: 8
+ - _StencilOp: 0
+ - _StencilReadMask: 255
+ - _StencilWriteMask: 255
+ - _Surface: 0
+ - _UVSec: 0
+ - _UseUIAlphaClip: 0
+ - _WorkflowMode: 1
+ - _ZWrite: 0
+ m_Colors:
+ - _BaseColor: {r: 1, g: 0, b: 0, a: 1}
+ - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0}
+ - _Color: {r: 1, g: 0, b: 0, a: 0.54509807}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ - _Flip: {r: 1, g: 1, b: 1, a: 1}
+ - _RendererColor: {r: 1, g: 1, b: 1, a: 1}
+ - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0}
+ - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
+ m_BuildTextureStacks: []
+ m_AllowLocking: 1
+--- !u!114 &2151432713694262380
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 5
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/TransparentRed.mat.meta b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/TransparentRed.mat.meta
new file mode 100644
index 0000000..b9b16d4
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/TransparentRed.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d149182fa7aa1dc47bd32b2a6da80ec9
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/White.mat b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/White.mat
new file mode 100644
index 0000000..eff5401
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/White.mat
@@ -0,0 +1,159 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: White
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_ValidKeywords:
+ - _EMISSION
+ m_InvalidKeywords: []
+ m_LightmapFlags: 0
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _AlphaTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BaseMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SpecGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_Lightmaps:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_LightmapsInd:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_ShadowMasks:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - PixelSnap: 0
+ - _AlphaClip: 0
+ - _Blend: 0
+ - _BlendOp: 0
+ - _BumpScale: 1
+ - _CameraFadingEnabled: 0
+ - _CameraFarFadeDistance: 2
+ - _CameraNearFadeDistance: 1
+ - _ClearCoatMask: 0
+ - _ClearCoatSmoothness: 0
+ - _ColorMask: 15
+ - _Cull: 2
+ - _Cutoff: 0.5
+ - _DetailAlbedoMapScale: 1
+ - _DetailNormalMapScale: 1
+ - _DistortionBlend: 0.5
+ - _DistortionEnabled: 0
+ - _DistortionStrength: 1
+ - _DistortionStrengthScaled: 0
+ - _DstBlend: 0
+ - _EmissionEnabled: 0
+ - _EnableExternalAlpha: 0
+ - _EnvironmentReflections: 1
+ - _FlipbookMode: 0
+ - _GlossMapScale: 1
+ - _Glossiness: 0
+ - _GlossyReflections: 1
+ - _LightingEnabled: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _QueueOffset: 0
+ - _ReceiveShadows: 1
+ - _Smoothness: 0.5
+ - _SmoothnessTextureChannel: 0
+ - _SoftParticlesEnabled: 0
+ - _SoftParticlesFarFadeDistance: 1
+ - _SoftParticlesNearFadeDistance: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _Stencil: 0
+ - _StencilComp: 8
+ - _StencilOp: 0
+ - _StencilReadMask: 255
+ - _StencilWriteMask: 255
+ - _Surface: 0
+ - _UVSec: 0
+ - _UseUIAlphaClip: 0
+ - _WorkflowMode: 1
+ - _ZWrite: 1
+ m_Colors:
+ - _BaseColor: {r: 0.9686274, g: 0.9686274, b: 0.9686274, a: 1}
+ - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0}
+ - _Color: {r: 0.9686274, g: 0.9686274, b: 0.9686274, a: 1}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ - _Flip: {r: 1, g: 1, b: 1, a: 1}
+ - _RendererColor: {r: 1, g: 1, b: 1, a: 1}
+ - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0}
+ - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
+ m_BuildTextureStacks: []
+--- !u!114 &447292672560585647
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 5
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/White.mat.meta b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/White.mat.meta
new file mode 100644
index 0000000..c3bd3e7
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Materials/White.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c3474c208278e814cb8d1c29aa806e81
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models.meta b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models.meta
new file mode 100644
index 0000000..476a9c9
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 22f58ef53b57ffc4390fa3fd82468a7d
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/LeftHand.fbx b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/LeftHand.fbx
new file mode 100644
index 0000000..4504e70
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/LeftHand.fbx
Binary files differ
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/LeftHand.fbx.meta b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/LeftHand.fbx.meta
new file mode 100644
index 0000000..8b63673
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/LeftHand.fbx.meta
@@ -0,0 +1,103 @@
+fileFormatVersion: 2
+guid: bf7151579c38e2a44be94ba8773876c1
+ModelImporter:
+ serializedVersion: 20300
+ internalIDToNameTable: []
+ externalObjects: {}
+ materials:
+ materialImportMode: 2
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ motionNodeName:
+ rigImportErrors:
+ rigImportWarnings:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations: []
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importVisibility: 1
+ importBlendShapes: 1
+ importCameras: 1
+ importLights: 1
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 1
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 2
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+ remapMaterialsIfMaterialImportModeIsNone: 0
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/LeftHandAndroidXR.fbx b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/LeftHandAndroidXR.fbx
new file mode 100644
index 0000000..74ba4a9
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/LeftHandAndroidXR.fbx
Binary files differ
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/LeftHandAndroidXR.fbx.meta b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/LeftHandAndroidXR.fbx.meta
new file mode 100644
index 0000000..3b97bad
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/LeftHandAndroidXR.fbx.meta
@@ -0,0 +1,247 @@
+fileFormatVersion: 2
+guid: 7eff605df5fc69141bad762b74fb9228
+ModelImporter:
+ serializedVersion: 22200
+ internalIDToNameTable: []
+ externalObjects: {}
+ materials:
+ materialImportMode: 0
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 0
+ motionNodeName:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 3
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations: []
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importPhysicalCameras: 1
+ importVisibility: 1
+ importBlendShapes: 0
+ importCameras: 0
+ importLights: 0
+ nodeNameCollisionStrategy: 0
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 1
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ strictVertexDataChecks: 0
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 0
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton:
+ - name: RightHand-Original-ImportExportTest(Clone)
+ parentName:
+ position: {x: 0, y: 0, z: 0}
+ rotation: {x: 0, y: 0, z: 0, w: 1}
+ scale: {x: 1, y: 1, z: 1}
+ - name: V2-Hand reference mesh-02
+ parentName: RightHand-Original-ImportExportTest(Clone)
+ position: {x: -0, y: 0, z: 0}
+ rotation: {x: 0, y: -0, z: -0, w: 1}
+ scale: {x: 1, y: 1, z: 1}
+ - name: R_Wrist
+ parentName: RightHand-Original-ImportExportTest(Clone)
+ position: {x: -0.003278835, y: 0.05342003, z: -0.062004544}
+ rotation: {x: 0.6861093, y: 0.036429923, z: 0.028978078, w: 0.7260077}
+ scale: {x: 1.0000001, y: 1, z: 1.0000027}
+ - name: R_IndexMetacarpal
+ parentName: R_Wrist
+ position: {x: -0.015184388, y: 0.043368313, z: -0.0004082384}
+ rotation: {x: -0.039728012, y: -0.016940618, z: 0.0136341, w: 0.9989739}
+ scale: {x: 0.99999994, y: 1, z: 0.99999994}
+ - name: R_IndexProximal
+ parentName: R_IndexMetacarpal
+ position: {x: -0.0000000030971443, y: 0.053249188, z: 0.0000000036459735}
+ rotation: {x: 0.11408561, y: 0.027069341, z: -0.003031183, w: 0.9930975}
+ scale: {x: 1, y: 0.9999999, z: 1.0000002}
+ - name: R_IndexIntermediate
+ parentName: R_IndexProximal
+ position: {x: 2.0986757e-10, y: 0.03119257, z: -0.0000000029665912}
+ rotation: {x: 0.22822198, y: -0.0019579423, z: -0.0028197072, w: 0.9736031}
+ scale: {x: 1, y: 1.0000002, z: 0.9999998}
+ - name: R_IndexDistal
+ parentName: R_IndexIntermediate
+ position: {x: 0.000000011364375, y: 0.015153917, z: 0.000000006907221}
+ rotation: {x: 0.11608021, y: -0.020753868, z: 0.0004017833, w: 0.9930229}
+ scale: {x: 0.99999994, y: 1.0000006, z: 0.99999946}
+ - name: R_IndexTip
+ parentName: R_IndexDistal
+ position: {x: 0.0000000049176343, y: 0.008471283, z: 0.000000011485351}
+ rotation: {x: 0.023955874, y: -0.01890053, z: -0.00004664642, w: 0.99953437}
+ scale: {x: 0.99999994, y: 1.0000001, z: 0.9999998}
+ - name: R_MiddleMetacarpal
+ parentName: R_Wrist
+ position: {x: -0.0021637694, y: 0.041841764, z: -0.0008136065}
+ rotation: {x: -0.018308057, y: -0.06036859, z: -0.022970585, w: 0.9977439}
+ scale: {x: 1.0000001, y: 1, z: 0.99999994}
+ - name: R_MiddleProximal
+ parentName: R_MiddleMetacarpal
+ position: {x: -0.00000000739658, y: 0.053792052, z: 0.0000000048860156}
+ rotation: {x: 0.118838586, y: 0.01847689, z: -0.00033644997, w: 0.9927416}
+ scale: {x: 1, y: 0.9999999, z: 1.0000001}
+ - name: R_MiddleIntermediate
+ parentName: R_MiddleProximal
+ position: {x: 0.000000005422766, y: 0.031502105, z: -6.3897215e-10}
+ rotation: {x: 0.32552293, y: -0.011826178, z: 0.020449111, w: 0.945239}
+ scale: {x: 0.9999999, y: 1.0000005, z: 0.99999946}
+ - name: R_MiddleDistal
+ parentName: R_MiddleIntermediate
+ position: {x: 0.000000028710986, y: 0.018965539, z: 0.000000026385173}
+ rotation: {x: 0.20727825, y: 0.012435533, z: 0.028069785, w: 0.9778002}
+ scale: {x: 1, y: 1.0000008, z: 0.99999917}
+ - name: R_MiddleTip
+ parentName: R_MiddleDistal
+ position: {x: 0.000000018862254, y: 0.01355556, z: 0.000000010927729}
+ rotation: {x: 0.027218292, y: -0.026071634, z: -0.0108469, w: 0.9992306}
+ scale: {x: 1, y: 1.0000001, z: 0.9999999}
+ - name: R_RingMetacarpal
+ parentName: R_Wrist
+ position: {x: 0.009159105, y: 0.04289402, z: -0.0009776641}
+ rotation: {x: -0.5051329, y: -0.012376049, z: -0.08139011, w: 0.8591061}
+ scale: {x: 1.0000001, y: 1, z: 0.9999999}
+ - name: R_RingProximal
+ parentName: R_RingMetacarpal
+ position: {x: 7.1046946e-10, y: 0.047772877, z: -0.0000000012237608}
+ rotation: {x: 0.01830861, y: -0.036776215, z: 0.04406918, w: 0.9981835}
+ scale: {x: 1.0000002, y: 1, z: 0.9999999}
+ - name: R_RingIntermediate
+ parentName: R_RingProximal
+ position: {x: 0.000000020008601, y: 0.027416931, z: 0.000000009794475}
+ rotation: {x: -0.004819274, y: -0.085748516, z: -0.0073304567, w: 0.9962782}
+ scale: {x: 1.0000001, y: 1.0000005, z: 0.99999917}
+ - name: R_RingDistal
+ parentName: R_RingIntermediate
+ position: {x: 0.0000000361422, y: 0.021599585, z: 0.000000012509237}
+ rotation: {x: 0.21586773, y: -0.11252745, z: 0.5731088, w: 0.78248644}
+ scale: {x: 1.0000002, y: 1.0000005, z: 0.9999993}
+ - name: R_RingTip
+ parentName: R_RingDistal
+ position: {x: 0.000000014014161, y: 0.008182308, z: 0.000000016518117}
+ rotation: {x: 0.08212139, y: 0.050801937, z: -0.04902353, w: 0.9941187}
+ scale: {x: 0.99999976, y: 1.0000004, z: 0.99999976}
+ - name: R_Palm
+ parentName: R_Wrist
+ position: {x: 0.00033856664, y: 0.052908763, z: -0.0050242892}
+ rotation: {x: 0.036044274, y: -0.046207204, z: 0.0056319265, w: 0.9982655}
+ scale: {x: 1.0000001, y: 1, z: 0.9999999}
+ - name: R_ThumbMetacarpal
+ parentName: R_Wrist
+ position: {x: -0.024570636, y: 0.039576054, z: 0.0056750975}
+ rotation: {x: 0.38757673, y: 0.48578048, z: 0.5464086, w: 0.5614617}
+ scale: {x: 0.99999976, y: 0.99999994, z: 1.0000002}
+ - name: R_ThumbProximal
+ parentName: R_ThumbMetacarpal
+ position: {x: 0.0000000030227367, y: 0.024318831, z: 0.0000000127638735}
+ rotation: {x: 0.11798811, y: 0.073554516, z: 0.027695354, w: 0.9898998}
+ scale: {x: 1.0000005, y: 0.99999994, z: 0.9999997}
+ - name: R_ThumbDistal
+ parentName: R_ThumbProximal
+ position: {x: -0.000000013828266, y: 0.03048904, z: 0.000000047016265}
+ rotation: {x: 0.06120874, y: -0.114165455, z: -0.55291957, w: 0.82310367}
+ scale: {x: 1.0000006, y: 1.0000001, z: 0.99999917}
+ - name: R_ThumbTip
+ parentName: R_ThumbDistal
+ position: {x: -0.000000024058998, y: 0.017674206, z: 0.00000008461095}
+ rotation: {x: -0.042718224, y: -0.040577695, z: -0.007416172, w: 0.9982353}
+ scale: {x: 0.99999994, y: 1.0000001, z: 1.0000001}
+ - name: R_LittleMetacarpal
+ parentName: R_Wrist
+ position: {x: 0.018062059, y: 0.041240305, z: 0.002480461}
+ rotation: {x: 0.040541753, y: -0.2460445, z: -0.13661616, w: 0.9587255}
+ scale: {x: 1.0000004, y: 1, z: 0.9999997}
+ - name: R_LittleProximal
+ parentName: R_LittleMetacarpal
+ position: {x: 0.000000022705052, y: 0.04444153, z: -0.0000000065787407}
+ rotation: {x: 0.58528006, y: 0.13245042, z: -0.15188508, w: 0.7853885}
+ scale: {x: 0.99999964, y: 1.0000001, z: 1.0000004}
+ - name: R_LittleIntermediate
+ parentName: R_LittleProximal
+ position: {x: 0.000000013486351, y: 0.0184942, z: -0.0000000054124114}
+ rotation: {x: 0.21532907, y: -0.22571056, z: -0.01377247, w: 0.9499992}
+ scale: {x: 1.0000007, y: 1.0000004, z: 0.99999905}
+ - name: R_LittleDistal
+ parentName: R_LittleIntermediate
+ position: {x: 0.000000031878056, y: 0.014893936, z: 0.00000000870707}
+ rotation: {x: -0.27264047, y: 0.07361126, z: 0.2861297, w: 0.91563004}
+ scale: {x: 0.9999997, y: 1.0000007, z: 0.99999964}
+ - name: R_LittleTip
+ parentName: R_LittleDistal
+ position: {x: 0.000000019335364, y: 0.0077872393, z: -9.0059754e-10}
+ rotation: {x: 0.030928679, y: 0.115395255, z: 0.0017466116, w: 0.99283653}
+ scale: {x: 0.99999994, y: 1, z: 1}
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 1
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 2
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+ importBlendShapeDeformPercent: 0
+ remapMaterialsIfMaterialImportModeIsNone: 0
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/RightHand.fbx b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/RightHand.fbx
new file mode 100644
index 0000000..bf3d0dd
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/RightHand.fbx
Binary files differ
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/RightHand.fbx.meta b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/RightHand.fbx.meta
new file mode 100644
index 0000000..a416985
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/RightHand.fbx.meta
@@ -0,0 +1,103 @@
+fileFormatVersion: 2
+guid: 56186ccf27ad7864681108ed88349071
+ModelImporter:
+ serializedVersion: 20300
+ internalIDToNameTable: []
+ externalObjects: {}
+ materials:
+ materialImportMode: 2
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ motionNodeName:
+ rigImportErrors:
+ rigImportWarnings:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations: []
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importVisibility: 1
+ importBlendShapes: 1
+ importCameras: 1
+ importLights: 1
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 1
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 2
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+ remapMaterialsIfMaterialImportModeIsNone: 0
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/RightHandAndroidXR.fbx b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/RightHandAndroidXR.fbx
new file mode 100644
index 0000000..49018db
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/RightHandAndroidXR.fbx
Binary files differ
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/RightHandAndroidXR.fbx.meta b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/RightHandAndroidXR.fbx.meta
new file mode 100644
index 0000000..4cbeabc
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Models/RightHandAndroidXR.fbx.meta
@@ -0,0 +1,247 @@
+fileFormatVersion: 2
+guid: 49090752ee8bba242ad64a291905ee10
+ModelImporter:
+ serializedVersion: 22200
+ internalIDToNameTable: []
+ externalObjects: {}
+ materials:
+ materialImportMode: 0
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 0
+ motionNodeName:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 3
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations: []
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importPhysicalCameras: 1
+ importVisibility: 1
+ importBlendShapes: 0
+ importCameras: 0
+ importLights: 0
+ nodeNameCollisionStrategy: 0
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 1
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ strictVertexDataChecks: 0
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 0
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton:
+ - name: RightHand-Original-ImportExportTest(Clone)
+ parentName:
+ position: {x: 0, y: 0, z: 0}
+ rotation: {x: 0, y: 0, z: 0, w: 1}
+ scale: {x: 1, y: 1, z: 1}
+ - name: V2-Hand reference mesh-02
+ parentName: RightHand-Original-ImportExportTest(Clone)
+ position: {x: -0, y: 0, z: 0}
+ rotation: {x: 0, y: -0, z: -0, w: 1}
+ scale: {x: 1, y: 1, z: 1}
+ - name: R_Wrist
+ parentName: RightHand-Original-ImportExportTest(Clone)
+ position: {x: -0.003278835, y: 0.05342003, z: -0.062004544}
+ rotation: {x: 0.6861093, y: 0.036429923, z: 0.028978078, w: 0.7260077}
+ scale: {x: 1.0000001, y: 1, z: 1.0000027}
+ - name: R_IndexMetacarpal
+ parentName: R_Wrist
+ position: {x: -0.015184388, y: 0.043368313, z: -0.0004082384}
+ rotation: {x: -0.039728012, y: -0.016940618, z: 0.0136341, w: 0.9989739}
+ scale: {x: 0.99999994, y: 1, z: 0.99999994}
+ - name: R_IndexProximal
+ parentName: R_IndexMetacarpal
+ position: {x: -0.0000000030971443, y: 0.053249188, z: 0.0000000036459735}
+ rotation: {x: 0.11408561, y: 0.027069341, z: -0.003031183, w: 0.9930975}
+ scale: {x: 1, y: 0.9999999, z: 1.0000002}
+ - name: R_IndexIntermediate
+ parentName: R_IndexProximal
+ position: {x: 2.0986757e-10, y: 0.03119257, z: -0.0000000029665912}
+ rotation: {x: 0.22822198, y: -0.0019579423, z: -0.0028197072, w: 0.9736031}
+ scale: {x: 1, y: 1.0000002, z: 0.9999998}
+ - name: R_IndexDistal
+ parentName: R_IndexIntermediate
+ position: {x: 0.000000011364375, y: 0.015153917, z: 0.000000006907221}
+ rotation: {x: 0.11608021, y: -0.020753868, z: 0.0004017833, w: 0.9930229}
+ scale: {x: 0.99999994, y: 1.0000006, z: 0.99999946}
+ - name: R_IndexTip
+ parentName: R_IndexDistal
+ position: {x: 0.0000000049176343, y: 0.008471283, z: 0.000000011485351}
+ rotation: {x: 0.023955874, y: -0.01890053, z: -0.00004664642, w: 0.99953437}
+ scale: {x: 0.99999994, y: 1.0000001, z: 0.9999998}
+ - name: R_MiddleMetacarpal
+ parentName: R_Wrist
+ position: {x: -0.0021637694, y: 0.041841764, z: -0.0008136065}
+ rotation: {x: -0.018308057, y: -0.06036859, z: -0.022970585, w: 0.9977439}
+ scale: {x: 1.0000001, y: 1, z: 0.99999994}
+ - name: R_MiddleProximal
+ parentName: R_MiddleMetacarpal
+ position: {x: -0.00000000739658, y: 0.053792052, z: 0.0000000048860156}
+ rotation: {x: 0.118838586, y: 0.01847689, z: -0.00033644997, w: 0.9927416}
+ scale: {x: 1, y: 0.9999999, z: 1.0000001}
+ - name: R_MiddleIntermediate
+ parentName: R_MiddleProximal
+ position: {x: 0.000000005422766, y: 0.031502105, z: -6.3897215e-10}
+ rotation: {x: 0.32552293, y: -0.011826178, z: 0.020449111, w: 0.945239}
+ scale: {x: 0.9999999, y: 1.0000005, z: 0.99999946}
+ - name: R_MiddleDistal
+ parentName: R_MiddleIntermediate
+ position: {x: 0.000000028710986, y: 0.018965539, z: 0.000000026385173}
+ rotation: {x: 0.20727825, y: 0.012435533, z: 0.028069785, w: 0.9778002}
+ scale: {x: 1, y: 1.0000008, z: 0.99999917}
+ - name: R_MiddleTip
+ parentName: R_MiddleDistal
+ position: {x: 0.000000018862254, y: 0.01355556, z: 0.000000010927729}
+ rotation: {x: 0.027218292, y: -0.026071634, z: -0.0108469, w: 0.9992306}
+ scale: {x: 1, y: 1.0000001, z: 0.9999999}
+ - name: R_RingMetacarpal
+ parentName: R_Wrist
+ position: {x: 0.009159105, y: 0.04289402, z: -0.0009776641}
+ rotation: {x: -0.5051329, y: -0.012376049, z: -0.08139011, w: 0.8591061}
+ scale: {x: 1.0000001, y: 1, z: 0.9999999}
+ - name: R_RingProximal
+ parentName: R_RingMetacarpal
+ position: {x: 7.1046946e-10, y: 0.047772877, z: -0.0000000012237608}
+ rotation: {x: 0.01830861, y: -0.036776215, z: 0.04406918, w: 0.9981835}
+ scale: {x: 1.0000002, y: 1, z: 0.9999999}
+ - name: R_RingIntermediate
+ parentName: R_RingProximal
+ position: {x: 0.000000020008601, y: 0.027416931, z: 0.000000009794475}
+ rotation: {x: -0.004819274, y: -0.085748516, z: -0.0073304567, w: 0.9962782}
+ scale: {x: 1.0000001, y: 1.0000005, z: 0.99999917}
+ - name: R_RingDistal
+ parentName: R_RingIntermediate
+ position: {x: 0.0000000361422, y: 0.021599585, z: 0.000000012509237}
+ rotation: {x: 0.21586773, y: -0.11252745, z: 0.5731088, w: 0.78248644}
+ scale: {x: 1.0000002, y: 1.0000005, z: 0.9999993}
+ - name: R_RingTip
+ parentName: R_RingDistal
+ position: {x: 0.000000014014161, y: 0.008182308, z: 0.000000016518117}
+ rotation: {x: 0.08212139, y: 0.050801937, z: -0.04902353, w: 0.9941187}
+ scale: {x: 0.99999976, y: 1.0000004, z: 0.99999976}
+ - name: R_Palm
+ parentName: R_Wrist
+ position: {x: 0.00033856664, y: 0.052908763, z: -0.0050242892}
+ rotation: {x: 0.036044274, y: -0.046207204, z: 0.0056319265, w: 0.9982655}
+ scale: {x: 1.0000001, y: 1, z: 0.9999999}
+ - name: R_ThumbMetacarpal
+ parentName: R_Wrist
+ position: {x: -0.024570636, y: 0.039576054, z: 0.0056750975}
+ rotation: {x: 0.38757673, y: 0.48578048, z: 0.5464086, w: 0.5614617}
+ scale: {x: 0.99999976, y: 0.99999994, z: 1.0000002}
+ - name: R_ThumbProximal
+ parentName: R_ThumbMetacarpal
+ position: {x: 0.0000000030227367, y: 0.024318831, z: 0.0000000127638735}
+ rotation: {x: 0.11798811, y: 0.073554516, z: 0.027695354, w: 0.9898998}
+ scale: {x: 1.0000005, y: 0.99999994, z: 0.9999997}
+ - name: R_ThumbDistal
+ parentName: R_ThumbProximal
+ position: {x: -0.000000013828266, y: 0.03048904, z: 0.000000047016265}
+ rotation: {x: 0.06120874, y: -0.114165455, z: -0.55291957, w: 0.82310367}
+ scale: {x: 1.0000006, y: 1.0000001, z: 0.99999917}
+ - name: R_ThumbTip
+ parentName: R_ThumbDistal
+ position: {x: -0.000000024058998, y: 0.017674206, z: 0.00000008461095}
+ rotation: {x: -0.042718224, y: -0.040577695, z: -0.007416172, w: 0.9982353}
+ scale: {x: 0.99999994, y: 1.0000001, z: 1.0000001}
+ - name: R_LittleMetacarpal
+ parentName: R_Wrist
+ position: {x: 0.018062059, y: 0.041240305, z: 0.002480461}
+ rotation: {x: 0.040541753, y: -0.2460445, z: -0.13661616, w: 0.9587255}
+ scale: {x: 1.0000004, y: 1, z: 0.9999997}
+ - name: R_LittleProximal
+ parentName: R_LittleMetacarpal
+ position: {x: 0.000000022705052, y: 0.04444153, z: -0.0000000065787407}
+ rotation: {x: 0.58528006, y: 0.13245042, z: -0.15188508, w: 0.7853885}
+ scale: {x: 0.99999964, y: 1.0000001, z: 1.0000004}
+ - name: R_LittleIntermediate
+ parentName: R_LittleProximal
+ position: {x: 0.000000013486351, y: 0.0184942, z: -0.0000000054124114}
+ rotation: {x: 0.21532907, y: -0.22571056, z: -0.01377247, w: 0.9499992}
+ scale: {x: 1.0000007, y: 1.0000004, z: 0.99999905}
+ - name: R_LittleDistal
+ parentName: R_LittleIntermediate
+ position: {x: 0.000000031878056, y: 0.014893936, z: 0.00000000870707}
+ rotation: {x: -0.27264047, y: 0.07361126, z: 0.2861297, w: 0.91563004}
+ scale: {x: 0.9999997, y: 1.0000007, z: 0.99999964}
+ - name: R_LittleTip
+ parentName: R_LittleDistal
+ position: {x: 0.000000019335364, y: 0.0077872393, z: -9.0059754e-10}
+ rotation: {x: 0.030928679, y: 0.115395255, z: 0.0017466116, w: 0.99283653}
+ scale: {x: 0.99999994, y: 1, z: 1}
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 1
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 2
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+ importBlendShapeDeformPercent: 0
+ remapMaterialsIfMaterialImportModeIsNone: 0
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs.meta b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs.meta
new file mode 100644
index 0000000..755f5a9
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3acfee4a2c8c7c24b96095fdac3ee33d
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/Joint.prefab b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/Joint.prefab
new file mode 100644
index 0000000..9c5829b
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/Joint.prefab
@@ -0,0 +1,522 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &734748737383922805
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2107813110650148675}
+ - component: {fileID: 6434675759608581130}
+ - component: {fileID: 5634315896501048958}
+ m_Layer: 0
+ m_Name: Y
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2107813110650148675
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 734748737383922805}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.005, z: 0}
+ m_LocalScale: {x: 0.005, y: 0.005, z: 0.005}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4831140773533800019}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &6434675759608581130
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 734748737383922805}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &5634315896501048958
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 734748737383922805}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 727f87098255ad04987a60f5f08390bc, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &998394589122162542
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6518585025970797200}
+ - component: {fileID: 1887305460834055526}
+ - component: {fileID: 6370029320555855244}
+ m_Layer: 0
+ m_Name: Cube
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &6518585025970797200
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 998394589122162542}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.01, y: 0.01, z: 0.01}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 8123511170798101446}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &1887305460834055526
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 998394589122162542}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &6370029320555855244
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 998394589122162542}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: c3474c208278e814cb8d1c29aa806e81, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &1884330011090648049
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 5222184468966665097}
+ - component: {fileID: 1819206441057094587}
+ - component: {fileID: 1391820213567226204}
+ m_Layer: 0
+ m_Name: X
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &5222184468966665097
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1884330011090648049}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0.005, y: 0, z: 0}
+ m_LocalScale: {x: 0.005, y: 0.005, z: 0.005}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4831140773533800019}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &1819206441057094587
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1884330011090648049}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &1391820213567226204
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1884330011090648049}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 55fa12dc7870f1e46b6a7f8617949a86, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &6507399986997092475
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8123511170798101446}
+ - component: {fileID: 2704860076515533465}
+ - component: {fileID: 7456416708721142674}
+ m_Layer: 0
+ m_Name: Joint
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &8123511170798101446
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6507399986997092475}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 6518585025970797200}
+ - {fileID: 4831140773533800019}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!120 &2704860076515533465
+LineRenderer:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6507399986997092475}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 0
+ m_LightProbeUsage: 0
+ m_ReflectionProbeUsage: 0
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10306, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_Positions:
+ - {x: 0, y: 0, z: 0}
+ - {x: 0, y: 0, z: 1}
+ m_Parameters:
+ serializedVersion: 3
+ widthMultiplier: 1
+ widthCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 0.04166603
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ colorGradient:
+ serializedVersion: 2
+ key0: {r: 1, g: 1, b: 1, a: 1}
+ key1: {r: 1, g: 1, b: 1, a: 1}
+ key2: {r: 0, g: 0, b: 0, a: 0}
+ key3: {r: 0, g: 0, b: 0, a: 0}
+ key4: {r: 0, g: 0, b: 0, a: 0}
+ key5: {r: 0, g: 0, b: 0, a: 0}
+ key6: {r: 0, g: 0, b: 0, a: 0}
+ key7: {r: 0, g: 0, b: 0, a: 0}
+ ctime0: 0
+ ctime1: 65535
+ ctime2: 0
+ ctime3: 0
+ ctime4: 0
+ ctime5: 0
+ ctime6: 0
+ ctime7: 0
+ atime0: 0
+ atime1: 65535
+ atime2: 0
+ atime3: 0
+ atime4: 0
+ atime5: 0
+ atime6: 0
+ atime7: 0
+ m_Mode: 0
+ m_ColorSpace: -1
+ m_NumColorKeys: 2
+ m_NumAlphaKeys: 2
+ numCornerVertices: 0
+ numCapVertices: 0
+ alignment: 0
+ textureMode: 0
+ textureScale: {x: 1, y: 1}
+ shadowBias: 0.5
+ generateLightingData: 0
+ m_MaskInteraction: 0
+ m_UseWorldSpace: 1
+ m_Loop: 0
+ m_ApplyActiveColorSpace: 0
+--- !u!114 &7456416708721142674
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6507399986997092475}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 6e1c395ff62a3a14dbeb293298bb46bf, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_JointVisual: {fileID: 998394589122162542}
+ m_HighFidelityJointMaterial: {fileID: 2100000, guid: c3474c208278e814cb8d1c29aa806e81, type: 2}
+ m_LowFidelityJointMaterial: {fileID: 2100000, guid: d149182fa7aa1dc47bd32b2a6da80ec9, type: 2}
+--- !u!1 &6513021459858911318
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 791700661656661422}
+ - component: {fileID: 8027412990048445551}
+ - component: {fileID: 3953861510652508848}
+ m_Layer: 0
+ m_Name: Z
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &791700661656661422
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6513021459858911318}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0.005}
+ m_LocalScale: {x: 0.005, y: 0.005, z: 0.005}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4831140773533800019}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &8027412990048445551
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6513021459858911318}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &3953861510652508848
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6513021459858911318}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 7b26add94f09dc44fb811013f007a3aa, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &6855854388140184776
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4831140773533800019}
+ m_Layer: 0
+ m_Name: Axis
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &4831140773533800019
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6855854388140184776}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 5222184468966665097}
+ - {fileID: 2107813110650148675}
+ - {fileID: 791700661656661422}
+ m_Father: {fileID: 8123511170798101446}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/Joint.prefab.meta b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/Joint.prefab.meta
new file mode 100644
index 0000000..9d298d3
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/Joint.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 254b742d65a15d14b9df756ae77de868
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/Left Hand Tracking.prefab b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/Left Hand Tracking.prefab
new file mode 100644
index 0000000..6a046d1
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/Left Hand Tracking.prefab
@@ -0,0 +1,351 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1001 &467299062429507094
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: -8679921383154817045, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ propertyPath: m_RootOrder
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -7009038412992213568, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ propertyPath: m_Enabled
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: -7009038412992213568, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ propertyPath: m_Materials.Array.data[0]
+ value:
+ objectReference: {fileID: 2100000, guid: 613690cd962241049a0ec289a6ff835e, type: 2}
+ - target: {fileID: -2886011254516924842, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -0.2
+ objectReference: {fileID: 0}
+ - target: {fileID: -2886011254516924842, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -2886011254516924842, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: -2886011254516924842, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.8660254
+ objectReference: {fileID: 0}
+ - target: {fileID: -2886011254516924842, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: -2886011254516924842, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -2886011254516924842, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -2886011254516924842, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: -60
+ objectReference: {fileID: 0}
+ - target: {fileID: 919132149155446097, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ propertyPath: m_Name
+ value: Left Hand Tracking
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+--- !u!1 &773853689519989575 stripped
+GameObject:
+ m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &5876909491052011584 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -2886011254516924842, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &1448281546621806375 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 1325600225764489521, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &330500789068740710 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 209983296314435184, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &3946411421816380034 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -5712721285632293740, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &3094800083807817888 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -6012624077346500938, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &7683948867115331237 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -1378399668587237197, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &7135220269285660042 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 7311957944441736092, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &3789855843017900069 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -5556197524085236173, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &5830835152374552890 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 6239569783937730348, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &4762083549225478452 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 4929893224545990434, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &6191545133100169418 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -3201804815453640996, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &5647312111078691803 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -4025260990191858227, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &4511303806647181083 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 4100370146787934477, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &9150967386063312380 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -539611307452216342, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &653873766723170089 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -8111219613762522817, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &6241780104622499675 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -3394746642390042291, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &2733093729761800249 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 2563049845517938223, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &3721614932501511239 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -5342963413919112623, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &7215852769725028180 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -2134717383426619070, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &394343688656815241 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 217531209976470175, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &708706760777700289 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 1128709220219833815, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &4678747065800207856 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 5085146375408579558, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &6373319304223449305 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 6777559164489776847, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &5200181528285594001 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -3578409481622970489, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &4564316283654639424 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -5103814781551259306, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &3133028404922549142 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 3244543061537447296, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!137 &1785337192100647894 stripped
+SkinnedMeshRenderer:
+ m_CorrespondingSourceObject: {fileID: -7009038412992213568, guid: bf7151579c38e2a44be94ba8773876c1, type: 3}
+ m_PrefabInstance: {fileID: 467299062429507094}
+ m_PrefabAsset: {fileID: 0}
+--- !u!114 &639686448
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 773853689519989575}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b5b9cf54c47f40ee9c3eb30ea8eb89b9, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Handedness: 1
+ m_UpdateType: 2
+ m_PoseUpdated:
+ m_PersistentCalls:
+ m_Calls: []
+ m_JointsUpdated:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TrackingAcquired:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TrackingLost:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TrackingChanged:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!114 &5828388934748857539
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 773853689519989575}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 07aaccfa1bc2417d8fbd0d9e2e102c2c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_XRHandTrackingEvents: {fileID: 639686448}
+ m_RootTransform: {fileID: 5876909491052011584}
+ m_JointTransformReferences:
+ - m_XRHandJointID: 1
+ m_JointTransform: {fileID: 5876909491052011584}
+ - m_XRHandJointID: 7
+ m_JointTransform: {fileID: 1448281546621806375}
+ - m_XRHandJointID: 8
+ m_JointTransform: {fileID: 330500789068740710}
+ - m_XRHandJointID: 9
+ m_JointTransform: {fileID: 3946411421816380034}
+ - m_XRHandJointID: 10
+ m_JointTransform: {fileID: 3094800083807817888}
+ - m_XRHandJointID: 11
+ m_JointTransform: {fileID: 7683948867115331237}
+ - m_XRHandJointID: 22
+ m_JointTransform: {fileID: 7135220269285660042}
+ - m_XRHandJointID: 23
+ m_JointTransform: {fileID: 3789855843017900069}
+ - m_XRHandJointID: 24
+ m_JointTransform: {fileID: 5830835152374552890}
+ - m_XRHandJointID: 25
+ m_JointTransform: {fileID: 4762083549225478452}
+ - m_XRHandJointID: 26
+ m_JointTransform: {fileID: 6191545133100169418}
+ - m_XRHandJointID: 12
+ m_JointTransform: {fileID: 5647312111078691803}
+ - m_XRHandJointID: 13
+ m_JointTransform: {fileID: 4511303806647181083}
+ - m_XRHandJointID: 14
+ m_JointTransform: {fileID: 9150967386063312380}
+ - m_XRHandJointID: 15
+ m_JointTransform: {fileID: 653873766723170089}
+ - m_XRHandJointID: 16
+ m_JointTransform: {fileID: 6241780104622499675}
+ - m_XRHandJointID: 17
+ m_JointTransform: {fileID: 3721614932501511239}
+ - m_XRHandJointID: 18
+ m_JointTransform: {fileID: 7215852769725028180}
+ - m_XRHandJointID: 19
+ m_JointTransform: {fileID: 394343688656815241}
+ - m_XRHandJointID: 20
+ m_JointTransform: {fileID: 708706760777700289}
+ - m_XRHandJointID: 21
+ m_JointTransform: {fileID: 4678747065800207856}
+ - m_XRHandJointID: 3
+ m_JointTransform: {fileID: 6373319304223449305}
+ - m_XRHandJointID: 4
+ m_JointTransform: {fileID: 5200181528285594001}
+ - m_XRHandJointID: 5
+ m_JointTransform: {fileID: 4564316283654639424}
+ - m_XRHandJointID: 6
+ m_JointTransform: {fileID: 3133028404922549142}
+ - m_XRHandJointID: 2
+ m_JointTransform: {fileID: 2733093729761800249}
+--- !u!114 &6627571522594998540
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 773853689519989575}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 21096d6d8059a5343a1f2b4d050e4789, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_XRHandTrackingEvents: {fileID: 639686448}
+ m_HandMeshRenderer: {fileID: 1785337192100647894}
+ m_ShowMeshWhenTrackingIsAcquired: 1
+ m_HideMeshWhenTrackingIsLost: 1
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/Left Hand Tracking.prefab.meta b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/Left Hand Tracking.prefab.meta
new file mode 100644
index 0000000..c75c38d
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/Left Hand Tracking.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: b3ed8a0a703ebd34a9e44ed3d9f1fcf6
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/Right Hand Tracking.prefab b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/Right Hand Tracking.prefab
new file mode 100644
index 0000000..be26221
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/Right Hand Tracking.prefab
@@ -0,0 +1,347 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1001 &2863446611106501643
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: -8679921383154817045, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ propertyPath: m_RootOrder
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -5335555045901936782, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ propertyPath: m_Materials.Array.data[0]
+ value:
+ objectReference: {fileID: 2100000, guid: 613690cd962241049a0ec289a6ff835e, type: 2}
+ - target: {fileID: 431247075847058747, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0.2
+ objectReference: {fileID: 0}
+ - target: {fileID: 431247075847058747, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 431247075847058747, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 431247075847058747, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.8660254
+ objectReference: {fileID: 0}
+ - target: {fileID: 431247075847058747, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0.5
+ objectReference: {fileID: 0}
+ - target: {fileID: 431247075847058747, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 431247075847058747, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 431247075847058747, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: -60
+ objectReference: {fileID: 0}
+ - target: {fileID: 919132149155446097, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ propertyPath: m_Name
+ value: Right Hand Tracking
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+--- !u!1 &3133494152545806682 stripped
+GameObject:
+ m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &2468282021181825328 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 431247075847058747, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &3948347335870036048 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -7965080492784997285, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &2604916979015095787 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -8963421420082658848, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &5784116713708183948 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 8644745267644822919, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &2168581177090073220 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 4153823618884826767, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &3288495761867447508 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -8494328768516585249, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &6612406317759570666 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 8970885712544478945, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &2539154032915424125 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -8898582184611268746, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &8701566162615192194 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 6881269161254739593, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &65199002294604442 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 2835758823564002961, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &1018444605519319862 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 2999182382527465277, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &2087600070971462675 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -4952371131901738984, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &5925080913539658014 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 8468768647995122965, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &4158396131418465098 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 2164145347914561345, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &6226456670447996205 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -1020680080924960474, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &7356241863038367081 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -4491320855693958814, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &2721691953714425675 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -9045367783505560768, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &8609037504304071432 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 5819900291352614659, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &5643220763833292161 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 7632966843634336138, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &7629607333241681997 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 5646615596051819590, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &7165857418126095518 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -4265123391628091243, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &1590987666903257055 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -5644888990184678444, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &2353264378503682855 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -8712924870032863444, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &423036791582609439 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -6745288066082061292, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &129824984984905013 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 2769778261254893886, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &4114692932810539891 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 2208825326345590648, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!137 &1317669517487522681 stripped
+SkinnedMeshRenderer:
+ m_CorrespondingSourceObject: {fileID: -5335555045901936782, guid: 56186ccf27ad7864681108ed88349071, type: 3}
+ m_PrefabInstance: {fileID: 2863446611106501643}
+ m_PrefabAsset: {fileID: 0}
+--- !u!114 &513866637
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3133494152545806682}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b5b9cf54c47f40ee9c3eb30ea8eb89b9, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Handedness: 2
+ m_UpdateType: 2
+ m_PoseUpdated:
+ m_PersistentCalls:
+ m_Calls: []
+ m_JointsUpdated:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TrackingAcquired:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TrackingLost:
+ m_PersistentCalls:
+ m_Calls: []
+ m_TrackingChanged:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!114 &513866642
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3133494152545806682}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 07aaccfa1bc2417d8fbd0d9e2e102c2c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_XRHandTrackingEvents: {fileID: 513866637}
+ m_RootTransform: {fileID: 2468282021181825328}
+ m_JointTransformReferences:
+ - m_XRHandJointID: 1
+ m_JointTransform: {fileID: 2468282021181825328}
+ - m_XRHandJointID: 7
+ m_JointTransform: {fileID: 3948347335870036048}
+ - m_XRHandJointID: 8
+ m_JointTransform: {fileID: 2604916979015095787}
+ - m_XRHandJointID: 9
+ m_JointTransform: {fileID: 5784116713708183948}
+ - m_XRHandJointID: 10
+ m_JointTransform: {fileID: 2168581177090073220}
+ - m_XRHandJointID: 11
+ m_JointTransform: {fileID: 3288495761867447508}
+ - m_XRHandJointID: 22
+ m_JointTransform: {fileID: 6612406317759570666}
+ - m_XRHandJointID: 23
+ m_JointTransform: {fileID: 2539154032915424125}
+ - m_XRHandJointID: 24
+ m_JointTransform: {fileID: 8701566162615192194}
+ - m_XRHandJointID: 25
+ m_JointTransform: {fileID: 65199002294604442}
+ - m_XRHandJointID: 26
+ m_JointTransform: {fileID: 1018444605519319862}
+ - m_XRHandJointID: 12
+ m_JointTransform: {fileID: 2087600070971462675}
+ - m_XRHandJointID: 13
+ m_JointTransform: {fileID: 5925080913539658014}
+ - m_XRHandJointID: 14
+ m_JointTransform: {fileID: 4158396131418465098}
+ - m_XRHandJointID: 15
+ m_JointTransform: {fileID: 6226456670447996205}
+ - m_XRHandJointID: 16
+ m_JointTransform: {fileID: 7356241863038367081}
+ - m_XRHandJointID: 17
+ m_JointTransform: {fileID: 8609037504304071432}
+ - m_XRHandJointID: 18
+ m_JointTransform: {fileID: 5643220763833292161}
+ - m_XRHandJointID: 19
+ m_JointTransform: {fileID: 7629607333241681997}
+ - m_XRHandJointID: 20
+ m_JointTransform: {fileID: 7165857418126095518}
+ - m_XRHandJointID: 21
+ m_JointTransform: {fileID: 1590987666903257055}
+ - m_XRHandJointID: 3
+ m_JointTransform: {fileID: 2353264378503682855}
+ - m_XRHandJointID: 4
+ m_JointTransform: {fileID: 423036791582609439}
+ - m_XRHandJointID: 5
+ m_JointTransform: {fileID: 129824984984905013}
+ - m_XRHandJointID: 6
+ m_JointTransform: {fileID: 4114692932810539891}
+ - m_XRHandJointID: 2
+ m_JointTransform: {fileID: 2721691953714425675}
+--- !u!114 &2726143015963839043
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3133494152545806682}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 21096d6d8059a5343a1f2b4d050e4789, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_XRHandTrackingEvents: {fileID: 513866637}
+ m_HandMeshRenderer: {fileID: 1317669517487522681}
+ m_ShowMeshWhenTrackingIsAcquired: 1
+ m_HideMeshWhenTrackingIsLost: 1
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/Right Hand Tracking.prefab.meta b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/Right Hand Tracking.prefab.meta
new file mode 100644
index 0000000..8871785
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/Right Hand Tracking.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 3f7511fbc40ae7a4b89c3298a3de199d
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/VelocityPrefab.prefab b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/VelocityPrefab.prefab
new file mode 100644
index 0000000..79acd7a
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/VelocityPrefab.prefab
@@ -0,0 +1,131 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &8538602047018081646
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7702457921730198461}
+ - component: {fileID: 3262118000911692578}
+ m_Layer: 0
+ m_Name: VelocityPrefab
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &7702457921730198461
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8538602047018081646}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!120 &3262118000911692578
+LineRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8538602047018081646}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_MotionVectors: 0
+ m_LightProbeUsage: 0
+ m_ReflectionProbeUsage: 0
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10306, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_Positions:
+ - {x: 0, y: 0, z: 0}
+ - {x: 0, y: 0, z: 1}
+ m_Parameters:
+ serializedVersion: 3
+ widthMultiplier: 1
+ widthCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 0.013891645
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ colorGradient:
+ serializedVersion: 2
+ key0: {r: 1, g: 0, b: 0, a: 1}
+ key1: {r: 0, g: 0, b: 1, a: 1}
+ key2: {r: 0, g: 0, b: 0, a: 0}
+ key3: {r: 0, g: 0, b: 0, a: 0}
+ key4: {r: 0, g: 0, b: 0, a: 0}
+ key5: {r: 0, g: 0, b: 0, a: 0}
+ key6: {r: 0, g: 0, b: 0, a: 0}
+ key7: {r: 0, g: 0, b: 0, a: 0}
+ ctime0: 0
+ ctime1: 65535
+ ctime2: 0
+ ctime3: 0
+ ctime4: 0
+ ctime5: 0
+ ctime6: 0
+ ctime7: 0
+ atime0: 0
+ atime1: 65535
+ atime2: 0
+ atime3: 0
+ atime4: 0
+ atime5: 0
+ atime6: 0
+ atime7: 0
+ m_Mode: 0
+ m_NumColorKeys: 2
+ m_NumAlphaKeys: 2
+ numCornerVertices: 0
+ numCapVertices: 0
+ alignment: 0
+ textureMode: 0
+ shadowBias: 0.5
+ generateLightingData: 0
+ m_UseWorldSpace: 1
+ m_Loop: 0
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/VelocityPrefab.prefab.meta b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/VelocityPrefab.prefab.meta
new file mode 100644
index 0000000..67768bf
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Prefabs/VelocityPrefab.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 629fd7882ec6bfc499a5fcf20035282b
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/README.md b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/README.md
new file mode 100644
index 0000000..5704d73
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/README.md
@@ -0,0 +1,3 @@
+# Hand Visualizer Sample
+
+Demonstrates driving meshes and free-floating debug-draw objects on an XR Origin by using `XRHandSubsystem`.
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/README.md.meta b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/README.md.meta
new file mode 100644
index 0000000..0ea398a
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/README.md.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: b0057a2d371351e41ae711f975c741e2
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts.meta b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts.meta
new file mode 100644
index 0000000..4e30fa8
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0c161b4c00c888c41a1bb8253e94492c
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/HandProcessor.cs b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/HandProcessor.cs
new file mode 100644
index 0000000..3c575bc
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/HandProcessor.cs
@@ -0,0 +1,171 @@
+using System.Collections.Generic;
+using UnityEngine.XR.Hands.Processing;
+
+namespace UnityEngine.XR.Hands.Samples.VisualizerSample
+{
+ /// <summary>
+ /// Example hand processor that applies transformations on the root poses to
+ /// modify the hands skeleton. Note it is possible to modify the bones
+ /// directly for more advanced use cases that are not shown here.
+ /// </summary>
+ public class HandProcessor : MonoBehaviour, IXRHandProcessor
+ {
+ /// <inheritdoc />
+ public int callbackOrder => 0;
+
+ /// <summary>
+ /// The mode to use for the sample processor.
+ /// </summary>
+ public enum ProcessorExampleMode
+ {
+ /// <summary>
+ /// No processing is applied.
+ /// </summary>
+ None,
+
+ /// <summary>
+ /// Smooths the hand root pose of the left and right hands with interpolated positions
+ /// </summary>
+ Smoothing,
+
+ /// <summary>
+ /// Inverts the left and right hands.
+ /// </summary>
+ Invert
+ }
+
+ // Variables used for smoothing hand movements.
+ bool m_FirstFrame = false;
+ Vector3 m_LastLeftHandPosition;
+ Vector3 m_LastRightHandPosition;
+ Pose m_LeftHandPose = Pose.identity;
+ Pose m_RightHandPose = Pose.identity;
+
+ [SerializeField]
+ [Tooltip("The mode to use for the sample processor.")]
+ ProcessorExampleMode m_ProcessorExampleMode = ProcessorExampleMode.Smoothing;
+ ProcessorExampleMode m_LastProcessorExampleMode = ProcessorExampleMode.None;
+
+ /// <summary>
+ /// The <see cref="ProcessorExampleMode"/> to use for the sample processor.
+ /// </summary>
+ public ProcessorExampleMode processorExampleMode
+ {
+ get => m_ProcessorExampleMode;
+ set => m_ProcessorExampleMode = value;
+ }
+
+ // Smoothing factors for the left and right hands.
+ [Header("Smoothing parameters")]
+ [SerializeField]
+ [Tooltip("The smoothing factor to use when smoothing the root of the left hand in the sample processor. Use 0 for no smoothing.")]
+ float m_LeftHandSmoothingFactor = 16f;
+
+ [SerializeField]
+ [Tooltip("The smoothing factor to use when smoothing the root of the right hand in the sample processor. Use 0 for no smoothing.")]
+ float m_RightHandSmoothingFactor = 16f;
+
+ /// <inheritdoc />
+ public void ProcessJoints(XRHandSubsystem subsystem, XRHandSubsystem.UpdateSuccessFlags successFlags, XRHandSubsystem.UpdateType updateType)
+ {
+ switch (m_ProcessorExampleMode)
+ {
+ case ProcessorExampleMode.Smoothing:
+ SmoothHandsExample(subsystem, successFlags, updateType, m_LastProcessorExampleMode != m_ProcessorExampleMode);
+ break;
+
+ case ProcessorExampleMode.Invert:
+ InvertHandsExample(subsystem, successFlags, updateType);
+ break;
+ }
+
+ m_LastProcessorExampleMode = m_ProcessorExampleMode;
+ }
+
+ // Smooths the hand movements of an XRHandSubsystem by updating the root
+ // pose of the left and right hands with interpolated positions.
+ void SmoothHandsExample(XRHandSubsystem subsystem, XRHandSubsystem.UpdateSuccessFlags successFlags, XRHandSubsystem.UpdateType updateType, bool modeChanged)
+ {
+ var leftHand = subsystem.leftHand;
+ var rightHand = subsystem.rightHand;
+
+ if (leftHand.isTracked && m_LeftHandSmoothingFactor > 0)
+ {
+ var leftPose = leftHand.rootPose;
+ var currentLeftHandPosition = leftPose.position;
+ if (!m_FirstFrame && !modeChanged)
+ {
+ float tweenAmt = Time.deltaTime * m_LeftHandSmoothingFactor;
+ currentLeftHandPosition = Vector3.Lerp(m_LastLeftHandPosition, currentLeftHandPosition, tweenAmt);
+ m_LeftHandPose.position = currentLeftHandPosition;
+ m_LeftHandPose.rotation = leftPose.rotation;
+
+ leftHand.SetRootPose(m_LeftHandPose);
+ subsystem.SetCorrespondingHand(leftHand);
+ }
+ m_LastLeftHandPosition = currentLeftHandPosition;
+ }
+
+ if (rightHand.isTracked && m_RightHandSmoothingFactor > 0)
+ {
+ var rightPose = rightHand.rootPose;
+ var currentRightHandPosition = rightPose.position;
+ if (!m_FirstFrame && !modeChanged)
+ {
+ float tweenAmt = Time.deltaTime * m_RightHandSmoothingFactor;
+ currentRightHandPosition = Vector3.Lerp(m_LastRightHandPosition, currentRightHandPosition, tweenAmt);
+ m_RightHandPose.position = currentRightHandPosition;
+ m_RightHandPose.rotation = rightPose.rotation;
+
+ rightHand.SetRootPose(m_RightHandPose);
+ subsystem.SetCorrespondingHand(rightHand);
+ }
+ m_LastRightHandPosition = currentRightHandPosition;
+ }
+ }
+
+ // Call this from process joints to try inverting the user's hands.
+ void InvertHandsExample(XRHandSubsystem subsystem, XRHandSubsystem.UpdateSuccessFlags successFlags, XRHandSubsystem.UpdateType updateType)
+ {
+ var leftHand = subsystem.leftHand;
+ var leftHandPose = leftHand.rootPose;
+
+ var rightHand = subsystem.rightHand;
+ var rightHandPose = rightHand.rootPose;
+
+ if (leftHand.isTracked)
+ {
+ leftHand.SetRootPose(rightHandPose);
+ subsystem.SetCorrespondingHand(leftHand);
+
+ rightHand.SetRootPose(leftHandPose);
+ subsystem.SetCorrespondingHand(rightHand);
+ }
+ }
+
+ void Update()
+ {
+ if (m_Subsystem != null)
+ return;
+
+ SubsystemManager.GetSubsystems(s_SubsystemsReuse);
+ if (s_SubsystemsReuse.Count == 0)
+ return;
+
+ m_Subsystem = s_SubsystemsReuse[0];
+ m_Subsystem.RegisterProcessor(this);
+ }
+
+ void OnDisable()
+ {
+ if (m_Subsystem != null)
+ {
+ m_Subsystem.UnregisterProcessor(this);
+ m_Subsystem = null;
+ }
+ }
+
+ XRHandSubsystem m_Subsystem;
+ static List<XRHandSubsystem> s_SubsystemsReuse = new List<XRHandSubsystem>();
+ }
+}
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/HandProcessor.cs.meta b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/HandProcessor.cs.meta
new file mode 100644
index 0000000..748484b
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/HandProcessor.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ac5903b776721d74786a2e43f00b949a
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/HandVisualizer.cs b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/HandVisualizer.cs
new file mode 100644
index 0000000..7d94269
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/HandVisualizer.cs
@@ -0,0 +1,608 @@
+using System.Collections.Generic;
+using UnityEngine.Serialization;
+
+namespace UnityEngine.XR.Hands.Samples.VisualizerSample
+{
+ // Hand rig setups can differ between platforms. In these cases, the HandVisualizer supports displaying unique hands on a per-platform basis.
+ // If you would like to customize the hand meshes that are displayed by the HandVisualizer, based on the platform you are using,
+ // you will need to replace the rigged hand mesh references assigned to the corresponding fields for that platform.
+ // For Meta Quest devices, assign your rigged hand meshes to the "m_MetaQuestLeftHandMesh" & "m_MetaQuestRightHandMesh" fields.
+ // For Android XR devices, assign your rigged hand meshes to the "m_AndroidXRLeftHandMesh" & "m_AndroidXRRightHandMesh" fields.
+ // The rigged hand meshes that are assigned for a given platform will be displayed when that platform is detected,
+ // and any other rigged hand meshes assigned for other undetected platforms will not be displayed.
+
+ /// <summary>
+ /// This component visualizes the hand joints and mesh for the left and right hands.
+ /// </summary>
+ public class HandVisualizer : MonoBehaviour
+ {
+ /// <summary>
+ /// The type of velocity to visualize.
+ /// </summary>
+ public enum VelocityType
+ {
+ /// <summary>
+ /// Visualize the linear velocity of the joint.
+ /// </summary>
+ Linear,
+
+ /// <summary>
+ /// Visualize the angular velocity of the joint.
+ /// </summary>
+ Angular,
+
+ /// <summary>
+ /// Do not visualize velocity.
+ /// </summary>
+ None,
+ }
+
+ [SerializeField]
+ [Tooltip("If this is enabled, this component will enable the Input System internal feature flag 'USE_OPTIMIZED_CONTROLS'. You must have at least version 1.5.0 of the Input System and have its backend enabled for this to take effect.")]
+ bool m_UseOptimizedControls;
+
+ [SerializeField, FormerlySerializedAs("m_LeftHandMesh")]
+ [Tooltip("References either a prefab or a GameObject in the scene that will be used to visualize the left hand.")]
+ GameObject m_MetaQuestLeftHandMesh;
+
+ [SerializeField, FormerlySerializedAs("m_RightHandMesh")]
+ [Tooltip("References either a prefab or a GameObject in the scene that will be used to visualize the right hand.")]
+ GameObject m_MetaQuestRightHandMesh;
+
+ [SerializeField]
+ [Tooltip("References either a prefab or a GameObject in the scene that will be used to visualize the left hand on Android XR devices." +
+ "<br><br><b>Instructions for how to setup and use these meshes can be found at the top of the <b>HandVisualizer.cs class</b>")]
+ GameObject m_AndroidXRLeftHandMesh;
+
+ [SerializeField]
+ [Tooltip("References either a prefab or a GameObject in the scene that will be used to visualize the right hand on Android XR devices." +
+ "<br><br><b>Instructions for how to setup and use these meshes can be found at the top of the <b>HandVisualizer.cs class</b>")]
+ GameObject m_AndroidXRRightHandMesh;
+
+ [SerializeField]
+ [Tooltip("(Optional) If this is set, the hand meshes will be assigned this material.")]
+ Material m_HandMeshMaterial;
+
+ [SerializeField]
+ [Tooltip("Tells the Hand Visualizer to draw the meshes for the hands.")]
+ bool m_DrawMeshes;
+ bool m_PreviousDrawMeshes;
+
+ /// <summary>
+ /// Tells the Hand Visualizer to draw the meshes for the hands.
+ /// </summary>
+ public bool drawMeshes
+ {
+ get => m_DrawMeshes;
+ set => m_DrawMeshes = value;
+ }
+
+ [SerializeField]
+ [Tooltip("The prefab that will be used to visualize the joints for debugging.")]
+ GameObject m_DebugDrawPrefab;
+
+ [SerializeField]
+ [Tooltip("Tells the Hand Visualizer to draw the debug joints for the hands.")]
+ bool m_DebugDrawJoints;
+ bool m_PreviousDebugDrawJoints;
+
+ /// <summary>
+ /// Tells the Hand Visualizer to draw the debug joints for the hands.
+ /// </summary>
+ public bool debugDrawJoints
+ {
+ get => m_DebugDrawJoints;
+ set => m_DebugDrawJoints = value;
+ }
+
+ [SerializeField]
+ [Tooltip("Prefab to use for visualizing the velocity.")]
+ GameObject m_VelocityPrefab;
+
+ [SerializeField]
+ [Tooltip("The type of velocity to visualize.")]
+ VelocityType m_VelocityType;
+ VelocityType m_PreviousVelocityType;
+
+ /// <summary>
+ /// The type of velocity to visualize.
+ /// </summary>
+ public VelocityType velocityType
+ {
+ get => m_VelocityType;
+ set => m_VelocityType = value;
+ }
+
+ XRHandSubsystem m_Subsystem;
+ HandGameObjects m_LeftHandGameObjects;
+ HandGameObjects m_RightHandGameObjects;
+
+ static readonly List<XRHandSubsystem> s_SubsystemsReuse = new List<XRHandSubsystem>();
+
+ /// <summary>
+ /// See <see cref="MonoBehaviour"/>.
+ /// </summary>
+ protected void Awake()
+ {
+#if ENABLE_INPUT_SYSTEM
+ if (m_UseOptimizedControls)
+ InputSystem.InputSystem.settings.SetInternalFeatureFlag("USE_OPTIMIZED_CONTROLS", true);
+#endif // ENABLE_INPUT_SYSTEM
+ }
+
+ /// <summary>
+ /// See <see cref="MonoBehaviour"/>.
+ /// </summary>
+ protected void OnEnable()
+ {
+ if (m_Subsystem == null)
+ return;
+
+ UpdateRenderingVisibility(m_LeftHandGameObjects, m_Subsystem.leftHand.isTracked);
+ UpdateRenderingVisibility(m_RightHandGameObjects, m_Subsystem.rightHand.isTracked);
+ }
+
+ /// <summary>
+ /// See <see cref="MonoBehaviour"/>.
+ /// </summary>
+ protected void OnDisable()
+ {
+ if (m_Subsystem != null)
+ {
+ m_Subsystem.trackingAcquired -= OnTrackingAcquired;
+ m_Subsystem.trackingLost -= OnTrackingLost;
+ m_Subsystem.updatedHands -= OnUpdatedHands;
+ m_Subsystem = null;
+ }
+
+ UpdateRenderingVisibility(m_LeftHandGameObjects, false);
+ UpdateRenderingVisibility(m_RightHandGameObjects, false);
+ }
+
+ /// <summary>
+ /// See <see cref="MonoBehaviour"/>.
+ /// </summary>
+ protected void OnDestroy()
+ {
+ if (m_LeftHandGameObjects != null)
+ {
+ m_LeftHandGameObjects.OnDestroy();
+ m_LeftHandGameObjects = null;
+ }
+
+ if (m_RightHandGameObjects != null)
+ {
+ m_RightHandGameObjects.OnDestroy();
+ m_RightHandGameObjects = null;
+ }
+ }
+
+ /// <summary>
+ /// See <see cref="MonoBehaviour"/>.
+ /// </summary>
+ protected void Update()
+ {
+ if (m_Subsystem != null && m_Subsystem.running)
+ return;
+
+ SubsystemManager.GetSubsystems(s_SubsystemsReuse);
+ var foundRunningHandSubsystem = false;
+ for (var i = 0; i < s_SubsystemsReuse.Count; ++i)
+ {
+ var handSubsystem = s_SubsystemsReuse[i];
+ if (handSubsystem.running)
+ {
+ UnsubscribeHandSubsystem();
+ m_Subsystem = handSubsystem;
+ foundRunningHandSubsystem = true;
+ break;
+ }
+ }
+
+ if (!foundRunningHandSubsystem)
+ return;
+
+ GameObject selectedLeftHandMesh = null, selectedRightHandMesh = null;
+ if (m_Subsystem.detectedHandMeshLayout == XRDetectedHandMeshLayout.OpenXRAndroidXR)
+ {
+ selectedLeftHandMesh = m_AndroidXRLeftHandMesh;
+ selectedRightHandMesh = m_AndroidXRRightHandMesh;
+ }
+ else
+ {
+ selectedLeftHandMesh = m_MetaQuestLeftHandMesh;
+ selectedRightHandMesh = m_MetaQuestRightHandMesh;
+ }
+
+ if (m_LeftHandGameObjects == null)
+ {
+ m_LeftHandGameObjects = new HandGameObjects(
+ Handedness.Left,
+ transform,
+ selectedLeftHandMesh,
+ m_HandMeshMaterial,
+ m_DebugDrawPrefab,
+ m_VelocityPrefab);
+ }
+
+ if (m_RightHandGameObjects == null)
+ {
+ m_RightHandGameObjects = new HandGameObjects(
+ Handedness.Right,
+ transform,
+ selectedRightHandMesh,
+ m_HandMeshMaterial,
+ m_DebugDrawPrefab,
+ m_VelocityPrefab);
+ }
+
+ UpdateRenderingVisibility(m_LeftHandGameObjects, m_Subsystem.leftHand.isTracked);
+ UpdateRenderingVisibility(m_RightHandGameObjects, m_Subsystem.rightHand.isTracked);
+
+ m_PreviousDrawMeshes = m_DrawMeshes;
+ m_PreviousDebugDrawJoints = m_DebugDrawJoints;
+ m_PreviousVelocityType = m_VelocityType;
+
+ SubscribeHandSubsystem();
+ }
+
+ void SubscribeHandSubsystem()
+ {
+ if (m_Subsystem == null)
+ return;
+
+ m_Subsystem.trackingAcquired += OnTrackingAcquired;
+ m_Subsystem.trackingLost += OnTrackingLost;
+ m_Subsystem.updatedHands += OnUpdatedHands;
+ }
+
+ void UnsubscribeHandSubsystem()
+ {
+ if (m_Subsystem == null)
+ return;
+
+ m_Subsystem.trackingAcquired -= OnTrackingAcquired;
+ m_Subsystem.trackingLost -= OnTrackingLost;
+ m_Subsystem.updatedHands -= OnUpdatedHands;
+ }
+
+ void UpdateRenderingVisibility(HandGameObjects handGameObjects, bool isTracked)
+ {
+ if (handGameObjects == null)
+ return;
+
+ handGameObjects.ToggleDrawMesh(m_DrawMeshes);
+ handGameObjects.ToggleDebugDrawJoints(m_DebugDrawJoints && isTracked);
+ handGameObjects.SetVelocityType(isTracked ? m_VelocityType : VelocityType.None);
+ }
+
+ void OnTrackingAcquired(XRHand hand)
+ {
+ switch (hand.handedness)
+ {
+ case Handedness.Left:
+ UpdateRenderingVisibility(m_LeftHandGameObjects, true);
+ break;
+
+ case Handedness.Right:
+ UpdateRenderingVisibility(m_RightHandGameObjects, true);
+ break;
+ }
+ }
+
+ void OnTrackingLost(XRHand hand)
+ {
+ switch (hand.handedness)
+ {
+ case Handedness.Left:
+ UpdateRenderingVisibility(m_LeftHandGameObjects, false);
+ break;
+
+ case Handedness.Right:
+ UpdateRenderingVisibility(m_RightHandGameObjects, false);
+ break;
+ }
+ }
+
+ void OnUpdatedHands(XRHandSubsystem subsystem, XRHandSubsystem.UpdateSuccessFlags updateSuccessFlags, XRHandSubsystem.UpdateType updateType)
+ {
+ // We have no game logic depending on the Transforms, so early out here
+ // (add game logic before this return here, directly querying from
+ // subsystem.leftHand and subsystem.rightHand using GetJoint on each hand)
+ if (updateType == XRHandSubsystem.UpdateType.Dynamic)
+ return;
+
+ bool leftHandTracked = subsystem.leftHand.isTracked;
+ bool rightHandTracked = subsystem.rightHand.isTracked;
+
+ if (m_PreviousDrawMeshes != m_DrawMeshes)
+ {
+ m_LeftHandGameObjects.ToggleDrawMesh(m_DrawMeshes);
+ m_RightHandGameObjects.ToggleDrawMesh(m_DrawMeshes);
+ m_PreviousDrawMeshes = m_DrawMeshes;
+ }
+
+ if (m_PreviousDebugDrawJoints != m_DebugDrawJoints)
+ {
+ m_LeftHandGameObjects.ToggleDebugDrawJoints(m_DebugDrawJoints && leftHandTracked);
+ m_RightHandGameObjects.ToggleDebugDrawJoints(m_DebugDrawJoints && rightHandTracked);
+ m_PreviousDebugDrawJoints = m_DebugDrawJoints;
+ }
+
+ if (m_PreviousVelocityType != m_VelocityType)
+ {
+ m_LeftHandGameObjects.SetVelocityType(leftHandTracked ? m_VelocityType : VelocityType.None);
+ m_RightHandGameObjects.SetVelocityType(rightHandTracked ? m_VelocityType : VelocityType.None);
+ m_PreviousVelocityType = m_VelocityType;
+ }
+
+ m_LeftHandGameObjects.UpdateJoints(
+ subsystem.leftHand,
+ (updateSuccessFlags & XRHandSubsystem.UpdateSuccessFlags.LeftHandJoints) != 0,
+ m_DebugDrawJoints,
+ m_VelocityType);
+
+ m_RightHandGameObjects.UpdateJoints(
+ subsystem.rightHand,
+ (updateSuccessFlags & XRHandSubsystem.UpdateSuccessFlags.RightHandJoints) != 0,
+ m_DebugDrawJoints,
+ m_VelocityType);
+ }
+
+ class HandGameObjects
+ {
+ GameObject m_HandRoot;
+ GameObject m_DrawJointsParent;
+
+ GameObject[] m_DrawJoints = new GameObject[XRHandJointID.EndMarker.ToIndex()];
+ GameObject[] m_VelocityParents = new GameObject[XRHandJointID.EndMarker.ToIndex()];
+ LineRenderer[] m_Lines = new LineRenderer[XRHandJointID.EndMarker.ToIndex()];
+ JointVisualizer[] m_JointVisualizers = new JointVisualizer[XRHandJointID.EndMarker.ToIndex()];
+
+ static Vector3[] s_LinePointsReuse = new Vector3[2];
+ XRHandMeshController m_MeshController;
+ const float k_LineWidth = 0.005f;
+
+ public HandGameObjects(
+ Handedness handedness,
+ Transform parent,
+ GameObject meshPrefab,
+ Material meshMaterial,
+ GameObject debugDrawPrefab,
+ GameObject velocityPrefab)
+ {
+ void AssignJoint(
+ XRHandJointID jointId,
+ Transform jointDrivenTransform,
+ Transform drawJointsParent)
+ {
+ var jointIndex = jointId.ToIndex();
+ m_DrawJoints[jointIndex] = Instantiate(debugDrawPrefab);
+ m_DrawJoints[jointIndex].transform.parent = drawJointsParent;
+ m_DrawJoints[jointIndex].name = jointId.ToString();
+
+ m_VelocityParents[jointIndex] = Instantiate(velocityPrefab);
+ m_VelocityParents[jointIndex].transform.parent = jointDrivenTransform;
+
+ m_Lines[jointIndex] = m_DrawJoints[jointIndex].GetComponent<LineRenderer>();
+ m_Lines[jointIndex].startWidth = m_Lines[jointIndex].endWidth = k_LineWidth;
+ s_LinePointsReuse[0] = s_LinePointsReuse[1] = jointDrivenTransform.position;
+ m_Lines[jointIndex].SetPositions(s_LinePointsReuse);
+
+ if (m_DrawJoints[jointIndex].TryGetComponent<JointVisualizer>(out var jointVisualizer))
+ m_JointVisualizers[jointIndex] = jointVisualizer;
+ }
+
+ var isSceneObject = meshPrefab.scene.IsValid();
+ m_HandRoot = isSceneObject ? meshPrefab : Instantiate(meshPrefab, parent);
+ m_HandRoot.SetActive(false); // Deactivate so that added components do not run OnEnable before they are finished being set up
+
+ m_HandRoot.transform.localPosition = Vector3.zero;
+ m_HandRoot.transform.localRotation = Quaternion.identity;
+
+ var handEvents = m_HandRoot.GetComponent<XRHandTrackingEvents>();
+ if (handEvents == null)
+ {
+ handEvents = m_HandRoot.AddComponent<XRHandTrackingEvents>();
+ handEvents.updateType = XRHandTrackingEvents.UpdateTypes.Dynamic;
+ handEvents.handedness = handedness;
+ }
+
+ m_MeshController = m_HandRoot.GetComponent<XRHandMeshController>();
+ if (m_MeshController == null)
+ {
+ m_MeshController = m_HandRoot.AddComponent<XRHandMeshController>();
+ for (var childIndex = 0; childIndex < m_HandRoot.transform.childCount; ++childIndex)
+ {
+ var childTransform = m_HandRoot.transform.GetChild(childIndex);
+ if (childTransform.TryGetComponent<SkinnedMeshRenderer>(out var renderer))
+ m_MeshController.handMeshRenderer = renderer;
+ }
+
+ m_MeshController.handTrackingEvents = handEvents;
+ }
+
+ if (meshMaterial != null)
+ {
+ m_MeshController.handMeshRenderer.sharedMaterial = meshMaterial;
+ }
+
+ var skeletonDriver = m_HandRoot.GetComponent<XRHandSkeletonDriver>();
+ if (skeletonDriver == null)
+ {
+ skeletonDriver = m_HandRoot.AddComponent<XRHandSkeletonDriver>();
+ skeletonDriver.jointTransformReferences = new List<JointToTransformReference>();
+ Transform root = null;
+ for (var childIndex = 0; childIndex < m_HandRoot.transform.childCount; ++childIndex)
+ {
+ var child = m_HandRoot.transform.GetChild(childIndex);
+ if (child.gameObject.name.EndsWith(XRHandJointID.Wrist.ToString()))
+ root = child;
+ }
+
+ skeletonDriver.rootTransform = root;
+ XRHandSkeletonDriverUtility.FindJointsFromRoot(skeletonDriver);
+ skeletonDriver.InitializeFromSerializedReferences();
+ skeletonDriver.handTrackingEvents = handEvents;
+ }
+
+ m_DrawJointsParent = new GameObject();
+ m_DrawJointsParent.transform.parent = parent;
+ m_DrawJointsParent.transform.localPosition = Vector3.zero;
+ m_DrawJointsParent.transform.localRotation = Quaternion.identity;
+ m_DrawJointsParent.name = handedness + "HandDebugDrawJoints";
+
+ for (var i = 0; i < skeletonDriver.jointTransformReferences.Count; i++)
+ {
+ var jointTransformReference = skeletonDriver.jointTransformReferences[i];
+ var jointTransform = jointTransformReference.jointTransform;
+ var jointID = jointTransformReference.xrHandJointID;
+ AssignJoint(jointID, jointTransform, m_DrawJointsParent.transform);
+ }
+
+ m_HandRoot.SetActive(true);
+ }
+
+ public void OnDestroy()
+ {
+ Destroy(m_HandRoot);
+ m_HandRoot = null;
+
+ for (var jointIndex = 0; jointIndex < m_DrawJoints.Length; ++jointIndex)
+ {
+ Destroy(m_DrawJoints[jointIndex]);
+ m_DrawJoints[jointIndex] = null;
+ }
+
+ for (var jointIndex = 0; jointIndex < m_VelocityParents.Length; ++jointIndex)
+ {
+ Destroy(m_VelocityParents[jointIndex]);
+ m_VelocityParents[jointIndex] = null;
+ }
+
+ Destroy(m_DrawJointsParent);
+ m_DrawJointsParent = null;
+ }
+
+ public void ToggleDrawMesh(bool drawMesh)
+ {
+ m_MeshController.enabled = drawMesh;
+ if (!drawMesh)
+ m_MeshController.handMeshRenderer.enabled = false;
+ }
+
+ public void ToggleDebugDrawJoints(bool debugDrawJoints)
+ {
+ for (int jointIndex = 0; jointIndex < m_DrawJoints.Length; ++jointIndex)
+ {
+ ToggleRenderers<MeshRenderer>(debugDrawJoints, m_DrawJoints[jointIndex].transform);
+ m_Lines[jointIndex].enabled = debugDrawJoints;
+ }
+
+ m_Lines[0].enabled = false;
+ }
+
+ public void SetVelocityType(VelocityType velocityType)
+ {
+ for (int jointIndex = 0; jointIndex < m_VelocityParents.Length; ++jointIndex)
+ ToggleRenderers<LineRenderer>(velocityType != VelocityType.None, m_VelocityParents[jointIndex].transform);
+ }
+
+ public void UpdateJoints(
+ XRHand hand,
+ bool areJointsTracked,
+ bool debugDrawJoints,
+ VelocityType velocityType)
+ {
+ if (!areJointsTracked)
+ return;
+
+ var wristPose = Pose.identity;
+ var parentIndex = XRHandJointID.Wrist.ToIndex();
+ UpdateJoint(debugDrawJoints, velocityType, hand.GetJoint(XRHandJointID.Wrist), ref wristPose, ref parentIndex);
+ UpdateJoint(debugDrawJoints, velocityType, hand.GetJoint(XRHandJointID.Palm), ref wristPose, ref parentIndex, false);
+
+ for (var fingerIndex = (int)XRHandFingerID.Thumb;
+ fingerIndex <= (int)XRHandFingerID.Little;
+ ++fingerIndex)
+ {
+ var parentPose = wristPose;
+ var fingerId = (XRHandFingerID)fingerIndex;
+ parentIndex = XRHandJointID.Wrist.ToIndex();
+
+ var jointIndexBack = fingerId.GetBackJointID().ToIndex();
+ for (var jointIndex = fingerId.GetFrontJointID().ToIndex();
+ jointIndex <= jointIndexBack;
+ ++jointIndex)
+ {
+ UpdateJoint(debugDrawJoints, velocityType, hand.GetJoint(XRHandJointIDUtility.FromIndex(jointIndex)), ref parentPose, ref parentIndex);
+ }
+ }
+ }
+
+ void UpdateJoint(
+ bool debugDrawJoints,
+ VelocityType velocityType,
+ XRHandJoint joint,
+ ref Pose parentPose,
+ ref int parentIndex,
+ bool cacheParentPose = true)
+ {
+ if (joint.id == XRHandJointID.Invalid)
+ return;
+
+ var jointIndex = joint.id.ToIndex();
+ m_JointVisualizers[jointIndex].NotifyTrackingState(joint.trackingState);
+
+ if (!joint.TryGetPose(out var pose))
+ return;
+
+ m_DrawJoints[jointIndex].transform.localPosition = pose.position;
+ m_DrawJoints[jointIndex].transform.localRotation = pose.rotation;
+
+ if (debugDrawJoints && joint.id != XRHandJointID.Wrist)
+ {
+ s_LinePointsReuse[0] = m_DrawJoints[parentIndex].transform.position;
+ s_LinePointsReuse[1] = m_DrawJoints[jointIndex].transform.position;
+ m_Lines[jointIndex].SetPositions(s_LinePointsReuse);
+ }
+
+ if (cacheParentPose)
+ {
+ parentPose = pose;
+ parentIndex = jointIndex;
+ }
+
+ if (velocityType != VelocityType.None && m_VelocityParents[jointIndex].TryGetComponent<LineRenderer>(out var renderer))
+ {
+ m_VelocityParents[jointIndex].transform.localPosition = Vector3.zero;
+ m_VelocityParents[jointIndex].transform.localRotation = Quaternion.identity;
+
+ s_LinePointsReuse[0] = s_LinePointsReuse[1] = m_VelocityParents[jointIndex].transform.position;
+ if (velocityType == VelocityType.Linear)
+ {
+ if (joint.TryGetLinearVelocity(out var velocity))
+ s_LinePointsReuse[1] += velocity;
+ }
+ else if (velocityType == VelocityType.Angular)
+ {
+ if (joint.TryGetAngularVelocity(out var velocity))
+ s_LinePointsReuse[1] += 0.05f * velocity.normalized;
+ }
+
+ renderer.SetPositions(s_LinePointsReuse);
+ }
+ }
+
+ static void ToggleRenderers<TRenderer>(bool toggle, Transform rendererTransform)
+ where TRenderer : Renderer
+ {
+ if (rendererTransform.TryGetComponent<TRenderer>(out var renderer))
+ renderer.enabled = toggle;
+
+ for (var childIndex = 0; childIndex < rendererTransform.childCount; ++childIndex)
+ ToggleRenderers<TRenderer>(toggle, rendererTransform.GetChild(childIndex));
+ }
+ }
+ }
+}
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/HandVisualizer.cs.meta b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/HandVisualizer.cs.meta
new file mode 100644
index 0000000..65ca33e
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/HandVisualizer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2e9813c68d7d6f44282ace8bd2d1fd46
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/JointVisualizer.cs b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/JointVisualizer.cs
new file mode 100644
index 0000000..d8b67e9
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/JointVisualizer.cs
@@ -0,0 +1,38 @@
+using UnityEngine;
+using UnityEngine.XR.Hands.Processing;
+
+namespace UnityEngine.XR.Hands.Samples.VisualizerSample
+{
+ public class JointVisualizer : MonoBehaviour
+ {
+ [SerializeField]
+ GameObject m_JointVisual;
+
+ [SerializeField]
+ Material m_HighFidelityJointMaterial;
+
+ [SerializeField]
+ Material m_LowFidelityJointMaterial;
+
+ bool m_HighFidelityJoint;
+
+ Renderer m_JointRenderer;
+
+ public void NotifyTrackingState(XRHandJointTrackingState jointTrackingState)
+ {
+ bool highFidelityJoint = (jointTrackingState & XRHandJointTrackingState.HighFidelityPose) == XRHandJointTrackingState.HighFidelityPose;
+ if (m_HighFidelityJoint == highFidelityJoint)
+ return;
+
+ m_JointRenderer.material = highFidelityJoint ? m_HighFidelityJointMaterial : m_LowFidelityJointMaterial;
+
+ m_HighFidelityJoint = highFidelityJoint;
+ }
+
+ void Start()
+ {
+ if (m_JointVisual.TryGetComponent<Renderer>(out var jointRenderer))
+ m_JointRenderer = jointRenderer;
+ }
+ }
+}
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/JointVisualizer.cs.meta b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/JointVisualizer.cs.meta
new file mode 100644
index 0000000..9f1035d
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/JointVisualizer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6e1c395ff62a3a14dbeb293298bb46bf
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/MaterialPipelineHandler.cs b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/MaterialPipelineHandler.cs
new file mode 100644
index 0000000..c673fa9
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/MaterialPipelineHandler.cs
@@ -0,0 +1,242 @@
+using UnityEngine.Rendering;
+using System.Collections.Generic;
+#if UNITY_EDITOR
+using UnityEditor;
+#endif
+
+namespace UnityEngine.XR.Hands.Samples.VisualizerSample
+{
+#if UNITY_EDITOR
+ [InitializeOnLoad]
+ static class RenderPipelineValidation
+ {
+ static RenderPipelineValidation()
+ {
+ foreach (var pipelineHandler in GetAllInstances())
+ pipelineHandler.AutoRefreshPipelineShaders();
+ }
+
+ static List<MaterialPipelineHandler> GetAllInstances()
+ {
+ var instances = new List<MaterialPipelineHandler>();
+
+ // Find all GUIDs for objects that match the type MaterialPipelineHandler
+ var guids = AssetDatabase.FindAssets("t:MaterialPipelineHandler");
+ for (int i = 0; i < guids.Length; i++)
+ {
+ string path = AssetDatabase.GUIDToAssetPath(guids[i]);
+ var asset = AssetDatabase.LoadAssetAtPath<MaterialPipelineHandler>(path);
+ if (asset != null)
+ instances.Add(asset);
+ }
+
+ return instances;
+ }
+ }
+#endif
+
+ /// <summary>
+ /// Serializable class that contains the shader information for a material.
+ /// </summary>
+ [System.Serializable]
+ public class ShaderContainer
+ {
+ public Material material;
+ public bool useSRPShaderName = true;
+ public string scriptableRenderPipelineShaderName = "Universal Render Pipeline/Lit";
+ public Shader scriptableRenderPipelineShader;
+ public bool useBuiltinShaderName = true;
+ public string builtInPipelineShaderName = "Standard";
+ public Shader builtInPipelineShader;
+ }
+
+ /// <summary>
+ /// Scriptable object that allows for setting the shader on a material based on the current render pipeline.
+ /// Will run automatically OnEnable in the editor to set the shaders on project bootup. Can be refreshed manually with editor button.
+ /// This exists because while objects render correctly using shadergraph shaders, others do not and using the standard shader resolves various rendering issues.
+ /// </summary>
+ [CreateAssetMenu(fileName = "MaterialPipelineHandler", menuName = "XR/MaterialPipelineHandler", order = 0)]
+ public class MaterialPipelineHandler : ScriptableObject
+ {
+ [SerializeField]
+ [Tooltip("List of materials and their associated shaders.")]
+ List<ShaderContainer> m_ShaderContainers;
+
+ [SerializeField]
+ [Tooltip("If true, the shaders will be refreshed automatically when the editor opens and when this scriptable object instance is enabled.")]
+ bool m_AutoRefreshShaders = true;
+
+#if UNITY_EDITOR
+ void OnEnable()
+ {
+ if (Application.isPlaying)
+ return;
+ AutoRefreshPipelineShaders();
+ }
+#endif
+
+ public void AutoRefreshPipelineShaders()
+ {
+ if (m_AutoRefreshShaders)
+ SetPipelineShaders();
+ }
+
+ /// <summary>
+ /// Applies the appropriate shader to the materials based on the current render pipeline.
+ /// </summary>
+ public void SetPipelineShaders()
+ {
+ if (m_ShaderContainers == null)
+ return;
+
+ bool isBuiltinRenderPipeline = GraphicsSettings.currentRenderPipeline == null;
+
+ foreach (var info in m_ShaderContainers)
+ {
+ if (info.material == null)
+ continue;
+
+ // Find the appropriate shaders based on the toggle
+ Shader birpShader = info.useBuiltinShaderName ? Shader.Find(info.builtInPipelineShaderName) : info.builtInPipelineShader;
+ Shader srpShader = info.useSRPShaderName ? Shader.Find(info.scriptableRenderPipelineShaderName) : info.scriptableRenderPipelineShader;
+
+ // Determine current shader for comparison
+ Shader currentShader = info.material.shader;
+
+ // Update shader for the current render pipeline only if necessary
+ if (isBuiltinRenderPipeline && birpShader != null && currentShader != birpShader)
+ {
+ info.material.shader = birpShader;
+ MarkMaterialModified(info.material);
+ }
+ else if (!isBuiltinRenderPipeline && srpShader != null && currentShader != srpShader)
+ {
+ info.material.shader = srpShader;
+ MarkMaterialModified(info.material);
+ }
+ }
+ }
+
+ static void MarkMaterialModified(Material material)
+ {
+#if UNITY_EDITOR
+ EditorUtility.SetDirty(material);
+#endif
+ }
+ }
+
+#if UNITY_EDITOR
+ /// <summary>
+ /// Custom property drawer for the shader container class.
+ /// </summary>
+ [CustomPropertyDrawer(typeof(ShaderContainer))]
+ public class ShaderContainerDrawer : PropertyDrawer
+ {
+ public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
+ {
+ EditorGUI.BeginProperty(position, label, property);
+
+ float singleLineHeight = EditorGUIUtility.singleLineHeight;
+ float verticalSpacing = EditorGUIUtility.standardVerticalSpacing;
+
+ SerializedProperty materialProp = property.FindPropertyRelative("material");
+ SerializedProperty useSRPShaderNameProp = property.FindPropertyRelative("useSRPShaderName");
+ SerializedProperty scriptableShaderNameProp = property.FindPropertyRelative("scriptableRenderPipelineShaderName");
+ SerializedProperty scriptableShaderProp = property.FindPropertyRelative("scriptableRenderPipelineShader");
+ SerializedProperty useShaderNameProp = property.FindPropertyRelative("useBuiltinShaderName");
+ SerializedProperty builtInNameProp = property.FindPropertyRelative("builtInPipelineShaderName");
+ SerializedProperty builtInShaderProp = property.FindPropertyRelative("builtInPipelineShader");
+
+ // Draw Material without the header.
+ position.height = singleLineHeight;
+ EditorGUI.PropertyField(position, materialProp);
+ position.y += singleLineHeight + verticalSpacing;
+
+ // SRP Shader header and fields.
+ EditorGUI.LabelField(position, "Scriptable Render Pipeline Shader", EditorStyles.boldLabel);
+ position.y += EditorGUIUtility.singleLineHeight + verticalSpacing;
+
+ EditorGUI.PropertyField(position, useSRPShaderNameProp);
+ position.y += singleLineHeight + verticalSpacing;
+
+ if (useSRPShaderNameProp.boolValue)
+ {
+ EditorGUI.PropertyField(position, scriptableShaderNameProp);
+ position.y += singleLineHeight + verticalSpacing;
+ }
+ else
+ {
+ EditorGUI.PropertyField(position, scriptableShaderProp);
+ position.y += singleLineHeight + verticalSpacing;
+ }
+
+ // Built-in Shader header and fields.
+ EditorGUI.LabelField(position, "Built-In Render Pipeline Shader", EditorStyles.boldLabel);
+ position.y += singleLineHeight + verticalSpacing;
+
+ EditorGUI.PropertyField(position, useShaderNameProp);
+ position.y += singleLineHeight + verticalSpacing;
+
+ if (useShaderNameProp.boolValue)
+ {
+ EditorGUI.PropertyField(position, builtInNameProp);
+ position.y += singleLineHeight + verticalSpacing;
+ }
+ else
+ {
+ EditorGUI.PropertyField(position, builtInShaderProp);
+ position.y += singleLineHeight + verticalSpacing;
+ }
+
+ // Draw a separator line at the end.
+ position.y += verticalSpacing / 2; // Extra space for the line.
+ position.height = 1;
+ EditorGUI.DrawRect(new Rect(position.x, position.y, position.width, 1), Color.gray);
+
+ EditorGUI.EndProperty();
+ }
+
+ public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
+ {
+ const int baseFieldCount = 4; // The Material field, the two toggles, and one for an optional field.
+ int extraLineCount = property.FindPropertyRelative("useBuiltinShaderName").boolValue ? 0 : 1;
+ extraLineCount += property.FindPropertyRelative("useSRPShaderName").boolValue ? 0 : 1;
+
+ float singleLineHeight = EditorGUIUtility.singleLineHeight;
+ float verticalSpacing = EditorGUIUtility.standardVerticalSpacing;
+ float headerHeight = EditorGUIUtility.singleLineHeight; // No longer need extra height for headers.
+
+ // Calculate height for fields and headers
+ float fieldsHeight = baseFieldCount * singleLineHeight + (baseFieldCount - 1 + extraLineCount) * verticalSpacing;
+
+ // Allow space for header, separator line, and a bit of padding before the line.
+ float headersHeight = 2 * (headerHeight + verticalSpacing);
+ float separatorSpace = verticalSpacing / 2 + 1; // Additional vertical spacing and line height.
+
+ return fieldsHeight + headersHeight + separatorSpace + singleLineHeight * 1.5f;
+ }
+ }
+
+ /// <summary>
+ /// Custom editor MaterialPipelineHandler
+ /// </summary>
+ [CustomEditor(typeof(MaterialPipelineHandler)), CanEditMultipleObjects]
+ public class MaterialPipelineHandlerEditor : Editor
+ {
+ public override void OnInspectorGUI()
+ {
+ base.OnInspectorGUI();
+
+ // Draw the "Refresh Shaders" button
+ if (GUILayout.Button("Refresh Shaders"))
+ {
+ foreach (var t in targets)
+ {
+ var handler = (MaterialPipelineHandler)t;
+ handler.SetPipelineShaders();
+ }
+ }
+ }
+ }
+#endif
+}
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/MaterialPipelineHandler.cs.meta b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/MaterialPipelineHandler.cs.meta
new file mode 100644
index 0000000..3117421
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Scripts/MaterialPipelineHandler.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6772a216ed6f29c42abef904c7d6940d
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Unity.XR.Hands.Samples.VisualizerSample.asmdef b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Unity.XR.Hands.Samples.VisualizerSample.asmdef
new file mode 100644
index 0000000..a0cf316
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Unity.XR.Hands.Samples.VisualizerSample.asmdef
@@ -0,0 +1,18 @@
+{
+ "name": "Unity.XR.Hands.Samples.VisualizerSample",
+ "rootNamespace": "",
+ "references": [
+ "GUID:75469ad4d38634e559750d17036d5f7c",
+ "GUID:dc960734dc080426fa6612f1c5fe95f3",
+ "GUID:ce522b6ed64c8be4c989a1d26d0e3275"
+ ],
+ "includePlatforms": [],
+ "excludePlatforms": [],
+ "allowUnsafeCode": false,
+ "overrideReferences": false,
+ "precompiledReferences": [],
+ "autoReferenced": true,
+ "defineConstraints": [],
+ "versionDefines": [],
+ "noEngineReferences": false
+} \ No newline at end of file
diff --git a/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Unity.XR.Hands.Samples.VisualizerSample.asmdef.meta b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Unity.XR.Hands.Samples.VisualizerSample.asmdef.meta
new file mode 100644
index 0000000..34e2aff
--- /dev/null
+++ b/Assets/Samples/XR Hands/1.6.0/HandVisualizer/Unity.XR.Hands.Samples.VisualizerSample.asmdef.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 60e576d96416ac94182fe26f63acf9ff
+AssemblyDefinitionImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant: