diff --git a/Editor/Aisu.SIM1.Face.Editor.dll b/Editor/Aisu.SIM1.Face.Editor.dll index 4ffd7c9..2362395 100644 Binary files a/Editor/Aisu.SIM1.Face.Editor.dll and b/Editor/Aisu.SIM1.Face.Editor.dll differ diff --git a/Runtime/Aisu.SIM1.Face.Runtime.dll b/Runtime/Aisu.SIM1.Face.Runtime.dll index b44c5d5..6374e8c 100644 Binary files a/Runtime/Aisu.SIM1.Face.Runtime.dll and b/Runtime/Aisu.SIM1.Face.Runtime.dll differ diff --git a/Runtime/Aisu.SIM1.Face.Runtime.dll.meta b/Runtime/Aisu.SIM1.Face.Runtime.dll.meta index 9266a20..c5325ec 100644 --- a/Runtime/Aisu.SIM1.Face.Runtime.dll.meta +++ b/Runtime/Aisu.SIM1.Face.Runtime.dll.meta @@ -11,7 +11,7 @@ PluginImporter: enabled: 1 settings: {} Editor: - enabled: 0 + enabled: 1 settings: DefaultValueInitialized: true WindowsStoreApps: diff --git a/Samples~.meta b/Samples~.meta new file mode 100644 index 0000000..e6bbbfa --- /dev/null +++ b/Samples~.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 98eb2c19172144b47b7bc037fc6f5923 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/Face Detection Demo.meta b/Samples~/Face Detection Demo.meta new file mode 100644 index 0000000..bafb943 --- /dev/null +++ b/Samples~/Face Detection Demo.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3f0e42a6f3e84ef2b9f0d2a01f5d7c31 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/Face Detection Demo/Aisu.SIM1.Face.Samples.FaceDetectionDemo.asmdef.meta b/Samples~/Face Detection Demo/Aisu.SIM1.Face.Samples.FaceDetectionDemo.asmdef.meta new file mode 100644 index 0000000..117b429 --- /dev/null +++ b/Samples~/Face Detection Demo/Aisu.SIM1.Face.Samples.FaceDetectionDemo.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 44fd32577c8a40df9df37c2ef1e3d003 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/Face Detection Demo/README.md b/Samples~/Face Detection Demo/README.md new file mode 100644 index 0000000..8f5b9ba --- /dev/null +++ b/Samples~/Face Detection Demo/README.md @@ -0,0 +1,57 @@ +# SI-M1 Face Detection Demo + +该目录是 `SI-M1 Face Demo` Sample 内的人脸检测最小测试场景,用于验证 USB 摄像头、串口连接、录入、识别和用户数据存储。 + +## 场景 + +通过 Package Manager 导入 `SI-M1 Face Demo`,或使用 `AISU/SI-M1 Face SDK/Generate Demo Scene` 后,场景会位于: + +```text +Assets/Samples/Face Detection Demo/Scenes/FaceDetectionDemo.unity +``` + +打开该场景后运行,`FaceDetectionDemoBootstrap` 会自动生成单页 UGUI。 + +## MVP 功能 + +- 使用 `WebCamTexture` 枚举摄像头。 +- 选择摄像头并显示实时预览。 +- 枚举串口,枚举失败时可手动输入串口名。 +- 连接 / 断开 SI-M1 模组。 +- 输入用户名并录入人脸。 +- 检测人脸并显示识别结果。 +- 刷新人脸数据列表。 +- 删除指定用户。 +- 下方日志窗口记录所有操作,可上下拖动查看。 + +## 授权文件 + +真实串口运行需要授权文件: + +```text +Assets/StreamingAssets/si-m1_face.dat +``` + +Mock 模式不需要授权,但本 MVP 默认用于真实设备测试,不提供 Mock 开关。 + +## Android 注意事项 + +- 摄像头读取使用 Unity `WebCamTexture`。 +- Android 外接 USB 摄像头是否能被 `WebCamTexture.devices` 枚举,取决于设备系统和摄像头驱动。 +- 如果 APK 中无法枚举或打开 USB 摄像头,需要接 Android UVC 原生插件。 +- 串口枚举使用 `SerialPort.GetPortNames()`;Android 设备上如果枚举不到串口,可在输入框手动填写实际串口路径。 + +## 测试顺序 + +1. 点击 `刷新摄像头`。 +2. 从下拉框选择 USB 摄像头。 +3. 点击 `打开摄像头`,确认预览画面正常。 +4. 点击 `刷新串口`,选择或手动输入串口。 +5. 点击 `连接模组`,等待 READY。 +6. 输入用户名,点击 `录入人脸`。 +7. 点击 `检测人脸`。 +8. 点击 `刷新用户列表`,确认用户数据已存储。 +9. 点击用户行的 `删除`,确认可删除用户。 + + + diff --git a/Samples~/Face Detection Demo/README.md.meta b/Samples~/Face Detection Demo/README.md.meta new file mode 100644 index 0000000..57e25d2 --- /dev/null +++ b/Samples~/Face Detection Demo/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 28af189cc75c46d3857843802ab27446 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/Face Detection Demo/Scenes.meta b/Samples~/Face Detection Demo/Scenes.meta new file mode 100644 index 0000000..def10d9 --- /dev/null +++ b/Samples~/Face Detection Demo/Scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3b3b5204665d4d94be3e40f59ce773c2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/Face Detection Demo/Scenes/FaceDetectionDemo.unity b/Samples~/Face Detection Demo/Scenes/FaceDetectionDemo.unity new file mode 100644 index 0000000..0b64139 --- /dev/null +++ b/Samples~/Face Detection Demo/Scenes/FaceDetectionDemo.unity @@ -0,0 +1,162 @@ +%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: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 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_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !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 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &100000 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 100001} + - component: {fileID: 100002} + m_Layer: 0 + m_Name: FaceDetectionDemoBootstrap + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &100001 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 100000} + 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!114 &100002 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5a5af54f3c89457a8e08e47e0b46c1c1, type: 3} + m_Name: + m_EditorClassIdentifier: + + diff --git a/Samples~/Face Detection Demo/Scenes/FaceDetectionDemo.unity.meta b/Samples~/Face Detection Demo/Scenes/FaceDetectionDemo.unity.meta new file mode 100644 index 0000000..a00f748 --- /dev/null +++ b/Samples~/Face Detection Demo/Scenes/FaceDetectionDemo.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d5d10f2a28b74fd98aacbe5c80561894 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/Face Detection Demo/Scripts.meta b/Samples~/Face Detection Demo/Scripts.meta new file mode 100644 index 0000000..ec92018 --- /dev/null +++ b/Samples~/Face Detection Demo/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f7800e597b5f45d7a7da08b3f936a1f2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/Face Detection Demo/Scripts/FaceDetectionDemoBootstrap.cs.meta b/Samples~/Face Detection Demo/Scripts/FaceDetectionDemoBootstrap.cs.meta new file mode 100644 index 0000000..dbfd031 --- /dev/null +++ b/Samples~/Face Detection Demo/Scripts/FaceDetectionDemoBootstrap.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5a5af54f3c89457a8e08e47e0b46c1c1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/Face Detection Demo/Scripts/FaceDetectionDemoCamera.cs.meta b/Samples~/Face Detection Demo/Scripts/FaceDetectionDemoCamera.cs.meta new file mode 100644 index 0000000..19b09e6 --- /dev/null +++ b/Samples~/Face Detection Demo/Scripts/FaceDetectionDemoCamera.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1c3d5d5322f2496d9f9867220dfbc8ea +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/Face Detection Demo/Scripts/FaceDetectionDemoController.cs.meta b/Samples~/Face Detection Demo/Scripts/FaceDetectionDemoController.cs.meta new file mode 100644 index 0000000..9d0859a --- /dev/null +++ b/Samples~/Face Detection Demo/Scripts/FaceDetectionDemoController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5e34e58a5d9143f09af4602997294a2f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/Face Detection Demo/Scripts/FaceDetectionDemoLogger.cs.meta b/Samples~/Face Detection Demo/Scripts/FaceDetectionDemoLogger.cs.meta new file mode 100644 index 0000000..5677551 --- /dev/null +++ b/Samples~/Face Detection Demo/Scripts/FaceDetectionDemoLogger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 93c5f598b0a34ae490496363c31f03ab +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/Face Detection Demo/Scripts/FaceDetectionDemoUserList.cs.meta b/Samples~/Face Detection Demo/Scripts/FaceDetectionDemoUserList.cs.meta new file mode 100644 index 0000000..15a8152 --- /dev/null +++ b/Samples~/Face Detection Demo/Scripts/FaceDetectionDemoUserList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a64d11f829c74808af47ccb103389f36 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/SI-M1 Face Demo.meta b/Samples~/SI-M1 Face Demo.meta new file mode 100644 index 0000000..2e6b201 --- /dev/null +++ b/Samples~/SI-M1 Face Demo.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 34ad6ee935bce014d8614b88076050bd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/SI-M1 Face Demo/Aisu.SIM1.Face.Samples.asmdef.meta b/Samples~/SI-M1 Face Demo/Aisu.SIM1.Face.Samples.asmdef.meta new file mode 100644 index 0000000..11fed57 --- /dev/null +++ b/Samples~/SI-M1 Face Demo/Aisu.SIM1.Face.Samples.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9fa219c8c2a74b94a983c6d4a6a1d001 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/SI-M1 Face Demo/Editor.meta b/Samples~/SI-M1 Face Demo/Editor.meta new file mode 100644 index 0000000..c093473 --- /dev/null +++ b/Samples~/SI-M1 Face Demo/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4ac476647a08a364289fa596d310bf3a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/SI-M1 Face Demo/Editor/Aisu.SIM1.Face.Samples.Editor.asmdef.meta b/Samples~/SI-M1 Face Demo/Editor/Aisu.SIM1.Face.Samples.Editor.asmdef.meta new file mode 100644 index 0000000..2f6f188 --- /dev/null +++ b/Samples~/SI-M1 Face Demo/Editor/Aisu.SIM1.Face.Samples.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 73502db286784cc3ac4a9e71f06f1002 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/SI-M1 Face Demo/Editor/FaceModuleDemoSceneGenerator.cs.meta b/Samples~/SI-M1 Face Demo/Editor/FaceModuleDemoSceneGenerator.cs.meta new file mode 100644 index 0000000..2d70ed3 --- /dev/null +++ b/Samples~/SI-M1 Face Demo/Editor/FaceModuleDemoSceneGenerator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 230f42ee40b783c4784659a677f2fc59 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/SI-M1 Face Demo/Scenes.meta b/Samples~/SI-M1 Face Demo/Scenes.meta new file mode 100644 index 0000000..cf35b49 --- /dev/null +++ b/Samples~/SI-M1 Face Demo/Scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5e2eeeccfb35f134ba7a1a0b29dfb214 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/SI-M1 Face Demo/Scenes/FaceModuleDemo.unity b/Samples~/SI-M1 Face Demo/Scenes/FaceModuleDemo.unity new file mode 100644 index 0000000..464c8f4 --- /dev/null +++ b/Samples~/SI-M1 Face Demo/Scenes/FaceModuleDemo.unity @@ -0,0 +1,227 @@ +%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_IndirectSpecularColor: {r: 0.12731749, g: 0.13414757, b: 0.1210787, a: 1} + 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: 0} + m_LightingSettings: {fileID: 0} +--- !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!1 &240313580 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 240313582} + - component: {fileID: 240313581} + m_Layer: 0 + m_Name: FaceModuleManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &240313581 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 240313580} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1c1d09a652384f148b76655d1acdd2ea, type: 3} + m_Name: + m_EditorClassIdentifier: + m_config: + TransportMode: 0 + UseMockInEditor: 1 + PortName: COM3 + BaudRate: 115200 + ReadBufferSize: 4096 + UseEditorSerialDebugParameters: 1 + EditorPortName: COM3 + EditorBaudRate: 115200 + EditorReadBufferSize: 4096 + MockResponseDelayFrames: 1 + RawLogEnabled: 1 + m_settings: {fileID: 0} + m_openOnStart: 0 +--- !u!4 &240313582 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 240313580} + 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: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &948012342 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 948012344} + - component: {fileID: 948012343} + m_Layer: 0 + m_Name: FaceModuleDemoBootstrap + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &948012343 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 948012342} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9b9f4bf81dc7448f90bd6c85e9fe4519, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &948012344 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 948012342} + 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} diff --git a/Samples~/SI-M1 Face Demo/Scenes/FaceModuleDemo.unity.meta b/Samples~/SI-M1 Face Demo/Scenes/FaceModuleDemo.unity.meta new file mode 100644 index 0000000..0c3fe6c --- /dev/null +++ b/Samples~/SI-M1 Face Demo/Scenes/FaceModuleDemo.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 89768ad84552b5c4d8e5b584c216af96 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/SI-M1 Face Demo/Scripts.meta b/Samples~/SI-M1 Face Demo/Scripts.meta new file mode 100644 index 0000000..e202d26 --- /dev/null +++ b/Samples~/SI-M1 Face Demo/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e3a1a87e4b672fa4094e73f8b45ee1c0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/SI-M1 Face Demo/Scripts/Core.meta b/Samples~/SI-M1 Face Demo/Scripts/Core.meta new file mode 100644 index 0000000..d90a80a --- /dev/null +++ b/Samples~/SI-M1 Face Demo/Scripts/Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e8643660e200f554192fa67ef682dd1a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/SI-M1 Face Demo/Scripts/Core/FaceModuleKeyboardTester.cs.meta b/Samples~/SI-M1 Face Demo/Scripts/Core/FaceModuleKeyboardTester.cs.meta new file mode 100644 index 0000000..e89d890 --- /dev/null +++ b/Samples~/SI-M1 Face Demo/Scripts/Core/FaceModuleKeyboardTester.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3dd02cac73721224e87791793b4aeb56 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/SI-M1 Face Demo/UI.meta b/Samples~/SI-M1 Face Demo/UI.meta new file mode 100644 index 0000000..e2a505c --- /dev/null +++ b/Samples~/SI-M1 Face Demo/UI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2e1ab66bdb929164dbce2d25e3992716 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/SI-M1 Face Demo/UI/Common.meta b/Samples~/SI-M1 Face Demo/UI/Common.meta new file mode 100644 index 0000000..40482b0 --- /dev/null +++ b/Samples~/SI-M1 Face Demo/UI/Common.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f7382f0bef5512b428ee4431880a6b1b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/SI-M1 Face Demo/UI/Common/FaceModuleDemoBootstrap.cs.meta b/Samples~/SI-M1 Face Demo/UI/Common/FaceModuleDemoBootstrap.cs.meta new file mode 100644 index 0000000..69bafc5 --- /dev/null +++ b/Samples~/SI-M1 Face Demo/UI/Common/FaceModuleDemoBootstrap.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 55824872760a6554ba347ca37e222eff +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/SI-M1 Face Demo/UI/Common/FaceModuleUiCommon.cs.meta b/Samples~/SI-M1 Face Demo/UI/Common/FaceModuleUiCommon.cs.meta new file mode 100644 index 0000000..b24ddb2 --- /dev/null +++ b/Samples~/SI-M1 Face Demo/UI/Common/FaceModuleUiCommon.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5590054c8f656004eb4838ef5bf27ab9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/SI-M1 Face Demo/UI/Pages.meta b/Samples~/SI-M1 Face Demo/UI/Pages.meta new file mode 100644 index 0000000..3dfeac9 --- /dev/null +++ b/Samples~/SI-M1 Face Demo/UI/Pages.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e3750291d4457c4439cae8c383d2aadd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/SI-M1 Face Demo/UI/Pages/FaceModuleAdvancedPages.cs.meta b/Samples~/SI-M1 Face Demo/UI/Pages/FaceModuleAdvancedPages.cs.meta new file mode 100644 index 0000000..c1429d7 --- /dev/null +++ b/Samples~/SI-M1 Face Demo/UI/Pages/FaceModuleAdvancedPages.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ef28d55dc2ea2224989c843c65b02044 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/SI-M1 Face Demo/UI/Pages/FaceModulePages.cs.meta b/Samples~/SI-M1 Face Demo/UI/Pages/FaceModulePages.cs.meta new file mode 100644 index 0000000..b55cca0 --- /dev/null +++ b/Samples~/SI-M1 Face Demo/UI/Pages/FaceModulePages.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 39833480969093f4986d10e2814fe719 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/SI-M1 Face Demo/UI/ViewModels.meta b/Samples~/SI-M1 Face Demo/UI/ViewModels.meta new file mode 100644 index 0000000..8590c9d --- /dev/null +++ b/Samples~/SI-M1 Face Demo/UI/ViewModels.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6f03a13c9bc3e394788e8c26d2f5cfeb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/SI-M1 Face Demo/UI/ViewModels/FaceModuleViewModels.cs.meta b/Samples~/SI-M1 Face Demo/UI/ViewModels/FaceModuleViewModels.cs.meta new file mode 100644 index 0000000..421d3b1 --- /dev/null +++ b/Samples~/SI-M1 Face Demo/UI/ViewModels/FaceModuleViewModels.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 206ba1b1876c1a744abd773518b8fc61 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package.json b/package.json index c919019..d4627dc 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,9 @@ -{ +{ "name": "xin.aisu.si-m1.face", "displayName": "AISU SI-M1 Face SDK", - "version": "0.1.5", + "version": "0.1.0", "unity": "2021.3", - "description": "Unity UPM package for the AISU SI-M1 face recognition module protocol, transport, command services, and lifecycle manager. Distributed as compiled DLLs without source code.", + "description": "Unity UPM package for the AISU SI-M1 face recognition module protocol, transport, command services, lifecycle manager, tests, and demo sample.", "author": { "name": "AISU" }, @@ -14,5 +14,17 @@ "recognition", "serial", "unity" - ] + ], + "samples": [ + { + "displayName": "SI-M1 Face Demo", + "description": "Full demo scene and UI for connecting, registering, recognizing, querying, deleting, and releasing the SI-M1 face module.", + "path": "Samples~/SI-M1 Face Demo" + }, + { + "displayName": "Face Detection Demo", + "description": "Minimal camera preview, serial connection, enrollment, recognition, and user data test scene.", + "path": "Samples~/Face Detection Demo" + } + ] }