diff --git a/Runtime/Materials.meta b/Runtime/Materials.meta new file mode 100644 index 0000000000000000000000000000000000000000..a60af2ed4fcdd93630733a81148c6a6fe2937d3f --- /dev/null +++ b/Runtime/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 573d01463f1ad468bafd74041040eeb1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Materials/Blue.mat b/Runtime/Materials/Blue.mat new file mode 100644 index 0000000000000000000000000000000000000000..2adba28e66c05344aabaf1619867696c3eaff2dc --- /dev/null +++ b/Runtime/Materials/Blue.mat @@ -0,0 +1,83 @@ +%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: Blue + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _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} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0, g: 0, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Runtime/Materials/Blue.mat.meta b/Runtime/Materials/Blue.mat.meta new file mode 100644 index 0000000000000000000000000000000000000000..97d300928fb27f31d7e4067dca83b7ed96d0da7f --- /dev/null +++ b/Runtime/Materials/Blue.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9fd9c0bd2f4f1438888297d0668f871b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Materials/Green.mat b/Runtime/Materials/Green.mat new file mode 100644 index 0000000000000000000000000000000000000000..90370803fac0862cc40276fcf9e2c848246306c9 --- /dev/null +++ b/Runtime/Materials/Green.mat @@ -0,0 +1,83 @@ +%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_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _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} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 0, g: 1, b: 0, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Runtime/Materials/Green.mat.meta b/Runtime/Materials/Green.mat.meta new file mode 100644 index 0000000000000000000000000000000000000000..761238254095a9327704f572be25fa5907611aac --- /dev/null +++ b/Runtime/Materials/Green.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: de76e3ad692ba4492aaca3dd54e65f04 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Materials/Red.mat b/Runtime/Materials/Red.mat new file mode 100644 index 0000000000000000000000000000000000000000..18e55761dea05695f673b870d8f56759064cd288 --- /dev/null +++ b/Runtime/Materials/Red.mat @@ -0,0 +1,83 @@ +%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_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _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} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 0, b: 0, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Runtime/Materials/Red.mat.meta b/Runtime/Materials/Red.mat.meta new file mode 100644 index 0000000000000000000000000000000000000000..166e41da0cdb06fe43159e01392781b80a7f1b2e --- /dev/null +++ b/Runtime/Materials/Red.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9d815ae4d5a7b46ae99e4e5ed084d3a8 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Resources.meta b/Runtime/Resources.meta new file mode 100644 index 0000000000000000000000000000000000000000..b3b6637e32834bb0eecb353ea7f452024a61c686 --- /dev/null +++ b/Runtime/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: edac3a3bd280a43d885c4cbb4296dc8d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Resources/ARFImageTrackingPrefab.prefab b/Runtime/Resources/ARFImageTrackingPrefab.prefab new file mode 100644 index 0000000000000000000000000000000000000000..182f3b473e688c334de9dd72f9d0270807b9b720 --- /dev/null +++ b/Runtime/Resources/ARFImageTrackingPrefab.prefab @@ -0,0 +1,435 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &760227130947233616 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5628977508733984536} + - component: {fileID: 1464890553281028111} + - component: {fileID: 6389761481980281444} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5628977508733984536 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 760227130947233616} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.05, y: 0.05, z: 0.05} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6911754431728604849} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1464890553281028111 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 760227130947233616} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &6389761481980281444 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 760227130947233616} + 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!1 &6911754431728604848 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6911754431728604849} + m_Layer: 0 + m_Name: ARFImageTrackingPrefab + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6911754431728604849 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6911754431728604848} + 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: 6911754432812775763} + - {fileID: 6911754433267149346} + - {fileID: 6911754433204531549} + - {fileID: 5628977508733984536} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6911754432812775762 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6911754432812775763} + - component: {fileID: 6911754432812775758} + - component: {fileID: 6911754432812775757} + - component: {fileID: 6911754432812775756} + m_Layer: 0 + m_Name: Z + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6911754432812775763 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6911754432812775762} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.0701} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.11557999} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6911754431728604849} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &6911754432812775758 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6911754432812775762} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &6911754432812775757 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6911754432812775762} + 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: 9fd9c0bd2f4f1438888297d0668f871b, 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!65 &6911754432812775756 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6911754432812775762} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!1 &6911754433204531548 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6911754433204531549} + - component: {fileID: 6911754433204531544} + - component: {fileID: 6911754433204531551} + - component: {fileID: 6911754433204531550} + m_Layer: 0 + m_Name: Y + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6911754433204531549 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6911754433204531548} + serializedVersion: 2 + m_LocalRotation: {x: -0.5, y: -0.5, z: -0.5, w: 0.5} + m_LocalPosition: {x: 0, y: 0.0525, z: 0.0033} + m_LocalScale: {x: 0.0100000035, y: 0.01, z: 0.11558006} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6911754431728604849} + m_LocalEulerAnglesHint: {x: -90, y: -90.00001, z: 0} +--- !u!33 &6911754433204531544 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6911754433204531548} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &6911754433204531551 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6911754433204531548} + 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: de76e3ad692ba4492aaca3dd54e65f04, 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!65 &6911754433204531550 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6911754433204531548} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!1 &6911754433267149345 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6911754433267149346} + - component: {fileID: 6911754433267149341} + - component: {fileID: 6911754433267149340} + - component: {fileID: 6911754433267149347} + m_Layer: 0 + m_Name: X + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6911754433267149346 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6911754433267149345} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0.0528, y: 0, z: 0.0033} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.11558} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6911754431728604849} + m_LocalEulerAnglesHint: {x: 0, y: -90, z: 0} +--- !u!33 &6911754433267149341 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6911754433267149345} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &6911754433267149340 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6911754433267149345} + 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: 9d815ae4d5a7b46ae99e4e5ed084d3a8, 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!65 &6911754433267149347 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6911754433267149345} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} diff --git a/Runtime/Resources/ARFImageTrackingPrefab.prefab.meta b/Runtime/Resources/ARFImageTrackingPrefab.prefab.meta new file mode 100644 index 0000000000000000000000000000000000000000..f1d093ed95b5c7706481f3e8df0c21c000245329 --- /dev/null +++ b/Runtime/Resources/ARFImageTrackingPrefab.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a69d3cd9f6cbe4a7c8b7efc56da6dce9 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Resources/ARFMeshTrackingPrefab.prefab b/Runtime/Resources/ARFMeshTrackingPrefab.prefab new file mode 100644 index 0000000000000000000000000000000000000000..6114fbe99651001e1220c8605cba10483f7e2823 --- /dev/null +++ b/Runtime/Resources/ARFMeshTrackingPrefab.prefab @@ -0,0 +1,435 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &760227130947233616 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5628977508733984536} + - component: {fileID: 1464890553281028111} + - component: {fileID: 6389761481980281444} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5628977508733984536 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 760227130947233616} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.05, y: 0.05, z: 0.05} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6911754431728604849} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1464890553281028111 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 760227130947233616} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &6389761481980281444 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 760227130947233616} + 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!1 &6911754431728604848 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6911754431728604849} + m_Layer: 0 + m_Name: ARFMeshTrackingPrefab + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6911754431728604849 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6911754431728604848} + 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: 6911754432812775763} + - {fileID: 6911754433267149346} + - {fileID: 6911754433204531549} + - {fileID: 5628977508733984536} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6911754432812775762 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6911754432812775763} + - component: {fileID: 6911754432812775758} + - component: {fileID: 6911754432812775757} + - component: {fileID: 6911754432812775756} + m_Layer: 0 + m_Name: Z + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6911754432812775763 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6911754432812775762} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.0701} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.11557999} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6911754431728604849} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &6911754432812775758 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6911754432812775762} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &6911754432812775757 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6911754432812775762} + 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: 9fd9c0bd2f4f1438888297d0668f871b, 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!65 &6911754432812775756 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6911754432812775762} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!1 &6911754433204531548 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6911754433204531549} + - component: {fileID: 6911754433204531544} + - component: {fileID: 6911754433204531551} + - component: {fileID: 6911754433204531550} + m_Layer: 0 + m_Name: Y + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6911754433204531549 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6911754433204531548} + serializedVersion: 2 + m_LocalRotation: {x: -0.5, y: -0.5, z: -0.5, w: 0.5} + m_LocalPosition: {x: 0, y: 0.0525, z: 0.0033} + m_LocalScale: {x: 0.0100000035, y: 0.01, z: 0.11558006} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6911754431728604849} + m_LocalEulerAnglesHint: {x: -90, y: -90.00001, z: 0} +--- !u!33 &6911754433204531544 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6911754433204531548} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &6911754433204531551 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6911754433204531548} + 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: de76e3ad692ba4492aaca3dd54e65f04, 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!65 &6911754433204531550 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6911754433204531548} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!1 &6911754433267149345 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6911754433267149346} + - component: {fileID: 6911754433267149341} + - component: {fileID: 6911754433267149340} + - component: {fileID: 6911754433267149347} + m_Layer: 0 + m_Name: X + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6911754433267149346 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6911754433267149345} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0.0528, y: 0, z: 0.0033} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.11558} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6911754431728604849} + m_LocalEulerAnglesHint: {x: 0, y: -90, z: 0} +--- !u!33 &6911754433267149341 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6911754433267149345} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &6911754433267149340 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6911754433267149345} + 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: 9d815ae4d5a7b46ae99e4e5ed084d3a8, 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!65 &6911754433267149347 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6911754433267149345} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} diff --git a/Runtime/Resources/ARFMeshTrackingPrefab.prefab.meta b/Runtime/Resources/ARFMeshTrackingPrefab.prefab.meta new file mode 100644 index 0000000000000000000000000000000000000000..f0e4eeaea6c31f65454512b329e8ca26e2a6e04c --- /dev/null +++ b/Runtime/Resources/ARFMeshTrackingPrefab.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d9c86a0dba0134e8b8cdc67291dac135 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Resources/ARFObjectLibrary.asset b/Runtime/Resources/ARFObjectLibrary.asset new file mode 100644 index 0000000000000000000000000000000000000000..a8b55ce126925a9d1663fa61448b810cf38ece10 --- /dev/null +++ b/Runtime/Resources/ARFObjectLibrary.asset @@ -0,0 +1,17 @@ +%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: 85f3b71a771f04aef8057fae3964fd78, type: 3} + m_Name: ARFObjectLibrary + m_EditorClassIdentifier: + m_GuidLow: 5086418788140608333 + m_GuidHigh: 13571590907545936521 + m_ReferenceObjects: [] diff --git a/Runtime/Resources/ARFObjectLibrary.asset.meta b/Runtime/Resources/ARFObjectLibrary.asset.meta new file mode 100644 index 0000000000000000000000000000000000000000..859d8131cdd241b21b4dd1a470972060fdd23743 --- /dev/null +++ b/Runtime/Resources/ARFObjectLibrary.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 487aef79f5a474b3aa285c3d2b2d29f3 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Scripts/WorldAnalysisARFoundation.cs b/Runtime/Scripts/WorldAnalysisARFoundation.cs index 470bc318803ea5ab9dd408e0e9a99c2631170c7e..bd82b85fc9caf3da00099d0a4ead5456560a54a1 100644 --- a/Runtime/Scripts/WorldAnalysisARFoundation.cs +++ b/Runtime/Scripts/WorldAnalysisARFoundation.cs @@ -26,9 +26,9 @@ public class WorldAnalysisARFoundation : MonoBehaviour, WorldAnalysisInterface private Dictionary<Guid, ETSI.ARF.OpenAPI.WorldAnalysis.Pose> m_computedPoses; /// <summary> - /// Module Image + /// all trackable modules /// </summary> - private WorldAnalysisARFoundationModuleImage m_imageTrackableModule; + private List<WorldAnalysisARFoundationModule> m_trackableModules; /// <summary> /// World Storage Info object @@ -72,8 +72,18 @@ public class WorldAnalysisARFoundation : MonoBehaviour, WorldAnalysisInterface m_relocalizationInformations = new Dictionary<Guid, ETSI.ARF.OpenAPI.WorldStorage.RelocalizationInformation>(); m_computedPoses = new Dictionary<Guid, ETSI.ARF.OpenAPI.WorldAnalysis.Pose>(); m_subscriptionsPoses = new Dictionary<Guid, SubscriptionInfo>(); - m_imageTrackableModule = new WorldAnalysisARFoundationModuleImage(); - m_imageTrackableModule.Initialize(); + + m_trackableModules = new List<WorldAnalysisARFoundationModule>(); + WorldAnalysisARFoundationModuleImage imageModule = new WorldAnalysisARFoundationModuleImage(); + m_trackableModules.Add(imageModule); + #if UNITY_IOS + WorldAnalysisARFoundationModuleMesh meshModule = new WorldAnalysisARFoundationModuleMesh(); + m_trackableModules.Add(meshModule); + #endif + foreach(WorldAnalysisARFoundationModule module in m_trackableModules) + { + module.Initialize(); + } m_storageInfo = FindObjectOfType<WorldStorageInfo>(); m_worldStorageServer = m_storageInfo.worldStorageServer; @@ -136,7 +146,7 @@ public class WorldAnalysisARFoundation : MonoBehaviour, WorldAnalysisInterface //We fill in the confidence level lists. foreach (KeyValuePair<Guid, RelocObjects> relocObject in temp) { - WorldAnalysisARFoundationModule.TrackableInfo inf = m_imageTrackableModule.GetPoseTrackable(relocObject.Value.Trackable.Name); // for now only image module + WorldAnalysisARFoundationModule.TrackableInfo inf = GetPoseTrackableUUID(relocObject.Value.Trackable.UUID); // for now only image module if (inf != null) { if (inf.confidence == 100) @@ -179,7 +189,7 @@ public class WorldAnalysisARFoundation : MonoBehaviour, WorldAnalysisInterface if (bestTrackableCandidateID != Guid.Empty) { /// We have found the best trackable - WorldAnalysisARFoundationModule.TrackableInfo info = m_imageTrackableModule.GetPoseTrackable(temp[bestTrackableCandidateID].Trackable.Name); + WorldAnalysisARFoundationModule.TrackableInfo info = GetPoseTrackableUUID(temp[bestTrackableCandidateID].Trackable.UUID); if (info == null) { // For now we just ignore it : we could also send not tracked todo @@ -294,7 +304,6 @@ public class WorldAnalysisARFoundation : MonoBehaviour, WorldAnalysisInterface return PoseEstimationResult.OK; } - public PoseEstimationResult[] GetLastPoses(string token, Guid[] uuids, Mode_WorldAnalysis[] modes, out ETSI.ARF.OpenAPI.WorldAnalysis.Pose[] poses) { if (uuids.Length != modes.Length) @@ -315,7 +324,6 @@ public class WorldAnalysisARFoundation : MonoBehaviour, WorldAnalysisInterface return resul; } - public InformationSubscriptionResult SubscribeToPose(string token, Guid uuid, Mode_WorldAnalysis mode, PoseCallback callback, ref int validity, out Guid subscriptionUUID) { RelocalizationInformation relocInfo = null; @@ -469,19 +477,9 @@ public class WorldAnalysisARFoundation : MonoBehaviour, WorldAnalysisInterface { List<ETSI.ARF.OpenAPI.WorldAnalysis.Capability> capabilitiesList = new List<ETSI.ARF.OpenAPI.WorldAnalysis.Capability>(); - /// Image Tracking - if (m_imageTrackableModule != null) + foreach(WorldAnalysisARFoundationModule module in m_trackableModules) { - ETSI.ARF.OpenAPI.WorldAnalysis.Capability capabilityImage = new ETSI.ARF.OpenAPI.WorldAnalysis.Capability(); - capabilityImage.TrackableType = ETSI.ARF.OpenAPI.WorldAnalysis.TrackableType.IMAGE_MARKER; - ETSI.ARF.OpenAPI.WorldAnalysis.EncodingInformationStructure encodingInformation = new ETSI.ARF.OpenAPI.WorldAnalysis.EncodingInformationStructure(); - encodingInformation.DataFormat = ETSI.ARF.OpenAPI.WorldAnalysis.EncodingInformationStructureDataFormat.OTHER; - encodingInformation.Version = "1.01"; - capabilityImage.EncodingInformation = encodingInformation; - capabilityImage.Framerate = 30; // Not particularly specified on ARKit and ARCore - capabilityImage.Latency = 0; // Not particularly specified on ARKit and ARCore - capabilityImage.Accuracy = 1; // Not particularly specified on ARKit and ARCore - capabilitiesList.Add(capabilityImage); + capabilitiesList.Add(module.GetSupportedCapability()); } capabilities = capabilitiesList.ToArray(); @@ -501,6 +499,25 @@ public class WorldAnalysisARFoundation : MonoBehaviour, WorldAnalysisInterface #region Helper + /// <summary> + /// Find in all modules the tracking info of a trackable with its name + /// </summary> + /// <param name="uuid"></param> + /// <returns>Tracking info if found else null</returns> + private WorldAnalysisARFoundationModule.TrackableInfo GetPoseTrackableUUID(Guid uuid) + { + foreach (WorldAnalysisARFoundationModule module in m_trackableModules) + { + ///Improve latter : not good to check all modules + WorldAnalysisARFoundationModule.TrackableInfo info = module.GetPoseTrackable(uuid); + if (info !=null) + { + return info ; + } + } + return null ; + } + /// <summary> /// To select the best trackable /// </summary> @@ -510,7 +527,7 @@ public class WorldAnalysisARFoundation : MonoBehaviour, WorldAnalysisInterface /// <returns></returns> private Guid SelectTrackableWithTypeAndDistance(List<RelocObjects> candidates, List<KeyValuePair<string, Guid>> typesSortedList, UnityEngine.Vector3 cameraTransformPos) { - float bestDistance = 100.0f; //valeur par défaut = grande distance (à changer) + float bestDistance = 100.0f; //valeur par d�faut = grande distance (� changer) Guid selectedTrackableUUID = Guid.Empty; //if only one trackable is candidate @@ -553,7 +570,7 @@ public class WorldAnalysisARFoundation : MonoBehaviour, WorldAnalysisInterface // select the corresponding candidate from the list of candidates if (tmp.Trackable.UUID == distanceCandidate) { - WorldAnalysisARFoundationModule.TrackableInfo inf = m_imageTrackableModule.GetPoseTrackable(tmp.Trackable.Name); + WorldAnalysisARFoundationModule.TrackableInfo inf = GetPoseTrackableUUID(tmp.Trackable.UUID); float distance = UnityEngine.Vector3.Distance(cameraTransformPos, inf.position); @@ -578,10 +595,9 @@ public class WorldAnalysisARFoundation : MonoBehaviour, WorldAnalysisInterface bool hasSupport = false; foreach (RelocObjects relocObj in relocInfo.RelocObjects) { - /// We try to find a supported trackable - if (relocObj.Trackable.TrackableType == ETSI.ARF.OpenAPI.WorldStorage.TrackableType.IMAGE_MARKER) + foreach(WorldAnalysisARFoundationModule module in m_trackableModules) { - hasSupport |= m_imageTrackableModule.AddTrackable(relocObj.Trackable); + hasSupport |= module.AddTrackable(relocObj.Trackable); } } diff --git a/Runtime/Scripts/WorldAnalysisARFoundationModule.cs b/Runtime/Scripts/WorldAnalysisARFoundationModule.cs index 3951fcc63ee5c09b76bcac3c421547b714c61dd2..4b9d7451782fd9382d271ed0f9280a20c4c8b260 100644 --- a/Runtime/Scripts/WorldAnalysisARFoundationModule.cs +++ b/Runtime/Scripts/WorldAnalysisARFoundationModule.cs @@ -1,4 +1,5 @@ using UnityEngine; +using System; public interface WorldAnalysisARFoundationModule { @@ -31,7 +32,12 @@ public interface WorldAnalysisARFoundationModule /// <summary> /// /// </summary> - /// <param name="name"></param> - public TrackableInfo GetPoseTrackable(string name); + /// <param name="uuid"></param> + public TrackableInfo GetPoseTrackable(Guid uuid); + + /// <summary> + /// Initialize capability object with the features of the + /// </summary> + public ETSI.ARF.OpenAPI.WorldAnalysis.Capability GetSupportedCapability(); } \ No newline at end of file diff --git a/Runtime/Scripts/WorldAnalysisARFoundationModuleImage.cs b/Runtime/Scripts/WorldAnalysisARFoundationModuleImage.cs index e7da9b28494ef549c2aec30f87419464b43beef3..4908f8b409b3c041ef348cc11d451252d155a8ae 100644 --- a/Runtime/Scripts/WorldAnalysisARFoundationModuleImage.cs +++ b/Runtime/Scripts/WorldAnalysisARFoundationModuleImage.cs @@ -23,9 +23,9 @@ public class WorldAnalysisARFoundationModuleImage : WorldAnalysisARFoundationMod /// </summary> private Dictionary<string,TrackableInfo> m_trackedImages = new Dictionary<string,TrackableInfo>(); /// <summary> - /// Default Constructor + /// Link between trackable name and uuid /// </summary> - public WorldAnalysisARFoundationModuleImage() { } + private Dictionary<Guid, string> m_uuidToName = new Dictionary<Guid, string >(); /// <summary> /// Initialize image tracking module @@ -40,20 +40,20 @@ public class WorldAnalysisARFoundationModuleImage : WorldAnalysisARFoundationMod } /// <summary> - /// found : pourrait aussi tracké pas tracké, on pourrait aussi ajouter la cofiance si dispo dans l'API + /// found /// </summary> - /// <param name="name">name of the image trackable</param> - - public TrackableInfo GetPoseTrackable(string name) + /// <param name="uuid">name of the image trackable</param> + public TrackableInfo GetPoseTrackable(Guid uuid) { - if (m_trackedImages.ContainsKey(name)) - { - return m_trackedImages[name]; - } - else + if (m_uuidToName.ContainsKey(uuid)) { - return null; + string name = m_uuidToName[uuid]; + if (m_trackedImages.ContainsKey(name)) + { + return m_trackedImages[name]; + } } + return null; } /// <summary> @@ -68,8 +68,29 @@ public class WorldAnalysisARFoundationModuleImage : WorldAnalysisARFoundationMod { return false; } - AddImageToLibrary(trackable.Name, (float)trackable.TrackableSize[0]); - return true; + bool resul = AddImageToLibrary(trackable.Name, (float)trackable.TrackableSize[0]); + if (resul) + { + m_uuidToName[trackable.UUID] = trackable.Name; + } + return resul; + } + + /// <summary> + /// Initialize capability object with image tracking + /// </summary> + public ETSI.ARF.OpenAPI.WorldAnalysis.Capability GetSupportedCapability() + { + ETSI.ARF.OpenAPI.WorldAnalysis.Capability capabilityImage = new ETSI.ARF.OpenAPI.WorldAnalysis.Capability(); + capabilityImage.TrackableType = ETSI.ARF.OpenAPI.WorldAnalysis.TrackableType.IMAGE_MARKER; + ETSI.ARF.OpenAPI.WorldAnalysis.EncodingInformationStructure encodingInformation = new ETSI.ARF.OpenAPI.WorldAnalysis.EncodingInformationStructure(); + encodingInformation.DataFormat = ETSI.ARF.OpenAPI.WorldAnalysis.EncodingInformationStructureDataFormat.OTHER; + encodingInformation.Version = "1.01"; + capabilityImage.EncodingInformation = encodingInformation; + capabilityImage.Framerate = 30; // Not particularly specified on ARKit and ARCore + capabilityImage.Latency = 0; // Not particularly specified on ARKit and ARCore + capabilityImage.Accuracy = 1; // Not particularly specified on ARKit and ARCore + return capabilityImage; } /// <summary> diff --git a/Runtime/Scripts/WorldAnalysisARFoundationModuleMesh.cs b/Runtime/Scripts/WorldAnalysisARFoundationModuleMesh.cs new file mode 100644 index 0000000000000000000000000000000000000000..77d841a65508eee49dcd691be6fba9fdd15ad5ca --- /dev/null +++ b/Runtime/Scripts/WorldAnalysisARFoundationModuleMesh.cs @@ -0,0 +1,205 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.XR.ARFoundation; +using UnityEngine.XR.ARSubsystems; +using System.IO; +using Unity.XR.CoreUtils; +using static WorldAnalysisARFoundationModule; +using ETSI.ARF.OpenAPI.WorldStorage; + +public class WorldAnalysisARFoundationModuleMesh : WorldAnalysisARFoundationModule +{ + /// <summary> + /// ARFoundation Image tracking management + /// </summary> + private ARTrackedObjectManager m_trackedObjectManager; + /// <summary> + /// Name of all meshes that have been added to the library + /// </summary> + private List<string> m_trackedMeshesInLibrary; + /// <summary> + /// List of tracked meshses with tracking infos + /// </summary> + private Dictionary<string,TrackableInfo> m_trackedMeshes = new Dictionary<string,TrackableInfo>(); + /// <summary> + /// Link between trackable name and uuid + /// </summary> + private Dictionary<Guid, string> m_uuidToName = new Dictionary<Guid, string >(); + /// <summary> + /// Bundle with all the XRReferenceObjectEntry + /// </summary> + private XRReferenceObjectEntry [] m_entries ; + + /// <summary> + /// Initialize image tracking module + /// </summary> + public void Initialize() + { + XROrigin origin = UnityEngine.Object.FindAnyObjectByType<XROrigin>(); + m_trackedObjectManager = origin.gameObject.AddComponent<ARTrackedObjectManager>(); + XRReferenceObjectLibrary library = (XRReferenceObjectLibrary) Resources.Load("ARFObjectLibrary"); + m_trackedObjectManager.referenceLibrary = library ; + m_trackedMeshesInLibrary = new List<string>(); + m_trackedObjectManager.trackedObjectPrefab = (GameObject)Resources.Load("ARFMeshTrackingPrefab"); + m_trackedObjectManager.trackedObjectsChanged += OnTrackedMeshesChanged; + m_trackedObjectManager.enabled = true ; // when instantiated without library : it is disabled + m_entries = null; + + #if UNITY_EDITOR + string bundlePath = Application.streamingAssetsPath + "/arfmeshes" ; + #else + string bundlePath = Application.persistentDataPath + "/arfmeshes" ; + #endif + if (System.IO.File.Exists(bundlePath)) + { + AssetBundle bu = AssetBundle.LoadFromFile(bundlePath); + m_entries = bu.LoadAllAssets<XRReferenceObjectEntry>() ; + } + } + + /// <summary> + /// found + /// </summary> + /// <param name="uuid">name of the mesh trackable</param> + public TrackableInfo GetPoseTrackable(Guid uuid) + { + if (m_uuidToName.ContainsKey(uuid)) + { + string name = m_uuidToName[uuid]; + if (m_trackedMeshes.ContainsKey(name)) + { + return m_trackedMeshes[name]; + } + } + return null; + } + + /// <summary> + /// Add a trackable : need to be an image + /// </summary> + /// <param name="trackable">Image trackable</param> + /// <returns>Supported or not</returns> + public bool AddTrackable(Trackable trackable) + { + /// Here : we don't check if the trackable is allready added, AddMeshToLibrary does it + if (trackable.TrackableType != ETSI.ARF.OpenAPI.WorldStorage.TrackableType.MESH) + { + return false; + } + bool resul = AddMeshToLibrary(trackable.Name) ;// (float)trackable.TrackableSize[0]); + if (resul) + { + m_uuidToName[trackable.UUID] = trackable.Name; + } + return true; + } + + /// <summary> + /// Initialize capability object with image tracking + /// </summary> + public ETSI.ARF.OpenAPI.WorldAnalysis.Capability GetSupportedCapability() + { + ETSI.ARF.OpenAPI.WorldAnalysis.Capability capabilityMesh = new ETSI.ARF.OpenAPI.WorldAnalysis.Capability(); + capabilityMesh.TrackableType = ETSI.ARF.OpenAPI.WorldAnalysis.TrackableType.MESH; + ETSI.ARF.OpenAPI.WorldAnalysis.EncodingInformationStructure encodingInformation = new ETSI.ARF.OpenAPI.WorldAnalysis.EncodingInformationStructure(); + encodingInformation.DataFormat = ETSI.ARF.OpenAPI.WorldAnalysis.EncodingInformationStructureDataFormat.ARKIT; + encodingInformation.Version = "1.01"; + capabilityMesh.EncodingInformation = encodingInformation; + capabilityMesh.Framerate = 30; // Not particularly specified on ARKit + capabilityMesh.Latency = 0; // Not particularly specified on ARKit + capabilityMesh.Accuracy = 1; // Not particularly specified on ARKit + return capabilityMesh ; + } + + /// <summary> + /// Event manager for when a mesh is tracked + /// </summary> + /// <param name="eventArgs">the event</param> + private void OnTrackedMeshesChanged(ARTrackedObjectsChangedEventArgs eventArgs) + { + foreach (var trackedMesh in eventArgs.updated) + { + Vector3 position = trackedMesh.transform.position; + Quaternion rotation = trackedMesh.transform.rotation; + + TrackableInfo info = new TrackableInfo(); + info.name = trackedMesh.referenceObject.name; + if (trackedMesh.trackingState == TrackingState.Tracking) + { + info.state = ETSI.ARF.OpenAPI.WorldAnalysis.PoseEstimationState.OK; + info.confidence = 100; + } + else if (trackedMesh.trackingState == TrackingState.Limited) + { + info.state = ETSI.ARF.OpenAPI.WorldAnalysis.PoseEstimationState.OK; + info.confidence = 50; + } + else + { + info.state = ETSI.ARF.OpenAPI.WorldAnalysis.PoseEstimationState.FAILURE; //ADD NOT_TRACKED ? + info.confidence = 0; + } + info.timeStamp = unchecked((int)DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()); + info.position = position; + info.rotation = rotation; + info.trackableType = ETSI.ARF.OpenAPI.WorldAnalysis.TrackableType.MESH; + m_trackedMeshes[info.name] = info; + } + } + + /// <summary> + /// Add a new mesh to the arfoundation library + /// </summary> + /// <param name="fileName">file name</param> + /// <returns></returns> + protected bool AddMeshToLibrary(string fileName) + { + // check if mesh is in the library + if (m_trackedMeshesInLibrary.Contains(fileName)) + { + Debug.Log("Mesh allready added to library"); + return true; + } + + if (m_entries == null) + { + Debug.LogWarning("Try to Track Mesh but ARF Bundle with meshes is null"); + return false ; + } + + XRReferenceObjectEntry toAdd = null ; + foreach(XRReferenceObjectEntry entry in m_entries) + { + if (entry.name == fileName) + { + toAdd = entry ; + } + } + if (toAdd == null) + { + Debug.LogWarning("Try to Track Mesh " + fileName + " but XRReferenceObjectEntry not found in bundle"); + return false; + } + + AddARObjectEntryToLibrary(toAdd , fileName); + return true; + } + + /// <summary> + /// Add a Mesh + /// </summary> + private async void AddARObjectEntryToLibrary(XRReferenceObjectEntry arobject , string objectName) + { + while (ARSession.state == ARSessionState.CheckingAvailability || ARSession.state == ARSessionState.None) + { + await System.Threading.Tasks.Task.Delay(100); + } + + XRReferenceObject referenceObject = new XRReferenceObject(objectName); + referenceObject.AddEntry(arobject); + m_trackedObjectManager.referenceLibrary.Add(referenceObject); + + if (!m_trackedObjectManager.enabled) m_trackedObjectManager.enabled = true; // necessary because when object manger is instantiated without library it is disabled + } +} \ No newline at end of file diff --git a/Runtime/Scripts/WorldAnalysisARFoundationModuleMesh.cs.meta b/Runtime/Scripts/WorldAnalysisARFoundationModuleMesh.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..6b5b5db14b075698b923ff33aef50b98b0291fe9 --- /dev/null +++ b/Runtime/Scripts/WorldAnalysisARFoundationModuleMesh.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 19f8755167c0547cab884eab1fc44dc1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: