浏览代码

Keypoint self occlusion (#351)

* WIP self-occlusion checks.

* More updates for self-occlusion

* Almost working using compute shaders. Need to switch to regular rendering now.

* Kind of working!

* Ok, officially working now

* Adding some tests for self-occlusion. Some fixes in KeypointLabeler

* Fix issues with orthographic views and points close to far plane

* Fixing remainder of tests.

* Removing comments

* Fixing issues in URP with orthographic view

* Updating JointLabel

* Updating JointLabel to include self-occlusion distance and drop the reference to the keypoint label config

* Adding gizmos for keypoints

* Adding and fixing remainder of tests.

* Fixing various bugs in keypoint self occlusion, including (hopefully) properly supporting player builds

* Fixing issues with large numbers of keypoints.

* Fixing issue with resizing buffers

* Add search for non-background pixel to keypoint depth check. Not perfect, but catches a few edg...
/main
GitHub 3 年前
当前提交
91d606c7
共有 63 个文件被更改,包括 3503 次插入1289 次删除
  1. 16
      .yamato/environments.yml
  2. 12
      .yamato/upm-ci-testprojects.yml
  3. 27
      TestProjects/PerceptionHDRP/Assets/CrateMaterial.mat
  4. 134
      TestProjects/PerceptionHDRP/Assets/HDRenderPipelineAsset.asset
  5. 66
      TestProjects/PerceptionHDRP/Assets/Prefabs/KeypointCube.prefab
  6. 145
      TestProjects/PerceptionHDRP/Assets/Scenes/PoseSample.unity
  7. 474
      TestProjects/PerceptionHDRP/Assets/Scenes/SampleScene.unity
  8. 22
      TestProjects/PerceptionHDRP/Packages/manifest.json
  9. 131
      TestProjects/PerceptionHDRP/Packages/packages-lock.json
  10. 3
      TestProjects/PerceptionHDRP/ProjectSettings/EditorBuildSettings.asset
  11. 15
      TestProjects/PerceptionHDRP/ProjectSettings/EditorSettings.asset
  12. 3
      TestProjects/PerceptionHDRP/ProjectSettings/GraphicsSettings.asset
  13. 4
      TestProjects/PerceptionHDRP/ProjectSettings/HDRPProjectSettings.asset
  14. 7
      TestProjects/PerceptionHDRP/ProjectSettings/PackageManagerSettings.asset
  15. 83
      TestProjects/PerceptionHDRP/ProjectSettings/ProjectSettings.asset
  16. 4
      TestProjects/PerceptionHDRP/ProjectSettings/ProjectVersion.txt
  17. 2
      TestProjects/PerceptionHDRP/ProjectSettings/QualitySettings.asset
  18. 1
      TestProjects/PerceptionHDRP/ProjectSettings/UnityConnectSettings.asset
  19. 2
      TestProjects/PerceptionHDRP/ProjectSettings/VFXManager.asset
  20. 71
      TestProjects/PerceptionURP/Assets/Human Pose Labeling and Randomization/Models and Animations/LabeledAndRandomized.prefab
  21. 229
      TestProjects/PerceptionURP/Assets/Prefabs/KeypointCube.prefab
  22. 434
      TestProjects/PerceptionURP/Assets/Scenes/PoseSample.unity
  23. 241
      TestProjects/PerceptionURP/Assets/Scenes/SampleScene.unity
  24. 7
      TestProjects/PerceptionURP/Assets/Settings/ForwardRenderer.asset
  25. 16
      TestProjects/PerceptionURP/Packages/manifest.json
  26. 112
      TestProjects/PerceptionURP/Packages/packages-lock.json
  27. 5
      TestProjects/PerceptionURP/ProjectSettings/EditorBuildSettings.asset
  28. 7
      TestProjects/PerceptionURP/ProjectSettings/PackageManagerSettings.asset
  29. 101
      TestProjects/PerceptionURP/ProjectSettings/ProjectSettings.asset
  30. 4
      TestProjects/PerceptionURP/ProjectSettings/ProjectVersion.txt
  31. 2
      TestProjects/PerceptionURP/ProjectSettings/URPProjectSettings.asset
  32. 8
      com.unity.perception/CHANGELOG.md
  33. 26
      com.unity.perception/Documentation~/GroundTruth/KeypointLabeler.md
  34. 263
      com.unity.perception/Documentation~/images/keypoint_template_keypoints.png
  35. 1
      com.unity.perception/Editor/GroundTruth/JointLabelEditor.cs
  36. 19
      com.unity.perception/Runtime/GroundTruth/Labelers/CocoKeypointTemplate.asset
  37. 121
      com.unity.perception/Runtime/GroundTruth/Labelers/JointLabel.cs
  38. 401
      com.unity.perception/Runtime/GroundTruth/Labelers/KeypointLabeler.cs
  39. 6
      com.unity.perception/Runtime/GroundTruth/Labelers/KeypointTemplate.cs
  40. 19
      com.unity.perception/Runtime/GroundTruth/RenderTextureReader.cs
  41. 20
      com.unity.perception/Tests/Runtime/GroundTruthTests/DatasetCaptureSensorSchedulingTests.cs
  42. 556
      com.unity.perception/Tests/Runtime/GroundTruthTests/KeypointGroundTruthTests.cs
  43. 26
      com.unity.perception/Tests/Runtime/GroundTruthTests/TestHelper.cs
  44. 2
      com.unity.perception/package.json
  45. 8
      TestProjects/PerceptionHDRP/Assets/Resources.meta
  46. 63
      TestProjects/PerceptionHDRP/Assets/Scenes/PoseSampleSettings.lighting
  47. 8
      TestProjects/PerceptionHDRP/Assets/Scenes/PoseSampleSettings.lighting.meta
  48. 167
      TestProjects/PerceptionHDRP/ProjectSettings/SceneTemplateSettings.json
  49. 1
      TestProjects/PerceptionURP/ProjectSettings/VersionControlSettings.asset
  50. 17
      com.unity.perception/Editor/Icons/Keypoint.png
  51. 92
      com.unity.perception/Editor/Icons/Keypoint.png.meta
  52. 18
      com.unity.perception/Runtime/GroundTruth/Labelers/KeypointOcclusionOverrides.cs
  53. 11
      com.unity.perception/Runtime/GroundTruth/Labelers/KeypointOcclusionOverrides.cs.meta
  54. 233
      com.unity.perception/Runtime/GroundTruth/Resources/KeypointDepthCheck.shader
  55. 10
      com.unity.perception/Runtime/GroundTruth/Resources/KeypointDepthCheck.shader.meta
  56. 200
      com.unity.perception/Tests/Runtime/TestAssets/CubeScene.unity
  57. 7
      com.unity.perception/Tests/Runtime/TestAssets/CubeScene.unity.meta
  58. 63
      com.unity.perception/Tests/Runtime/TestAssets/CubeSceneSettings.lighting
  59. 8
      com.unity.perception/Tests/Runtime/TestAssets/CubeSceneSettings.lighting.meta
  60. 19
      TestProjects/PerceptionHDRP/UserSettings/EditorUserSettings.asset
  61. 19
      TestProjects/PerceptionURP/UserSettings/EditorUserSettings.asset

16
.yamato/environments.yml


# sticking to 2019.4.6f1 for testing for now because Linux Editor fails to open PerceptionHDRP on 2019.4.8f1
# see https://fogbugz.unity3d.com/default.asp?1273518_d68j5lb6eucglb84
coverage_editors:
- version: 2019.4.18f1
# - version: 2019.4.18f1
- version: 2020.3.17f1
- version: 2019.4.18f1
# - version: 2020.1.15f1
# - version: 2019.4.18f1
- version: 2020.3.17f1
- version: 2019.4.18f1
# - version: 2020.1.3f1
# - version: 2019.4.18f1
- version: 2020.3.17f1
- version: 2019.4.18f1
# - version: 2020.1.15f1
# - version: 2020.2.0a21
# - version: 2019.4.18f1
- version: 2020.3.17f1
publish_platforms:
- name: win

12
.yamato/upm-ci-testprojects.yml


- pip install unity-downloader-cli --index-url https://artifactory.prd.it.unity3d.com/artifactory/api/pypi/pypi/simple --upgrade
- unity-downloader-cli -u {{ editor.version }} -c editor -c StandaloneSupport-IL2CPP -c Linux --wait --published
{% if suite.name == "standalone" %}
- utr/utr --testproject=./TestProjects/{{project.name}} --editor-location=./.Editor --reruncount=2 --artifacts_path=test-results --stdout-filter=minimal --extra-editor-arg="--force-d3d11" {{suite.args}}StandaloneWindows64
- utr/utr --testproject=./TestProjects/{{project.name}} --editor-location=./.Editor --reruncount=2 --artifacts_path=test-results --category=!Performance --stdout-filter=minimal --extra-editor-arg="--force-d3d11" {{suite.args}}StandaloneWindows64
- utr/utr --testproject=./TestProjects/{{project.name}} --editor-location=./.Editor --reruncount=2 --artifacts_path=test-results --stdout-filter=minimal --extra-editor-arg="--force-d3d11" {{suite.args}}
- utr/utr --testproject=./TestProjects/{{project.name}} --editor-location=./.Editor --reruncount=2 --artifacts_path=test-results --category=!Performance --stdout-filter=minimal --extra-editor-arg="--force-d3d11" {{suite.args}}
{% endif %}
artifacts:
logs:

commands:
- git submodule update --init --recursive
- unity-downloader-cli -u {{ editor.version }} -c editor -c StandaloneSupport-IL2CPP -c Linux --wait --published
- .\.Editor\Unity.exe -projectPath ./TestProjects/PerceptionHDRP -testPlatform editmode -runTests -automated -testResults test-results -debugCodeOptimization -enableCodeCoverage -coverageResultsPath test-results -coverageOptions enableCyclomaticComplexity;generateHtmlReport;generateBadgeReport;assemblyFilters:+Unity.Perception.Runtime
- .\.Editor\Unity.exe -projectPath ./TestProjects/PerceptionHDRP -testPlatform playmode -runTests -automated -testResults test-results -debugCodeOptimization -enableCodeCoverage -coverageResultsPath test-results -coverageOptions enableCyclomaticComplexity;generateHtmlReport;generateBadgeReport;assemblyFilters:+Unity.Perception.Runtime
- .\.Editor\Unity.exe -projectPath ./TestProjects/PerceptionHDRP -testPlatform editmode -runTests -automated -testResults test-results -debugCodeOptimization -enableCodeCoverage -coverageResultsPath test-results --category=!Performance -coverageOptions enableCyclomaticComplexity;generateHtmlReport;generateBadgeReport;assemblyFilters:+Unity.Perception.Runtime
- .\.Editor\Unity.exe -projectPath ./TestProjects/PerceptionHDRP -testPlatform playmode -runTests -automated -testResults test-results -debugCodeOptimization -enableCodeCoverage -coverageResultsPath test-results --category=!Performance -coverageOptions enableCyclomaticComplexity;generateHtmlReport;generateBadgeReport;assemblyFilters:+Unity.Perception.Runtime
# - .\.Editor\Unity.exe -projectPath ./TestProjects/PerceptionHDRP -debugCodeOptimization -enableCodeCoverage -coverageResultsPath test-results -coverageOptions enableCyclomaticComplexity;generateHtmlReport;generateBadgeReport;
artifacts:
logs:

- git clone git@github.cds.internal.unity3d.com:unity/utr.git utr
- unity-downloader-cli -u {{ editor.version }} -c editor -c StandaloneSupport-IL2CPP -c Linux --wait --published
{% if suite.name == "standalone" %}
- DISPLAY=:0.0 utr/utr --testproject=./TestProjects/{{project.name}} --editor-location=.Editor --reruncount=2 --artifacts_path=test-results --stdout-filter=minimal --extra-editor-arg="--force-vulkan" {{suite.args}}StandaloneLinux64
- DISPLAY=:0.0 utr/utr --testproject=./TestProjects/{{project.name}} --editor-location=.Editor --reruncount=2 --artifacts_path=test-results --stdout-filter=minimal --category=!Performance --extra-editor-arg="--force-vulkan" {{suite.args}}StandaloneLinux64
- DISPLAY=:0.0 utr/utr --testproject=./TestProjects/{{project.name}} --editor-location=.Editor --reruncount=2 --artifacts_path=test-results --stdout-filter=minimal --extra-editor-arg="--force-vulkan" {{suite.args}}
- DISPLAY=:0.0 utr/utr --testproject=./TestProjects/{{project.name}} --editor-location=.Editor --reruncount=2 --artifacts_path=test-results --stdout-filter=minimal --category=!Performance --extra-editor-arg="--force-vulkan" {{suite.args}}
{% endif %}
artifacts:
logs:

27
TestProjects/PerceptionHDRP/Assets/CrateMaterial.mat


m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 2
version: 11
--- !u!21 &2100000
Material:
serializedVersion: 6

m_PrefabAsset: {fileID: 0}
m_Name: CrateMaterial
m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3}
m_ShaderKeywords: _NORMALMAP_TANGENT_SPACE
m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE
m_CustomRenderQueue: -1
m_CustomRenderQueue: 2225
stringTagMap: {}
disabledShaderPasses:
- DistortionVectors

- TransparentBackface
- RayTracingPrepass
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:

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_Floats:
- _AORemapMax: 1
- _AORemapMin: 0

- _AlphaCutoffShadow: 0.5
- _AlphaDstBlend: 0
- _AlphaSrcBlend: 1
- _AlphaToMask: 0
- _AlphaToMaskInspectorValue: 0
- _Anisotropy: 0
- _BlendMode: 0
- _CoatMask: 0

- _LinkDetailsWithBase: 1
- _MaterialID: 1
- _Metallic: 0.28
- _MetallicRemapMax: 0.28
- _MetallicRemapMin: 0
- _OpaqueCullMode: 2
- _RayTracing: 0
- _ReceivesSSRTransparent: 0
- _RefractionModel: 0
- _SSRefractionProjectionModel: 0
- _Smoothness: 0.667

- _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0}
- _UVMappingMask: {r: 1, g: 0, b: 0, a: 0}
- _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0}
m_BuildTextureStacks: []

134
TestProjects/PerceptionHDRP/Assets/HDRenderPipelineAsset.asset


m_Script: {fileID: 11500000, guid: 0cf1dab834d4ec34195b920ea7bbf9ec, type: 3}
m_Name: HDRenderPipelineAsset
m_EditorClassIdentifier:
m_Version: 14
m_Version: 18
m_ObsoleteFrameSettings:
overrides: 0
enableShadow: 0

m_RenderPipelineResources: {fileID: 11400000, guid: 3ce144cff5783da45aa5d4fdc2da14b7,
type: 2}
m_RenderPipelineRayTracingResources: {fileID: 0}
m_DefaultVolumeProfile: {fileID: 0}
m_DefaultLookDevProfile: {fileID: 0}
m_DefaultVolumeProfile: {fileID: 11400000, guid: f940a8037e6cda542891dc1aac1fa4e8,
type: 2}
m_LensAttenuation: 0
m_UseRenderGraph: 1
m_DefaultLookDevProfile: {fileID: 11400000, guid: 254c4fe87beb7be4fa72e1681edbed02,
type: 2}
data1: 70280697347933
data2: 4539628425463136256
data1: 140649441525597
data2: 4539628425463136280
lodBias: 1
lodBiasMode: 0
lodBiasQualityLevel: 0

sssQualityMode: 0
sssQualityLevel: 0
sssCustomSampleBudget: 20
data1: 64942043591453
data2: 4539628424389459968
data1: 135310787769117
data2: 4539628424389459992
lodBias: 1
lodBiasMode: 0
lodBiasQualityLevel: 0

sssQualityMode: 0
sssQualityLevel: 0
sssCustomSampleBudget: 20
data1: 69692120112925
data2: 4539628424657895424
data1: 140060864290589
data2: 4539628424657895448
lodBias: 1
lodBiasMode: 0
lodBiasQualityLevel: 0

sssQualityMode: 0
sssQualityLevel: 0
sssCustomSampleBudget: 20
supportSSRTransparent: 0
supportSSGI: 0
increaseSssSampleCount: 0
sssSampleBudget:
m_Values: 140000002800000050000000
m_SchemaId:
m_Id: With3Levels
increaseResolutionOfVolumetrics: 0
supportLightLayers: 0
lightLayerName0: Light Layer default
lightLayerName1: Light Layer 1

supportCustomPass: 1
customBufferFormat: 12
supportedLitShaderMode: 3
planarReflectionResolution:
m_Values: 000100000004000000080000
m_SchemaId:
m_Id: With3Levels
supportDecalLayers: 0
decalLayerName0: Decal Layer default
decalLayerName1: Decal Layer 1
decalLayerName2: Decal Layer 2
decalLayerName3: Decal Layer 3
decalLayerName4: Decal Layer 4
decalLayerName5: Decal Layer 5
decalLayerName6: Decal Layer 6
decalLayerName7: Decal Layer 7
supportRuntimeAOVAPI: 0
supportProbeVolume: 0
supportedRayTracingMode: 3
probeVolumeSettings:
atlasResolution: 128
atlasOctahedralDepthResolution: 2048
pointCookieSize: 128
cubeCookieTexArraySize: 16
cookieAtlasLastValidMip: 0
cookieTexArraySize: 16
planarReflectionAtlasSize: 4096

planarReflectionCacheCompressed: 0
reflectionProbeFormat: 74
skyReflectionSize: 256
skyLightingOverrideLayerMask:
serializedVersion: 2

maxEnvLightsOnScreen: 64
maxDecalsOnScreen: 512
maxPlanarReflectionOnScreen: 16
maxLightsPerClusterCell: 8
hdShadowInitParams:
maxShadowRequests: 128
directionalShadowsDepthBits: 32

shadowAtlasResolution: 4096
shadowAtlasDepthBits: 32
useDynamicViewportRescale: 1
cachedPunctualLightShadowAtlas: 2048
cachedAreaLightShadowAtlas: 1024
shadowResolutionDirectional:
m_Values: 00010000000200000004000000080000
m_SchemaId:

xrSettings:
singlePass: 1
occlusionMesh: 1
cameraJitter: 0
postProcessQualitySettings:
NearBlurSampleCount: 030000000500000008000000
NearBlurMaxRadius:

- 13
DoFResolution: 040000000200000001000000
DoFHighQualityFiltering: 000101
DoFPhysicallyBased: 000000
BloomHighQualityPrefiltering: 000001
ChromaticAberrationMaxSamples: 03000000060000000c000000
lightSettings:
useContactShadow:

AODirectionCount: 010000000200000004000000
ContactShadowSampleCount: 060000000a00000010000000
SSRMaxRaySteps: 100000002000000040000000
RTAORayLength:
- 0.5
- 3
- 20
RTAOSampleCount: 010000000200000008000000
RTAODenoise: 010101
RTAODenoiserRadius:
- 0.25
- 0.5
- 0.65
RTGIRayLength:
- 50
- 50
- 50
RTGIFullResolution: 000001
RTGIClampValue:
- 0.5
- 0.8
- 1.5
RTGIUpScaleRadius: 040000000400000004000000
RTGIDenoise: 010101
RTGIHalfResDenoise: 010000
RTGIDenoiserRadius:
- 0.75
- 0.5
- 0.25
RTGISecondDenoise: 010101
RTGISecondDenoiserRadius:
- 0
- 0
- 0
RTRMinSmoothness:
- 0.6
- 0.4
- 0
RTRSmoothnessFadeStart:
- 0.7
- 0.5
- 0
RTRRayLength:
- 50
- 50
- 50
RTRClampValue:
- 0.8
- 1
- 1.2
RTRUpScaleRadius: 040000000400000003000000
RTRFullResolution: 000001
RTRDenoise: 010101
RTRDenoiserRadius: 080000000c00000010000000
Fog_ControlMode: 000000000000000000000000
Fog_Budget:
- 0.166
- 0.33
- 0.666
Fog_DepthRatio:
- 0.666
- 0.666
- 0.5
allowShaderVariantStripping: 1
enableSRPBatcher: 1
shaderVariantLogLevel: 0

diffusionProfileSettingsList: []
beforeTransparentCustomPostProcesses: []
beforeTAACustomPostProcesses: []
virtualTexturingSettings:
streamingCpuCacheSizeInMegaBytes: 256
streamingGpuCacheSettings:
- format: 0
sizeInMegaBytes: 128

66
TestProjects/PerceptionHDRP/Assets/Prefabs/KeypointCube.prefab


m_Script: {fileID: 11500000, guid: 8cf4fa374b134b1680755f8280ae8e7d, type: 3}
m_Name:
m_EditorClassIdentifier:
templateInformation:
- template: {fileID: 11400000, guid: 90217544e06a7b1408543cd72382ccbb, type: 2}
label: FrontBottomRight
templateInformation: []
labels:
- FrontBottomRight
selfOcclusionDistanceSource: 0
selfOcclusionDistance: 0.4
--- !u!1 &3710685714022253438
GameObject:
m_ObjectHideFlags: 0

m_Script: {fileID: 11500000, guid: 8cf4fa374b134b1680755f8280ae8e7d, type: 3}
m_Name:
m_EditorClassIdentifier:
templateInformation:
- template: {fileID: 11400000, guid: 90217544e06a7b1408543cd72382ccbb, type: 2}
label: BackBottomRight
templateInformation: []
labels:
- BackBottomRight
selfOcclusionDistanceSource: 0
selfOcclusionDistance: 0.15
--- !u!1 &3710685714250655251
GameObject:
m_ObjectHideFlags: 0

m_Script: {fileID: 11500000, guid: 8cf4fa374b134b1680755f8280ae8e7d, type: 3}
m_Name:
m_EditorClassIdentifier:
templateInformation:
- template: {fileID: 11400000, guid: 90217544e06a7b1408543cd72382ccbb, type: 2}
label: BackTopRight
templateInformation: []
labels:
- BackTopRight
selfOcclusionDistanceSource: 0
selfOcclusionDistance: 0.15
--- !u!1 &3710685714462346527
GameObject:
m_ObjectHideFlags: 0

m_Script: {fileID: 11500000, guid: 8cf4fa374b134b1680755f8280ae8e7d, type: 3}
m_Name:
m_EditorClassIdentifier:
templateInformation:
- template: {fileID: 11400000, guid: 90217544e06a7b1408543cd72382ccbb, type: 2}
label: FrontTopLeft
templateInformation: []
labels:
- FrontTopLeft
selfOcclusionDistanceSource: 0
selfOcclusionDistance: 0.15
--- !u!1 &3710685714481788901
GameObject:
m_ObjectHideFlags: 0

m_Script: {fileID: 11500000, guid: 8cf4fa374b134b1680755f8280ae8e7d, type: 3}
m_Name:
m_EditorClassIdentifier:
templateInformation:
- template: {fileID: 11400000, guid: 90217544e06a7b1408543cd72382ccbb, type: 2}
label: BackBottomLeft
templateInformation: []
labels:
- BackBottomLeft
selfOcclusionDistanceSource: 0
selfOcclusionDistance: 0.15
--- !u!1 &3710685714524957768
GameObject:
m_ObjectHideFlags: 0

m_Script: {fileID: 11500000, guid: 8cf4fa374b134b1680755f8280ae8e7d, type: 3}
m_Name:
m_EditorClassIdentifier:
templateInformation:
- template: {fileID: 11400000, guid: 90217544e06a7b1408543cd72382ccbb, type: 2}
label: FrontTopRight
templateInformation: []
labels:
- FrontTopRight
selfOcclusionDistanceSource: 0
selfOcclusionDistance: 0.15
--- !u!1 &3710685714572991348
GameObject:
m_ObjectHideFlags: 0

m_Script: {fileID: 11500000, guid: 8cf4fa374b134b1680755f8280ae8e7d, type: 3}
m_Name:
m_EditorClassIdentifier:
templateInformation:
- template: {fileID: 11400000, guid: 90217544e06a7b1408543cd72382ccbb, type: 2}
label: BackTopLeft
templateInformation: []
labels:
- BackTopLeft
selfOcclusionDistanceSource: 0
selfOcclusionDistance: 0.15
--- !u!1 &3710685714995308732
GameObject:
m_ObjectHideFlags: 0

m_Name:
m_EditorClassIdentifier:
labels:
- Crate
- Crate24
useAutoLabeling: 0
autoLabelingSchemeType:
--- !u!1 &3710685715225028277

m_Script: {fileID: 11500000, guid: 8cf4fa374b134b1680755f8280ae8e7d, type: 3}
m_Name:
m_EditorClassIdentifier:
templateInformation:
- template: {fileID: 11400000, guid: 90217544e06a7b1408543cd72382ccbb, type: 2}
label: FrontBottomLeft
templateInformation: []
labels:
- FrontBottomLeft
selfOcclusionDistanceSource: 0
selfOcclusionDistance: 0.4

145
TestProjects/PerceptionHDRP/Assets/Scenes/PoseSample.unity


propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308721, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: labels.Array.data[0]
value: Crate
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308732, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_Name

m_Script: {fileID: 11500000, guid: 4467405dbcbd3d64ab4363e9ae8bb813, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Labelers:
- id: 0
- id: 1
description: The main camera
captureRgbImages: 1
firstCaptureFrame: 0

framesBetweenCaptures: 0
m_Labelers:
- id: 0
- id: 1
showVisualizations: 1
references:
version: 1

enabled: 1
activeTemplate: {fileID: 11400000, guid: a29b79d8ce98945a0855b1addec08d86,
activeTemplate: {fileID: 11400000, guid: 90217544e06a7b1408543cd72382ccbb,
annotationId: 8b3ef246-daa7-4dd5-a0e8-a943f6e7f8c2
annotationId: F66DFD55-FE53-4AA7-8934-B1226D9C9175
objectFilter: 0
selfOcclusionDistance: 0.15
activeTemplate: {fileID: 11400000, guid: 90217544e06a7b1408543cd72382ccbb,
activeTemplate: {fileID: 11400000, guid: a29b79d8ce98945a0855b1addec08d86,
annotationId: F66DFD55-FE53-4AA7-8934-B1226D9C9175
annotationId: 8b3ef246-daa7-4dd5-a0e8-a943f6e7f8c2
objectFilter: 0
selfOcclusionDistance: 0.15
animationPoseConfigs: []
--- !u!1 &1190242050
GameObject:

- id: 0
constants:
randomSeed: 539662031
totalIterations: 20
totalIterations: 2000
instanceCount: 1
instanceIndex: 0
framesPerIteration: 1

m_Component:
- component: {fileID: 1488440286}
- component: {fileID: 1488440285}
- component: {fileID: 1488440287}
m_Layer: 0
m_Name: Directional Light
m_TagString: Untagged

m_Type: 1
m_Shape: 0
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_Intensity: 1
m_Intensity: 3.1415927
m_Range: 10
m_SpotAngle: 30
m_InnerSpotAngle: 21.80208

m_Bits: 4294967295
m_RenderingLayerMask: 1
m_Lightmapping: 4
m_LightShadowCasterMode: 0
m_LightShadowCasterMode: 2
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 1
m_ColorTemperature: 6570

m_Father: {fileID: 0}
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
--- !u!114 &1488440287
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1488440284}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Version: 10
m_ObsoleteShadowResolutionTier: 1
m_ObsoleteUseShadowQualitySettings: 0
m_ObsoleteCustomShadowResolution: 512
m_ObsoleteContactShadows: 0
m_PointlightHDType: 0
m_SpotLightShape: 0
m_AreaLightShape: 0
m_Intensity: 3.1415927
m_EnableSpotReflector: 0
m_LuxAtDistance: 1
m_InnerSpotPercent: 0
m_LightDimmer: 1
m_VolumetricDimmer: 1
m_LightUnit: 2
m_FadeDistance: 10000
m_AffectDiffuse: 1
m_AffectSpecular: 1
m_NonLightmappedOnly: 0
m_ShapeWidth: 0.5
m_ShapeHeight: 0.5
m_AspectRatio: 1
m_ShapeRadius: 0.025
m_SoftnessScale: 1
m_UseCustomSpotLightShadowCone: 0
m_CustomSpotLightShadowCone: 30
m_MaxSmoothness: 0.99
m_ApplyRangeAttenuation: 1
m_DisplayAreaLightEmissiveMesh: 0
m_AreaLightCookie: {fileID: 0}
m_AreaLightShadowCone: 120
m_UseScreenSpaceShadows: 0
m_InteractsWithSky: 1
m_AngularDiameter: 0.5
m_FlareSize: 2
m_FlareTint: {r: 1, g: 1, b: 1, a: 1}
m_FlareFalloff: 4
m_SurfaceTexture: {fileID: 0}
m_SurfaceTint: {r: 1, g: 1, b: 1, a: 1}
m_Distance: 1.5e+11
m_UseRayTracedShadows: 0
m_NumRayTracingSamples: 4
m_FilterTracedShadow: 1
m_FilterSizeTraced: 16
m_SunLightConeAngle: 0.5
m_LightShadowRadius: 0.5
m_SemiTransparentShadow: 0
m_ColorShadow: 1
m_EvsmExponent: 15
m_EvsmLightLeakBias: 0
m_EvsmVarianceBias: 0.00001
m_EvsmBlurPasses: 0
m_LightlayersMask: 1
m_LinkShadowLayers: 1
m_ShadowNearPlane: 0.1
m_BlockerSampleCount: 24
m_FilterSampleCount: 16
m_MinFilterSize: 0.1
m_KernelSize: 5
m_LightAngle: 1
m_MaxDepthBias: 0.001
m_ShadowResolution:
m_Override: 512
m_UseOverride: 1
m_Level: 0
m_ShadowDimmer: 1
m_VolumetricShadowDimmer: 1
m_ShadowFadeDistance: 10000
m_UseContactShadow:
m_Override: 0
m_UseOverride: 1
m_Level: 0
m_RayTracedContactShadow: 0
m_ShadowTint: {r: 0, g: 0, b: 0, a: 1}
m_PenumbraTint: 0
m_NormalBias: 0.75
m_SlopeBias: 0.5
m_ShadowUpdateMode: 0
m_BarnDoorAngle: 90
m_BarnDoorLength: 0.05
m_ShadowCascadeRatios:
- 0.05
- 0.2
- 0.3
m_ShadowCascadeBorders:
- 0.2
- 0.2
- 0.2
- 0.2
m_ShadowAlgorithm: 0
m_ShadowVariant: 0
m_ShadowPrecision: 0
useOldInspector: 0
useVolumetric: 1
featuresFoldout: 1
showAdditionalSettings: 0
m_AreaLightEmissiveMeshShadowCastingMode: 0
m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0
--- !u!1001 &1667437134
PrefabInstance:
m_ObjectHideFlags: 0

type: 3}
propertyPath: m_Name
value: LabeledAndRandomized
objectReference: {fileID: 0}
- target: {fileID: 8917933090883489511, guid: 09c632a4eeff8204c87fa56b8632d9ba,
type: 3}
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 09c632a4eeff8204c87fa56b8632d9ba, type: 3}

474
TestProjects/PerceptionHDRP/Assets/Scenes/SampleScene.unity


--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 11
serializedVersion: 12
m_GIWorkflowMode: 0
m_GISettings:
serializedVersion: 2

m_TrainingDataDestination: TrainingData
m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 0}
m_UseShadowmask: 1
m_LightingSettings: {fileID: 4890085278179872738, guid: 6c01ce1916b3949468038e540bc0e0ed,
type: 2}
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2

manualTileSize: 0
tileSize: 256
accuratePlacement: 0
maxJobWorkers: 0
preserveTilesOutsideBounds: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}

m_EditorClassIdentifier:
m_Profile: {fileID: 0}
m_StaticLightingSkyUniqueID: 0
m_SkySettings: {fileID: 0}
m_SkySettingsFromProfile: {fileID: 0}
--- !u!4 &117484508
Transform:
m_ObjectHideFlags: 1

m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 6
m_RootOrder: 2
--- !u!1 &411238276
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 411238281}
- component: {fileID: 411238280}
- component: {fileID: 411238279}
- component: {fileID: 411238278}
- component: {fileID: 411238277}
- component: {fileID: 411238282}
m_Layer: 0
m_Name: Crate
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &411238277
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 411238276}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8b33f0bc2b78db642a758f07826d0dd0, type: 3}
m_Name:
m_EditorClassIdentifier:
labels:
- Crate
useAutoLabeling: 0
autoLabelingSchemeType:
--- !u!65 &411238278
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 411238276}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 2
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &411238279
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 411238276}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: ddfd18df3e5ef3043b7889c5a070d8ca, 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
--- !u!33 &411238280
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 411238276}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!4 &411238281
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 411238276}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 121.42, y: 72.4, z: -161.73}
m_LocalScale: {x: 15, y: 15, z: 15}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &411238282
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 411238276}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 673a227032a8e4940b9828c5b6f852ab, type: 3}
m_Name:
m_EditorClassIdentifier:
yDegreesPerSecond: 180
--- !u!1 &705507993
GameObject:
m_ObjectHideFlags: 0

m_UseColorTemperature: 0
m_BoundingSphereOverride: {x: 0, y: 1.1418e-41, z: 0, w: 0}
m_UseBoundingSphereOverride: 0
m_UseViewFrustumForShadowCasterCull: 1
m_ShadowRadius: 0
m_ShadowAngle: 0
--- !u!4 &705507995

m_LocalScale: {x: 36.249973, y: 36.249977, z: 36.249973}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 3
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
--- !u!114 &705507996
MonoBehaviour:

m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Version: 10
m_Version: 11
m_ObsoleteShadowResolutionTier: 1
m_ObsoleteUseShadowQualitySettings: 0
m_ObsoleteCustomShadowResolution: 512

m_EnableSpotReflector: 0
m_LuxAtDistance: 1
m_InnerSpotPercent: 0
m_SpotIESCutoffPercent: 100
m_VolumetricFadeDistance: 10000
m_AffectDiffuse: 1
m_AffectSpecular: 1
m_NonLightmappedOnly: 0

m_ApplyRangeAttenuation: 1
m_DisplayAreaLightEmissiveMesh: 0
m_AreaLightCookie: {fileID: 0}
m_IESPoint: {fileID: 0}
m_IESSpot: {fileID: 0}
m_IncludeForRayTracing: 1
m_AreaLightShadowCone: 120
m_UseScreenSpaceShadows: 0
m_InteractsWithSky: 1

m_LightShadowRadius: 0.5
m_SemiTransparentShadow: 0
m_ColorShadow: 1
m_DistanceBasedFiltering: 0
m_EvsmExponent: 15
m_EvsmLightLeakBias: 0
m_EvsmVarianceBias: 0.00001

m_NormalBias: 0.75
m_SlopeBias: 0.5
m_ShadowUpdateMode: 0
m_AlwaysDrawDynamicShadows: 0
m_UpdateShadowOnLightMovement: 0
m_CachedShadowTranslationThreshold: 0.01
m_CachedShadowAngularThreshold: 0.5
m_preserveCachedShadow: 0
m_ShadowCascadeRatios:
- 0.05
- 0.2

showAdditionalSettings: 0
m_AreaLightEmissiveMeshShadowCastingMode: 0
m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0
--- !u!1 &934158981
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 934158987}
- component: {fileID: 934158986}
- component: {fileID: 934158985}
- component: {fileID: 934158984}
- component: {fileID: 934158983}
- component: {fileID: 934158982}
m_Layer: 0
m_Name: Cube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &934158982
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 934158981}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 673a227032a8e4940b9828c5b6f852ab, type: 3}
m_Name:
m_EditorClassIdentifier:
yDegreesPerSecond: 180
--- !u!114 &934158983
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 934158981}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8b33f0bc2b78db642a758f07826d0dd0, type: 3}
m_Name:
m_EditorClassIdentifier:
labels:
- Cube
useAutoLabeling: 0
autoLabelingSchemeType:
--- !u!65 &934158984
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 934158981}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 2
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &934158985
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 934158981}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 73c176f402d2c2f4d929aa5da7585d17, 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
--- !u!33 &934158986
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 934158981}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!4 &934158987
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 934158981}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 107.21, y: 73.4, z: -144.12}
m_LocalScale: {x: 15, y: 15, z: 15}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AreaLightEmissiveMeshLayer: -1
--- !u!1 &963194225
GameObject:
m_ObjectHideFlags: 0

m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 963194225}
m_LocalRotation: {x: -0.22882307, y: 0.124303445, z: -0.029468497, w: -0.96504945}
m_LocalPosition: {x: 116.52855, y: 91.11087, z: -194.85445}
m_LocalRotation: {x: 0.10991156, y: 0.06852541, z: -0.0075960113, w: 0.99154735}
m_LocalPosition: {x: -0.67697793, y: 1.4851692, z: -3.2593393}
m_RootOrder: 4
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &963194229
MonoBehaviour:

dithering: 0
stopNaNs: 0
taaSharpenStrength: 0.6
TAAQuality: 1
taaHistorySharpening: 0.35
taaAntiFlicker: 0.5
taaMotionVectorRejection: 0
taaAntiHistoryRinging: 0
physicalParameters:
m_Iso: 200
m_ShutterSpeed: 0.005

m_BarrelClipping: 0.25
m_Anamorphism: 0
flipYMode: 0
xrRendering: 1
fullscreenPassthrough: 0
allowDynamicResolution: 0
customRenderingSettings: 0

m_Bits: 4294967295
hasPersistentHistory: 0
exposureTarget: {fileID: 0}
m_RenderingPathCustomFrameSettings:
bitDatas:
data1: 70280697347933

maximumLODLevel: 0
maximumLODLevelMode: 0
maximumLODLevelQualityLevel: 0
sssQualityMode: 0
sssQualityLevel: 0
sssCustomSampleBudget: 20
materialQuality: 0
renderingPathCustomFrameSettingsOverrideMask:
mask:

m_Script: {fileID: 11500000, guid: 4467405dbcbd3d64ab4363e9ae8bb813, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Labelers:
- id: 0
- id: 1
- id: 2
- id: 3
- id: 4
simulationDeltaTime: 0.0166
simulationDeltaTime: 0.2
m_Labelers:
- id: 0
- id: 1
- id: 2
- id: 3
showVisualizations: 1
references:
version: 1

objectInfoMetricId: 5ba92024-b3b7-41a7-9d3f-c03a6a8ddd01
idLabelConfig: {fileID: 11400000, guid: 258de5b48703743468d34fc5bbdfa3aa,
type: 2}
--- !u!1 &1321518866
00000004:
type: {class: BoundingBox3DLabeler, ns: UnityEngine.Perception.GroundTruth,
asm: Unity.Perception.Runtime}
data:
enabled: 1
annotationId: 0bfbe00d-00fa-4555-88d1-471b58449f5c
idLabelConfig: {fileID: 11400000, guid: 258de5b48703743468d34fc5bbdfa3aa,
type: 2}
visualizationColor: {r: 0, g: 1, b: 0, a: 1}
--- !u!1 &1698223694
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}

m_Component:
- component: {fileID: 1321518869}
- component: {fileID: 1321518868}
- component: {fileID: 1321518867}
- component: {fileID: 1321518870}
- component: {fileID: 1698223696}
- component: {fileID: 1698223695}
m_Name: Terrain
m_Name: GameObject
m_StaticEditorFlags: 4294967295
m_StaticEditorFlags: 0
--- !u!154 &1321518867
TerrainCollider:
--- !u!114 &1698223695
MonoBehaviour:
m_GameObject: {fileID: 1321518866}
m_Material: {fileID: 0}
m_GameObject: {fileID: 1698223694}
m_TerrainData: {fileID: 15600000, guid: 15ded0116bd9f864f80b9813d4f4477f, type: 2}
m_EnableTreeColliders: 1
--- !u!218 &1321518868
Terrain:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1321518866}
m_Enabled: 1
serializedVersion: 6
m_TerrainData: {fileID: 15600000, guid: 15ded0116bd9f864f80b9813d4f4477f, type: 2}
m_TreeDistance: 5000
m_TreeBillboardDistance: 50
m_TreeCrossFadeLength: 5
m_TreeMaximumFullLODCount: 50
m_DetailObjectDistance: 80
m_DetailObjectDensity: 1
m_HeightmapPixelError: 5
m_SplatMapDistance: 1000
m_HeightmapMaximumLOD: 0
m_ShadowCastingMode: 2
m_DrawHeightmap: 1
m_DrawInstanced: 0
m_DrawTreesAndFoliage: 1
m_ReflectionProbeUsage: 1
m_MaterialTemplate: {fileID: 2100000, guid: 22ff8771d87ef27429e670136399094b, type: 2}
m_BakeLightProbesForTrees: 1
m_PreserveTreePrototypeLayers: 0
m_DeringLightProbesForTrees: 1
m_ScaleInLightmap: 0.0256
m_LightmapParameters: {fileID: 15203, guid: 0000000000000000f000000000000000, type: 0}
m_GroupingID: 0
m_RenderingLayerMask: 1
m_AllowAutoConnect: 1
--- !u!4 &1321518869
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a79cddcc0c4fb6f4e8e2df3e7c260ba7, type: 3}
m_Name:
m_EditorClassIdentifier:
prefab: {fileID: 3710685714995308732, guid: da3b4cd41011c1b488592ed975cbb467, type: 3}
--- !u!4 &1698223696
m_GameObject: {fileID: 1321518866}
m_LocalRotation: {x: -0, y: -0.07853227, z: -0, w: 0.9969116}
m_LocalPosition: {x: -604.5, y: 65.1, z: -902.3}
m_LocalScale: {x: 0.95858, y: 0.95858, z: 0.95858}
m_GameObject: {fileID: 1698223694}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.03735147, y: 0.4415038, z: 1.3462234}
m_LocalScale: {x: 1, y: 1, z: 1}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: -9.008, z: 0}
--- !u!114 &1321518870
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1321518866}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8b33f0bc2b78db642a758f07826d0dd0, type: 3}
m_Name:
m_EditorClassIdentifier:
labels:
- Terrain
useAutoLabeling: 0
autoLabelingSchemeType:
--- !u!1 &1640252278
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1824514461
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}

m_Component:
- component: {fileID: 1640252283}
- component: {fileID: 1640252282}
- component: {fileID: 1640252281}
- component: {fileID: 1640252280}
- component: {fileID: 1640252279}
- component: {fileID: 1640252284}
- component: {fileID: 1824514465}
- component: {fileID: 1824514464}
- component: {fileID: 1824514463}
- component: {fileID: 1824514462}
m_Name: Box
m_Name: Cube
--- !u!114 &1640252279
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1640252278}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8b33f0bc2b78db642a758f07826d0dd0, type: 3}
m_Name:
m_EditorClassIdentifier:
labels:
- Box
useAutoLabeling: 0
autoLabelingSchemeType:
--- !u!65 &1640252280
--- !u!65 &1824514462
m_GameObject: {fileID: 1640252278}
m_GameObject: {fileID: 1824514461}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1

--- !u!23 &1640252281
--- !u!23 &1824514463
m_GameObject: {fileID: 1640252278}
m_GameObject: {fileID: 1824514461}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1

m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RayTraceProcedural: 0
m_RenderingLayerMask: 257
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 73c176f402d2c2f4d929aa5da7585d17, type: 2}

m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!33 &1640252282
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &1824514464
m_GameObject: {fileID: 1640252278}
m_GameObject: {fileID: 1824514461}
--- !u!4 &1640252283
--- !u!4 &1824514465
m_GameObject: {fileID: 1640252278}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 95.88, y: 73.33, z: -165.54}
m_LocalScale: {x: 15, y: 15, z: 15}
m_GameObject: {fileID: 1824514461}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.03735147, y: 0.4415038, z: 1.3462234}
m_LocalScale: {x: 1, y: 1, z: 1}
m_RootOrder: 2
m_RootOrder: 4
--- !u!114 &1640252284
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1640252278}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 673a227032a8e4940b9828c5b6f852ab, type: 3}
m_Name:
m_EditorClassIdentifier:
yDegreesPerSecond: 180

22
TestProjects/PerceptionHDRP/Packages/manifest.json


{
"dependencies": {
"com.unity.collab-proxy": "1.2.16",
"com.unity.collab-proxy": "1.7.1",
"com.unity.ide.rider": "1.1.4",
"com.unity.ide.rider": "2.0.7",
"com.unity.ide.visualstudio": "2.0.11",
"com.unity.package-validation-suite": "0.9.1-preview",
"com.unity.package-validation-suite": "0.21.1-preview",
"com.unity.render-pipelines.core": "7.3.1",
"com.unity.render-pipelines.high-definition": "7.3.1",
"com.unity.simulation.capture": "0.0.10-preview.16",
"com.unity.simulation.core": "0.0.10-preview.21",
"com.unity.test-framework": "1.1.20",
"com.unity.testtools.codecoverage": "0.2.2-preview",
"com.unity.textmeshpro": "2.0.1",
"com.unity.render-pipelines.core": "10.5.1",
"com.unity.render-pipelines.high-definition": "10.5.1",
"com.unity.simulation.capture": "0.0.10-preview.23",
"com.unity.simulation.core": "0.0.10-preview.26",
"com.unity.test-framework": "1.1.27",
"com.unity.testtools.codecoverage": "1.1.0",
"com.unity.textmeshpro": "3.0.6",
"com.unity.toolchain.win-x86_64-linux-x86_64": "0.1.21-preview",
"com.unity.ugui": "1.0.0",
"nuget.moq": "1.0.0",
"com.unity.modules.ai": "1.0.0",

131
TestProjects/PerceptionHDRP/Packages/packages-lock.json


"url": "https://packages.unity.com"
},
"com.unity.collab-proxy": {
"version": "1.2.16",
"version": "1.7.1",
"dependencies": {},
"dependencies": {
"com.unity.nuget.newtonsoft-json": "2.0.0"
},
"url": "https://packages.unity.com"
},
"com.unity.collections": {

"url": "https://packages.unity.com"
},
"com.unity.ide.rider": {
"version": "1.1.4",
"version": "2.0.7",
},
"url": "https://packages.unity.com"
},
"com.unity.ide.visualstudio": {
"version": "2.0.11",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.test-framework": "1.1.9"
},
"url": "https://packages.unity.com"
},

"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.nuget.mono-cecil": {
"version": "0.1.6-preview.2",
"depth": 1,
"source": "registry",
"dependencies": {
"nuget.mono-cecil": "0.1.6-preview"
},
"url": "https://packages.unity.com"
},
"version": "2.0.0-preview",
"depth": 3,
"version": "2.0.0",
"depth": 1,
"version": "0.9.1-preview",
"version": "0.21.1-preview",
"nuget.mono-cecil": "0.1.6-preview"
"com.unity.nuget.mono-cecil": "0.1.6-preview.2"
},
"url": "https://packages.unity.com"
},

"com.unity.collections": "0.9.0-preview.6",
"com.unity.nuget.newtonsoft-json": "1.1.2",
"com.unity.render-pipelines.core": "7.1.6",
"com.unity.simulation.capture": "0.0.10-preview.23",
"com.unity.simulation.capture": "0.0.10-preview.20",
"version": "7.3.1",
"version": "10.5.1",
"depth": 0,
"source": "registry",
"dependencies": {

},
"com.unity.render-pipelines.high-definition": {
"version": "7.3.1",
"version": "10.5.1",
"com.unity.render-pipelines.core": "7.3.1",
"com.unity.shadergraph": "7.3.1",
"com.unity.visualeffectgraph": "7.3.1",
"com.unity.render-pipelines.high-definition-config": "7.3.1"
"com.unity.render-pipelines.core": "10.5.1",
"com.unity.shadergraph": "10.5.1",
"com.unity.visualeffectgraph": "10.5.1",
"com.unity.render-pipelines.high-definition-config": "10.5.1"
"version": "7.3.1",
"version": "10.5.1",
"com.unity.render-pipelines.core": "7.3.1"
"com.unity.render-pipelines.core": "10.5.1"
"url": "https://packages.unity.com"
},
"com.unity.searcher": {
"version": "4.3.2",
"depth": 2,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.settings-manager": {
"version": "1.0.1",
"depth": 1,
"source": "registry",
"dependencies": {},
"version": "7.3.1",
"version": "10.5.1",
"com.unity.render-pipelines.core": "7.3.1"
"com.unity.render-pipelines.core": "10.5.1",
"com.unity.searcher": "4.3.2"
"depth": 1,
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.simulation.core": "0.0.10-preview.25"

"url": "https://packages.unity.com"
},
"com.unity.simulation.core": {
"version": "0.0.10-preview.25",
"depth": 2,
"version": "0.0.10-preview.26",
"depth": 0,
},
"url": "https://packages.unity.com"
},
"com.unity.sysroot": {
"version": "0.1.19-preview",
"depth": 1,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.sysroot.linux-x86_64": {
"version": "0.1.14-preview",
"depth": 1,
"source": "registry",
"dependencies": {
"com.unity.sysroot": "0.1.18-preview"
"version": "1.1.20",
"version": "1.1.27",
"depth": 0,
"source": "registry",
"dependencies": {

"url": "https://packages.unity.com"
},
"com.unity.testtools.codecoverage": {
"version": "0.2.2-preview",
"version": "1.1.0",
"com.unity.test-framework": "1.0.16"
"com.unity.test-framework": "1.0.16",
"com.unity.settings-manager": "1.0.1"
"version": "2.0.1",
"version": "3.0.6",
"depth": 0,
"source": "registry",
"dependencies": {

},
"com.unity.toolchain.win-x86_64-linux-x86_64": {
"version": "0.1.21-preview",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.sysroot": "0.1.19-preview",
"com.unity.sysroot.linux-x86_64": "0.1.14-preview"
},
"url": "https://packages.unity.com"
},
"com.unity.ugui": {
"version": "1.0.0",
"depth": 0,

}
},
"com.unity.visualeffectgraph": {
"version": "7.3.1",
"version": "10.5.1",
"com.unity.shadergraph": "7.3.1"
"com.unity.shadergraph": "10.5.1",
"com.unity.render-pipelines.core": "10.5.1"
},
"url": "https://packages.unity.com"
},

},
"nuget.mono-cecil": {
"version": "0.1.6-preview",
"depth": 1,
"depth": 2,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"

"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.ui": "1.0.0",
"com.unity.modules.imgui": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0",
"com.unity.modules.uielementsnative": "1.0.0"
}
},
"com.unity.modules.uielementsnative": {
"version": "1.0.0",
"depth": 1,
"source": "builtin",
"dependencies": {
"com.unity.modules.ui": "1.0.0",
"com.unity.modules.imgui": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0"
}

3
TestProjects/PerceptionHDRP/ProjectSettings/EditorBuildSettings.asset


serializedVersion: 2
m_Scenes:
- enabled: 1
path: Assets/Scenes/PoseSample.unity
guid: 290fafafd5ac84d4388b8a6b129c6f20
- enabled: 1
path: Assets/Scenes/SampleScene.unity
guid: 9fc0d4010bbf28b4594072e72b8655ab
m_configObjects: {}

15
TestProjects/PerceptionHDRP/ProjectSettings/EditorSettings.asset


--- !u!159 &1
EditorSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
m_ExternalVersionControlSupport: Visible Meta Files
serializedVersion: 11
m_SerializationMode: 2
m_LineEndingsForNewScripts: 2
m_DefaultBehaviorMode: 0

m_EtcTextureBestCompressor: 4
m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref
m_ProjectGenerationRootNamespace:
m_CollabEditorSettings:
inProgressEnabled: 1
m_CachingShaderPreprocessor: 1
m_PrefabModeAllowAutoSave: 1
m_ShowLightmapResolutionOverlay: 1
m_GameObjectNamingDigits: 1
m_GameObjectNamingScheme: 0
m_AssetNamingUsesSpace: 1
m_SerializeInlineMappingsOnOneLine: 0
m_DisableCookiesInLightmapper: 0
m_AssetPipelineMode: 1
m_CacheServerMode: 0
m_CacheServerEndpoint:

m_CacheServerEnableAuth: 0
m_CacheServerEnableTls: 0

3
TestProjects/PerceptionHDRP/ProjectSettings/GraphicsSettings.asset


m_LensFlare:
m_Mode: 1
m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
m_VideoShadersIncludeMode: 2
m_AlwaysIncludedShaders:
- {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 16001, guid: 0000000000000000f000000000000000, type: 0}

m_AlbedoSwatchInfos: []
m_LightsUseLinearIntensity: 1
m_LightsUseColorTemperature: 1
m_DefaultRenderingLayerMask: 257
m_AllowEnlightenSupportForUpgradedProject: 0

4
TestProjects/PerceptionHDRP/ProjectSettings/HDRPProjectSettings.asset


m_Name:
m_EditorClassIdentifier:
version: 1
m_DefaultScenePrefabSaved: {fileID: 0}
m_DefaultDXRScenePrefabSaved: {fileID: 0}
m_ProjectSettingFolderPath: HDRPDefaultResources
m_WizardPopupAtStart: 0
m_WizardPopupAlreadyShownOnce: 0

m_LastMaterialVersion: 2
m_LastMaterialVersion: 11

7
TestProjects/PerceptionHDRP/ProjectSettings/PackageManagerSettings.asset


m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 13960, guid: 0000000000000000e000000000000000, type: 0}
m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}
m_EnablePreviewPackages: 0
m_EnablePackageDependencies: 0
m_AdvancedSettingsExpanded: 1
m_ScopedRegistriesSettingsExpanded: 1
oneTimeWarningShown: 0
m_Registries:

m_Scopes: []
m_IsDefault: 1
m_Capabilities: 7
m_UserSelectedRegistryName:
m_UserAddingNewScopedRegistry: 0
m_RegistryInfoDraft:

m_Url:
m_Scopes: []
m_IsDefault: 0
m_Capabilities: 0
m_Modified: 0
m_Name:
m_Url:

83
TestProjects/PerceptionHDRP/ProjectSettings/ProjectSettings.asset


--- !u!129 &1
PlayerSettings:
m_ObjectHideFlags: 0
serializedVersion: 20
serializedVersion: 22
productGUID: 57f77c262a9af434b9423af9c6b04c37
AndroidProfiler: 0
AndroidFilterTouchesWhenObscured: 0

m_StereoRenderingPath: 0
m_ActiveColorSpace: 1
m_MTRendering: 1
mipStripping: 0
numberOfMipsStripped: 0
m_StackTraceTypes: 010000000100000001000000010000000100000001000000
iosShowActivityIndicatorOnLoading: -1
androidShowActivityIndicatorOnLoading: -1

stadiaTargetFramerate: 0
vulkanNumSwapchainBuffers: 2
vulkanEnableSetSRGBWrite: 0
vulkanEnablePreTransform: 0
vulkanEnableLateAcquireNextImage: 0
m_SupportedAspectRatios:
4:3: 1

xboxOneDisableKinectGpuReservation: 1
xboxOneEnable7thCore: 1
vrSettings:
cardboard:
depthFormat: 0
enableTransitionView: 0
daydream:
depthFormat: 0
useSustainedPerformanceMode: 0
enableVideoLayer: 0
useProtectedVideoMemory: 0
minimumSupportedHeadTracking: 0
maximumSupportedHeadTracking: 1
hololens:
depthFormat: 1
depthBufferSharingEnabled: 1
lumin:
depthFormat: 0
frameTiming: 2
enableGLCache: 0
glCacheMaxBlobSize: 524288
glCacheMaxFileSize: 8388608
oculus:
sharedDepthBuffer: 1
dashSupport: 1
lowOverheadMode: 0
protectedContext: 0
v2Signing: 1
enable360StereoCapture: 0
isWsaHolographicRemotingEnabled: 0
enableFrameTimingStats: 0

androidSupportedAspectRatio: 1
androidMaxAspectRatio: 2.1
applicationIdentifier:
Standalone: com.unity.PerceptionTest
buildNumber: {}
Standalone: com.DefaultCompany.PerceptionHDRP
buildNumber:
Standalone: 0
iPhone: 0
tvOS: 0
overrideDefaultApplicationIdentifier: 0
AndroidBundleVersionCode: 1
AndroidMinSdkVersion: 19
AndroidTargetSdkVersion: 0

iOSLaunchScreeniPadFillPct: 100
iOSLaunchScreeniPadSize: 100
iOSLaunchScreeniPadCustomXibPath:
iOSUseLaunchScreenStoryboard: 0
iOSLaunchScreeniPadCustomStoryboardPath:
iOSDeviceRequirements: []
iOSURLSchemes: []
iOSBackgroundModes: 0

iOSRequireARKit: 0
iOSAutomaticallyDetectAndAddCapabilities: 1
appleEnableProMotion: 0
shaderPrecisionModel: 0
useCustomMainManifest: 0
useCustomLauncherManifest: 0
useCustomMainGradleTemplate: 0
useCustomLauncherGradleManifest: 0
useCustomBaseGradleTemplate: 0
useCustomGradlePropertiesTemplate: 0
useCustomProguardFile: 0
AndroidTargetArchitectures: 1
AndroidSplashScreenScale: 0
androidSplashScreen: {fileID: 0}

height: 180
banner: {fileID: 0}
androidGamepadSupportLevel: 0
AndroidMinifyWithR8: 0
AndroidMinifyRelease: 0
AndroidMinifyDebug: 0
AndroidValidateAppBundleSize: 1
AndroidAppBundleSizeToValidate: 150
m_BuildTargetIcons: []

- m_BuildTarget: MacStandaloneSupport
m_APIs: 10000000
m_Automatic: 0
- m_BuildTarget: iOSSupport
m_APIs: 10000000
m_Automatic: 1
m_BuildTargetVRSettings: []
openGLRequireES31: 0
openGLRequireES31AEP: 0

tvOS: 1
m_BuildTargetGroupLightmapEncodingQuality: []
m_BuildTargetGroupLightmapSettings: []
m_BuildTargetNormalMapEncoding: []
playModeTestRunnerEnabled: 0
runPlayModeTestAsEditModeTest: 0
actionOnDotNetUnhandledException: 1

cameraUsageDescription:
locationUsageDescription:
microphoneUsageDescription:
switchNMETAOverride:
switchNetLibKey:
switchSocketMemoryPoolSize: 6144
switchSocketAllocatorPoolSize: 128

switchUseGOLDLinker: 0
switchApplicationID: 0x01004b9000490000
switchNSODependencies:
switchTitleNames_0:

switchTitleNames_12:
switchTitleNames_13:
switchTitleNames_14:
switchTitleNames_15:
switchPublisherNames_0:
switchPublisherNames_1:
switchPublisherNames_2:

switchPublisherNames_12:
switchPublisherNames_13:
switchPublisherNames_14:
switchPublisherNames_15:
switchIcons_0: {fileID: 0}
switchIcons_1: {fileID: 0}
switchIcons_2: {fileID: 0}

switchIcons_12: {fileID: 0}
switchIcons_13: {fileID: 0}
switchIcons_14: {fileID: 0}
switchIcons_15: {fileID: 0}
switchSmallIcons_0: {fileID: 0}
switchSmallIcons_1: {fileID: 0}
switchSmallIcons_2: {fileID: 0}

switchSmallIcons_12: {fileID: 0}
switchSmallIcons_13: {fileID: 0}
switchSmallIcons_14: {fileID: 0}
switchSmallIcons_15: {fileID: 0}
switchManualHTML:
switchAccessibleURLs:
switchLegalInformation:

switchSocketInitializeEnabled: 1
switchNetworkInterfaceManagerInitializeEnabled: 1
switchPlayerConnectionEnabled: 1
switchUseNewStyleFilepaths: 0
switchUseMicroSleepForYield: 1
switchMicroSleepForYieldTime: 25
ps4NPAgeRating: 12
ps4NPTitleSecret:
ps4NPTrophyPackPath:

ps4videoRecordingFeaturesUsed: 0
ps4contentSearchFeaturesUsed: 0
ps4CompatibilityPS5: 0
ps4AllowPS5Detection: 0
ps4GPU800MHz: 1
ps4attribEyeToEyeDistanceSettingVR: 0
ps4IncludedModules: []

webGLAnalyzeBuildSize: 0
webGLUseEmbeddedResources: 0
webGLCompressionFormat: 0
webGLWasmArithmeticExceptions: 0
webGLWasmStreaming: 0
webGLDecompressionFallback: 0
additionalCompilerArguments: {}
platformArchitecture: {}
scriptingBackend:
Standalone: 0

suppressCommonWarnings: 1
useDeterministicCompilation: 1
useReferenceAssemblies: 1
enableRoslynAnalyzers: 1
additionalIl2CppArgs:
scriptingRuntimeVersion: 1
gcIncremental: 0

XboxOneXTitleMemory: 8
XboxOneOverrideIdentityName:
XboxOneOverrideIdentityPublisher:
vrEditorSettings:
daydream:
daydreamIconForeground: {fileID: 0}
daydreamIconBackground: {fileID: 0}
vrEditorSettings: {}
cloudServicesEnabled: {}
luminIcon:
m_Name:

m_VersionCode: 1
m_VersionName:
apiCompatibilityLevel: 6
activeInputHandler: 0
qualitySettingsNames: []
enableNativePlatformBackendsForNewInputSystem: 0
disableOldInputManagerSupport: 0
virtualTexturingSupportEnabled: 0

4
TestProjects/PerceptionHDRP/ProjectSettings/ProjectVersion.txt


m_EditorVersion: 2019.4.19f1
m_EditorVersionWithRevision: 2019.4.19f1 (ca5b14067cec)
m_EditorVersion: 2020.3.16f1
m_EditorVersionWithRevision: 2020.3.16f1 (049d6eca3c44)

2
TestProjects/PerceptionHDRP/ProjectSettings/QualitySettings.asset


realtimeReflectionProbes: 1
billboardsFaceCameraPosition: 1
vSyncCount: 1
lodBias: 2
lodBias: 1
maximumLODLevel: 0
streamingMipmapsActive: 0
streamingMipmapsAddAllCameras: 1

1
TestProjects/PerceptionHDRP/ProjectSettings/UnityConnectSettings.asset


m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
m_EventUrl: https://cdp.cloud.unity3d.com/v1/events
m_ConfigUrl: https://config.uca.cloud.unity3d.com
m_DashboardUrl: https://dashboard.unity3d.com
m_TestInitMode: 0
CrashReportingSettings:
m_EventUrl: https://perf-events.cloud.unity3d.com

2
TestProjects/PerceptionHDRP/ProjectSettings/VFXManager.asset


m_RenderPipeSettingsPath:
m_FixedTimeStep: 0.016666668
m_MaxDeltaTime: 0.05
m_CompiledVersion: 2
m_RuntimeVersion: 12

71
TestProjects/PerceptionURP/Assets/Human Pose Labeling and Randomization/Models and Animations/LabeledAndRandomized.prefab


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &4295273093489125888
--- !u!1 &6018108664084516484
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6798856831628976836}
- component: {fileID: 787957711928879280}
m_Layer: 0
m_Name: LeftEar
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6798856831628976836
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6018108664084516484}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.047, y: -0.095, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 460271976872290021}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &787957711928879280
m_GameObject: {fileID: 8917933090883489511}
m_GameObject: {fileID: 6018108664084516484}
m_Script: {fileID: 11500000, guid: 8b33f0bc2b78db642a758f07826d0dd0, type: 3}
m_Script: {fileID: 11500000, guid: 8cf4fa374b134b1680755f8280ae8e7d, type: 3}
labels:
- Character
useAutoLabeling: 0
autoLabelingSchemeType:
templateInformation:
- template: {fileID: 11400000, guid: a29b79d8ce98945a0855b1addec08d86, type: 2}
label: left_ear
--- !u!114 &1543322299
MonoBehaviour:
m_ObjectHideFlags: 0

range:
minimum: 0
maximum: 1
--- !u!114 &4295273093489125888
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8917933090883489511}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8b33f0bc2b78db642a758f07826d0dd0, type: 3}
m_Name:
m_EditorClassIdentifier:
labels:
- Character
useAutoLabeling: 0
autoLabelingSchemeType:
--- !u!1001 &8575897352412525494
PrefabInstance:
m_ObjectHideFlags: 0

propertyPath: m_Name
value: LabeledAndRandomized
objectReference: {fileID: 0}
- target: {fileID: 5866666021909216657, guid: 1f279db2ebaa049d4aff8b82b6c0a1e7,
type: 3}
propertyPath: m_Controller
value:
objectReference: {fileID: 9100000, guid: 5a4ece82c4ce4894babb282606853fc6, type: 2}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 1f279db2ebaa049d4aff8b82b6c0a1e7, type: 3}
--- !u!1 &8917933090883489511 stripped

m_PrefabInstance: {fileID: 8575897352412525494}
m_PrefabAsset: {fileID: 0}
--- !u!4 &460271976872290021 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 8169674691431683411, guid: 1f279db2ebaa049d4aff8b82b6c0a1e7,
type: 3}
m_PrefabInstance: {fileID: 8575897352412525494}
m_PrefabAsset: {fileID: 0}

229
TestProjects/PerceptionURP/Assets/Prefabs/KeypointCube.prefab


m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3710685713387292134}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0.5, y: -0.5, z: 0.5}
m_LocalPosition: {x: 0.628, y: 0.031000003, z: -0.7900001}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 3710685714995308720}

m_Script: {fileID: 11500000, guid: 8cf4fa374b134b1680755f8280ae8e7d, type: 3}
m_Name:
m_EditorClassIdentifier:
templateInformation:
- template: {fileID: 11400000, guid: 90217544e06a7b1408543cd72382ccbb, type: 2}
label: FrontBottomRight
templateInformation: []
labels:
- FrontBottomRight
selfOcclusionDistanceSource: 0
selfOcclusionDistance: 0.1
--- !u!1 &3710685714022253438
GameObject:
m_ObjectHideFlags: 0

m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3710685714022253438}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0.5, y: -0.5, z: -0.5}
m_LocalPosition: {x: 0.628, y: 0.031000003, z: -0.997}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 3710685714995308720}

m_Script: {fileID: 11500000, guid: 8cf4fa374b134b1680755f8280ae8e7d, type: 3}
m_Name:
m_EditorClassIdentifier:
templateInformation:
- template: {fileID: 11400000, guid: 90217544e06a7b1408543cd72382ccbb, type: 2}
label: BackBottomRight
templateInformation: []
labels:
- BackBottomRight
selfOcclusionDistanceSource: 0
selfOcclusionDistance: 0.1
--- !u!1 &3710685714250655251
GameObject:
m_ObjectHideFlags: 0

m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3710685714250655251}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0.5, y: 0.5, z: -0.5}
m_LocalPosition: {x: 0.628, y: 1.031, z: -0.997}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 3710685714995308720}

m_Script: {fileID: 11500000, guid: 8cf4fa374b134b1680755f8280ae8e7d, type: 3}
m_Name:
m_EditorClassIdentifier:
templateInformation:
- template: {fileID: 11400000, guid: 90217544e06a7b1408543cd72382ccbb, type: 2}
label: BackTopRight
templateInformation: []
labels:
- BackTopRight
selfOcclusionDistanceSource: 0
selfOcclusionDistance: 0.1
--- !u!1 &3710685714462346527
GameObject:
m_ObjectHideFlags: 0

m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3710685714462346527}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.5, y: 0.5, z: 0.5}
m_LocalPosition: {x: -0.925, y: 1.031, z: -0.7900001}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 3710685714995308720}

m_Script: {fileID: 11500000, guid: 8cf4fa374b134b1680755f8280ae8e7d, type: 3}
m_Name:
m_EditorClassIdentifier:
templateInformation:
- template: {fileID: 11400000, guid: 90217544e06a7b1408543cd72382ccbb, type: 2}
label: FrontTopLeft
templateInformation: []
labels:
- FrontTopLeft
selfOcclusionDistanceSource: 0
selfOcclusionDistance: 0.08
--- !u!1 &3710685714481788901
GameObject:
m_ObjectHideFlags: 0

m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3710685714481788901}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.5, y: -0.5, z: -0.5}
m_LocalPosition: {x: -0.925, y: 0.031000003, z: -0.997}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 3710685714995308720}

m_Script: {fileID: 11500000, guid: 8cf4fa374b134b1680755f8280ae8e7d, type: 3}
m_Name:
m_EditorClassIdentifier:
templateInformation:
- template: {fileID: 11400000, guid: 90217544e06a7b1408543cd72382ccbb, type: 2}
label: BackBottomLeft
templateInformation: []
labels:
- BackBottomLeft
selfOcclusionDistanceSource: 0
selfOcclusionDistance: 0.08
--- !u!1 &3710685714524957768
GameObject:
m_ObjectHideFlags: 0

m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3710685714524957768}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0.5, y: 0.5, z: 0.5}
m_LocalPosition: {x: 0.628, y: 1.031, z: -0.7900001}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 3710685714995308720}

m_Script: {fileID: 11500000, guid: 8cf4fa374b134b1680755f8280ae8e7d, type: 3}
m_Name:
m_EditorClassIdentifier:
templateInformation:
- template: {fileID: 11400000, guid: 90217544e06a7b1408543cd72382ccbb, type: 2}
label: FrontTopRight
templateInformation: []
labels:
- FrontTopRight
selfOcclusionDistanceSource: 0
selfOcclusionDistance: 0.1
--- !u!1 &3710685714572991348
GameObject:
m_ObjectHideFlags: 0

m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3710685714572991348}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.5, y: 0.5, z: -0.5}
m_LocalPosition: {x: -0.925, y: 1.031, z: -0.997}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 3710685714995308720}

m_Script: {fileID: 11500000, guid: 8cf4fa374b134b1680755f8280ae8e7d, type: 3}
m_Name:
m_EditorClassIdentifier:
templateInformation:
- template: {fileID: 11400000, guid: 90217544e06a7b1408543cd72382ccbb, type: 2}
label: BackTopLeft
templateInformation: []
labels:
- BackTopLeft
selfOcclusionDistanceSource: 0
selfOcclusionDistance: 0.08
--- !u!1 &3710685714995308732
GameObject:
m_ObjectHideFlags: 0

serializedVersion: 6
m_Component:
- component: {fileID: 3710685714995308720}
- component: {fileID: 3710685714995308735}
- component: {fileID: 3710685714995308734}
- component: {fileID: 3710685714995308733}
m_Name: Cube
m_Name: KeypointCube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0

m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3710685714995308732}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.152, y: 0.528, z: -0.897}
m_LocalScale: {x: 1.559239, y: 1.0357355, z: 0.20697539}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1.02, z: 1}
m_Children:
- {fileID: 3710685714462346512}
- {fileID: 3710685714524957769}

- {fileID: 3710685714250655252}
- {fileID: 3710685714481788902}
- {fileID: 3710685714022253439}
- {fileID: 3493035157377133359}
--- !u!33 &3710685714995308735
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3710685714995308732}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &3710685714995308734
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3710685714995308732}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, 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
--- !u!65 &3710685714995308733
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3710685714995308732}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 2
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!114 &3710685714995308721
MonoBehaviour:
m_ObjectHideFlags: 0

m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3710685715225028277}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.5, y: -0.5, z: 0.5}
m_LocalPosition: {x: -0.925, y: 0.031, z: -0.79}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 3710685714995308720}

m_Script: {fileID: 11500000, guid: 8cf4fa374b134b1680755f8280ae8e7d, type: 3}
m_Name:
m_EditorClassIdentifier:
templateInformation:
- template: {fileID: 11400000, guid: 90217544e06a7b1408543cd72382ccbb, type: 2}
label: FrontBottomLeft
templateInformation: []
labels:
- FrontBottomLeft
selfOcclusionDistanceSource: 0
selfOcclusionDistance: 0.08
--- !u!1 &7514402373830187968
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3493035157377133359}
- component: {fileID: 7334580722677551881}
- component: {fileID: 7437554014925818906}
m_Layer: 0
m_Name: Object
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3493035157377133359
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7514402373830187968}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.152, y: 0.528, z: -0.897}
m_LocalScale: {x: 1.559239, y: 1.0357355, z: 0.20697539}
m_Children: []
m_Father: {fileID: 3710685714995308720}
m_RootOrder: 8
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!23 &7334580722677551881
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7514402373830187968}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, 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
--- !u!33 &7437554014925818906
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7514402373830187968}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}

434
TestProjects/PerceptionURP/Assets/Scenes/PoseSample.unity


debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &613667316
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 613667320}
- component: {fileID: 613667321}
m_Layer: 0
m_Name: KeypointCube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &613667320
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 613667316}
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:
- {fileID: 920657918}
- {fileID: 218072775528583783}
m_Father: {fileID: 0}
m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &613667321
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 613667316}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8b33f0bc2b78db642a758f07826d0dd0, type: 3}
m_Name:
m_EditorClassIdentifier:
labels:
- Crate
useAutoLabeling: 0
autoLabelingSchemeType:
--- !u!1 &622079292 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 3710685714995308732, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
m_PrefabInstance: {fileID: 1329445977}
m_PrefabAsset: {fileID: 0}
--- !u!114 &622079293
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 622079292}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 673a227032a8e4940b9828c5b6f852ab, type: 3}
m_Name:
m_EditorClassIdentifier:
yDegreesPerSecond: 60
--- !u!1 &920657917
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 920657918}
- component: {fileID: 920657919}
m_Layer: 0
m_Name: FrontBottomLeft
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &920657918
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 920657917}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.481, y: -0.491, z: 0.5}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 613667320}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &920657919
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 920657917}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8cf4fa374b134b1680755f8280ae8e7d, type: 3}
m_Name:
m_EditorClassIdentifier:
templateInformation: []
labels:
- FrontBottomLeft
selfOcclusionDistanceSource: 0
selfOcclusionDistance: 0.98
--- !u!1 &963194225
GameObject:
m_ObjectHideFlags: 0

m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 963194225}
m_LocalRotation: {x: 0.11266163, y: -0.26002073, z: 0.030562058, w: 0.95852107}
m_LocalPosition: {x: 1.4392753, y: 1.2635702, z: -2.3026767}
m_LocalScale: {x: 36.249973, y: 36.249973, z: 36.249973}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.074, y: 0, z: -2.715}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0

m_Script: {fileID: 11500000, guid: 4467405dbcbd3d64ab4363e9ae8bb813, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Labelers:
- id: 0
- id: 1
description: The main camera
captureRgbImages: 1
firstCaptureFrame: 0

framesBetweenCaptures: 0
m_Labelers:
- id: 0
- id: 1
showVisualizations: 1
references:
version: 1

annotationId: 8b3ef246-daa7-4dd5-a0e8-a943f6e7f8c2
idLabelConfig: {fileID: 11400000, guid: cedcacfb1d9beb34fbbb231166c472fe,
type: 2}
objectFilter: 0
selfOcclusionDistance: 0.15
animationPoseConfigs: []
00000001:
type: {class: KeypointLabeler, ns: UnityEngine.Perception.GroundTruth, asm: Unity.Perception.Runtime}

annotationId: 8b3ef246-daa7-4dd5-a0e8-a943f6e7f8c3
idLabelConfig: {fileID: 11400000, guid: cedcacfb1d9beb34fbbb231166c472fe,
type: 2}
objectFilter: 0
selfOcclusionDistance: 0.15
animationPoseConfigs: []
--- !u!114 &963194231
MonoBehaviour:

- id: 0
constants:
randomSeed: 539662031
totalIterations: 20
totalIterations: 2000
instanceCount: 1
instanceIndex: 0
framesPerIteration: 1

m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 2
m_RootOrder: 3
--- !u!1001 &1329445977
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 3710685714995308720, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_RootOrder
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308720, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_LocalScale.x
value: 0.65749
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308720, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_LocalScale.y
value: 0.6706398
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308720, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_LocalScale.z
value: 0.65749
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308720, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_LocalPosition.x
value: -0.671
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308720, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_LocalPosition.y
value: -0.338
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308720, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_LocalPosition.z
value: 0.08
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308720, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_LocalRotation.w
value: 0.93963635
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308720, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_LocalRotation.x
value: 0.2947149
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308720, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_LocalRotation.y
value: -0.16589014
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308720, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_LocalRotation.z
value: 0.052031077
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308720, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 34.828003
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308720, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: -20.024
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308720, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308732, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_Name
value: KeypointCube (1)
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308732, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: da3b4cd41011c1b488592ed975cbb467, type: 3}
--- !u!1 &1414656266
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1414656267}
- component: {fileID: 1414656268}
m_Layer: 0
m_Name: RightEar
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1414656267
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1414656266}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.047, y: 0.093, z: -0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 1667437135}
m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1414656268
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1414656266}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8cf4fa374b134b1680755f8280ae8e7d, type: 3}
m_Name:
m_EditorClassIdentifier:
templateInformation: []
labels:
- right_ear
selfOcclusionDistanceSource: 0
selfOcclusionDistance: 0.15
--- !u!1 &1427719271
GameObject:
m_ObjectHideFlags: 1

m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 3
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1488440284
GameObject:

m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 4
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
--- !u!1001 &1667437134
PrefabInstance:

- target: {fileID: 8109026111838458973, guid: 09c632a4eeff8204c87fa56b8632d9ba,
type: 3}
propertyPath: m_RootOrder
value: 1
value: 2
objectReference: {fileID: 0}
- target: {fileID: 8109026111838458973, guid: 09c632a4eeff8204c87fa56b8632d9ba,
type: 3}

propertyPath: m_Name
value: LabeledAndRandomized
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 09c632a4eeff8204c87fa56b8632d9ba, type: 3}
--- !u!1001 &3710685714535070024
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 3710685714995308720, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_RootOrder
value: 5
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308720, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_LocalPosition.x
value: -0.152
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308720, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_LocalPosition.y
value: 0.528
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308720, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_LocalPosition.z
value: -0.897
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308720, guid: da3b4cd41011c1b488592ed975cbb467,
- target: {fileID: 8917933090883489511, guid: 09c632a4eeff8204c87fa56b8632d9ba,
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308720, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_LocalRotation.x
propertyPath: m_IsActive
- target: {fileID: 3710685714995308720, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308720, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308720, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308720, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308720, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3710685714995308732, guid: da3b4cd41011c1b488592ed975cbb467,
type: 3}
propertyPath: m_Name
value: KeypointCube
objectReference: {fileID: 0}
m_SourcePrefab: {fileID: 100100000, guid: da3b4cd41011c1b488592ed975cbb467, type: 3}
m_SourcePrefab: {fileID: 100100000, guid: 09c632a4eeff8204c87fa56b8632d9ba, type: 3}
--- !u!4 &1667437135 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 460271976872290021, guid: 09c632a4eeff8204c87fa56b8632d9ba,
type: 3}
m_PrefabInstance: {fileID: 1667437134}
m_PrefabAsset: {fileID: 0}
--- !u!4 &218072775528583783
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6572869352796365448}
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: 613667320}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &6073243769016530258
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6572869352796365448}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &6248369213839583809
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6572869352796365448}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, 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
--- !u!1 &6572869352796365448
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 218072775528583783}
- component: {fileID: 6248369213839583809}
- component: {fileID: 6073243769016530258}
m_Layer: 0
m_Name: Object
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1

241
TestProjects/PerceptionURP/Assets/Scenes/SampleScene.unity


m_Script: {fileID: 11500000, guid: d50076aff0af4515b4422166496fdd5e, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Randomizers: []
quitOnComplete: 1
serializedConstantsFileName: constants
m_Randomizers:
- id: 0
randomSeed: 539662031
totalIterations: 100
instanceCount: 1
instanceIndex: 0

00000000:
type: {class: ForegroundObjectPlacementRandomizer, ns: UnityEngine.Perception.Randomization.Randomizers.SampleRandomizers,
asm: Unity.Perception.Runtime}
data:
m_Enabled: 1
collapsed: 0
depth: 0
separationDistance: 2
placementArea: {x: 10, y: 10}
prefabs:
collapsed: 0
probabilities:
- 1
uniform: 1
m_Sampler:
id: 1
m_Categories:
- {fileID: 4885438799896782722, guid: 15f5240909c302347a9d146de3bbb903, type: 3}
00000001:
type: {class: UniformSampler, ns: UnityEngine.Perception.Randomization.Samplers,
asm: Unity.Perception.Runtime}
data:
range:
minimum: 0
maximum: 1
--- !u!4 &85886258
Transform:
m_ObjectHideFlags: 0

m_Father: {fileID: 0}
m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &411238276
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 411238281}
- component: {fileID: 411238280}
- component: {fileID: 411238279}
- component: {fileID: 411238278}
- component: {fileID: 411238277}
- component: {fileID: 411238282}
m_Layer: 0
m_Name: Crate
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &411238277
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 411238276}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8b33f0bc2b78db642a758f07826d0dd0, type: 3}
m_Name:
m_EditorClassIdentifier:
labels:
- Crate
useAutoLabeling: 0
autoLabelingSchemeType:
--- !u!65 &411238278
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 411238276}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 2
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &411238279
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 411238276}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, 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
--- !u!33 &411238280
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 411238276}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!4 &411238281
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 411238276}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 121.42, y: 72.4, z: -161.73}
m_LocalScale: {x: 15, y: 15, z: 15}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &411238282
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 411238276}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 673a227032a8e4940b9828c5b6f852ab, type: 3}
m_Name:
m_EditorClassIdentifier:
yDegreesPerSecond: 180
--- !u!1 &705507993
GameObject:
m_ObjectHideFlags: 0

m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 963194225}
m_LocalRotation: {x: -0.22882307, y: 0.124303445, z: -0.029468497, w: -0.96504945}
m_LocalPosition: {x: 116.52855, y: 91.11087, z: -194.85445}
m_LocalScale: {x: 36.249973, y: 36.249973, z: 36.249973}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -18.81}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 4

m_Script: {fileID: 11500000, guid: 4467405dbcbd3d64ab4363e9ae8bb813, type: 3}
m_Name:
m_EditorClassIdentifier:
description: The main camera
period: 0.0166
startTime: 0
captureRgbImages: 1
description: The main camera
captureRgbImages: 1
firstCaptureFrame: 0
captureTriggerMode: 0
manualSensorAffectSimulationTiming: 0
simulationDeltaTime: 0.0166
framesBetweenCaptures: 0
showVisualizations: 1
references:
version: 1

- Terrain
useAutoLabeling: 0
autoLabelingSchemeType:
--- !u!1001 &4885438800022525958
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 4885438799896782722, guid: 15f5240909c302347a9d146de3bbb903,
type: 3}
propertyPath: m_Name
value: Crate
objectReference: {fileID: 0}
- target: {fileID: 4885438799896782735, guid: 15f5240909c302347a9d146de3bbb903,
type: 3}
propertyPath: m_RootOrder
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4885438799896782735, guid: 15f5240909c302347a9d146de3bbb903,
type: 3}
propertyPath: m_LocalPosition.x
value: 121.42
objectReference: {fileID: 0}
- target: {fileID: 4885438799896782735, guid: 15f5240909c302347a9d146de3bbb903,
type: 3}
propertyPath: m_LocalPosition.y
value: 72.4
objectReference: {fileID: 0}
- target: {fileID: 4885438799896782735, guid: 15f5240909c302347a9d146de3bbb903,
type: 3}
propertyPath: m_LocalPosition.z
value: -161.73
objectReference: {fileID: 0}
- target: {fileID: 4885438799896782735, guid: 15f5240909c302347a9d146de3bbb903,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4885438799896782735, guid: 15f5240909c302347a9d146de3bbb903,
type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 4885438799896782735, guid: 15f5240909c302347a9d146de3bbb903,
type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 4885438799896782735, guid: 15f5240909c302347a9d146de3bbb903,
type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 4885438799896782735, guid: 15f5240909c302347a9d146de3bbb903,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4885438799896782735, guid: 15f5240909c302347a9d146de3bbb903,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4885438799896782735, guid: 15f5240909c302347a9d146de3bbb903,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 15f5240909c302347a9d146de3bbb903, type: 3}

7
TestProjects/PerceptionURP/Assets/Settings/ForwardRenderer.asset


- {fileID: 5741507687788441411}
m_RendererFeatureMap:
postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2}
xrSystemData: {fileID: 11400000, guid: 60e1133243b97e347b653163a8c01b64, type: 2}
shaders:
blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3}
copyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3}

tileDepthInfoPS: {fileID: 0}
tileDeferredPS: {fileID: 0}
stencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3}
materialErrorPS: {fileID: 4800000, guid: 5fd9a8feb75a4b5894c241777f519d4e, type: 3}
m_OpaqueLayerMask:
serializedVersion: 2
m_Bits: 4294967295

failOperation: 0
zFailOperation: 0
m_ShadowTransparentReceive: 1
m_RenderingMode: 0
m_AccurateGbufferNormals: 0
--- !u!114 &5741507687788441411
MonoBehaviour:
m_ObjectHideFlags: 0

16
TestProjects/PerceptionURP/Packages/manifest.json


{
"dependencies": {
"com.unity.collab-proxy": "1.2.16",
"com.unity.ide.rider": "1.1.4",
"com.unity.collab-proxy": "1.7.1",
"com.unity.ide.rider": "2.0.7",
"com.unity.ide.visualstudio": "2.0.11",
"com.unity.package-validation-suite": "0.9.1-preview",
"com.unity.package-validation-suite": "0.21.1-preview",
"com.unity.render-pipelines.universal": "7.3.1",
"com.unity.render-pipelines.universal": "10.6.0",
"com.unity.test-framework": "1.1.19",
"com.unity.textmeshpro": "2.0.1",
"com.unity.timeline": "1.2.12",
"com.unity.test-framework": "1.1.27",
"com.unity.textmeshpro": "3.0.6",
"com.unity.timeline": "1.4.8",
"com.unity.toolchain.linux-x86_64": "0.1.19-preview",
"com.unity.ugui": "1.0.0",
"nuget.moq": "1.0.0",
"com.unity.modules.ai": "1.0.0",

112
TestProjects/PerceptionURP/Packages/packages-lock.json


"url": "https://packages.unity.com"
},
"com.unity.collab-proxy": {
"version": "1.2.16",
"version": "1.7.1",
"dependencies": {},
"dependencies": {
"com.unity.nuget.newtonsoft-json": "2.0.0"
},
"url": "https://packages.unity.com"
},
"com.unity.collections": {

},
"com.unity.ext.nunit": {
"version": "1.0.6",
"depth": 2,
"depth": 1,
"version": "1.1.4",
"version": "2.0.7",
"depth": 0,
"source": "registry",
"dependencies": {

},
"com.unity.ide.visualstudio": {
"version": "2.0.11",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.test-framework": "1.1.9"
},
"url": "https://packages.unity.com"
},
"com.unity.ide.vscode": {
"version": "1.2.3",
"depth": 0,

"depth": 2,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.nuget.mono-cecil": {
"version": "0.1.6-preview.2",
"depth": 1,
"source": "registry",
"dependencies": {
"nuget.mono-cecil": "0.1.6-preview"
},
"version": "2.0.0-preview",
"depth": 3,
"version": "2.0.0",
"depth": 1,
"version": "0.9.1-preview",
"version": "0.21.1-preview",
"nuget.mono-cecil": "0.1.6-preview"
"com.unity.nuget.mono-cecil": "0.1.6-preview.2"
},
"url": "https://packages.unity.com"
},

}
},
"com.unity.render-pipelines.core": {
"version": "7.3.1",
"version": "10.6.0",
"depth": 1,
"source": "registry",
"dependencies": {

},
"com.unity.render-pipelines.universal": {
"version": "7.3.1",
"version": "10.6.0",
"com.unity.render-pipelines.core": "7.3.1",
"com.unity.shadergraph": "7.3.1"
"com.unity.mathematics": "1.1.0",
"com.unity.render-pipelines.core": "10.6.0",
"com.unity.shadergraph": "10.6.0"
"com.unity.searcher": {
"version": "4.3.2",
"depth": 2,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"version": "7.3.1",
"version": "10.6.0",
"com.unity.render-pipelines.core": "7.3.1"
"com.unity.render-pipelines.core": "10.6.0",
"com.unity.searcher": "4.3.2"
},
"url": "https://packages.unity.com"
},

},
"url": "https://packages.unity.com"
},
"com.unity.sysroot": {
"version": "0.1.19-preview",
"depth": 1,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.sysroot.linux-x86_64": {
"version": "0.1.14-preview",
"depth": 1,
"source": "registry",
"dependencies": {
"com.unity.sysroot": "0.1.18-preview"
},
"url": "https://packages.unity.com"
},
"version": "1.1.19",
"version": "1.1.27",
"com.unity.ext.nunit": "1.0.5",
"com.unity.ext.nunit": "1.0.6",
"com.unity.modules.imgui": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0"
},

"url": "https://packages.unity.com"
},
"com.unity.textmeshpro": {
"version": "2.0.1",
"version": "3.0.6",
"depth": 0,
"source": "registry",
"dependencies": {

},
"com.unity.timeline": {
"version": "1.2.12",
"version": "1.4.8",
"dependencies": {},
"dependencies": {
"com.unity.modules.director": "1.0.0",
"com.unity.modules.animation": "1.0.0",
"com.unity.modules.audio": "1.0.0",
"com.unity.modules.particlesystem": "1.0.0"
},
"url": "https://packages.unity.com"
},
"com.unity.toolchain.linux-x86_64": {
"version": "0.1.19-preview",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.sysroot": "0.1.19-preview",
"com.unity.sysroot.linux-x86_64": "0.1.14-preview"
},
"url": "https://packages.unity.com"
},
"com.unity.ugui": {

},
"nuget.mono-cecil": {
"version": "0.1.6-preview",
"depth": 1,
"depth": 2,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"

"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.ui": "1.0.0",
"com.unity.modules.imgui": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0",
"com.unity.modules.uielementsnative": "1.0.0"
}
},
"com.unity.modules.uielementsnative": {
"version": "1.0.0",
"depth": 1,
"source": "builtin",
"dependencies": {
"com.unity.modules.ui": "1.0.0",
"com.unity.modules.imgui": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0"
}

5
TestProjects/PerceptionURP/ProjectSettings/EditorBuildSettings.asset


EditorBuildSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Scenes: []
m_Scenes:
- enabled: 1
path: Assets/Scenes/PoseSample.unity
guid: 290fafafd5ac84d4388b8a6b129c6f20
m_configObjects: {}

7
TestProjects/PerceptionURP/ProjectSettings/PackageManagerSettings.asset


m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 13960, guid: 0000000000000000e000000000000000, type: 0}
m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}
m_EnablePreviewPackages: 0
m_EnablePackageDependencies: 0
m_AdvancedSettingsExpanded: 1
m_ScopedRegistriesSettingsExpanded: 1
oneTimeWarningShown: 0
m_Registries:

m_Scopes: []
m_IsDefault: 1
m_Capabilities: 7
m_UserSelectedRegistryName:
m_UserAddingNewScopedRegistry: 0
m_RegistryInfoDraft:

m_Url:
m_Scopes: []
m_IsDefault: 0
m_Capabilities: 0
m_Modified: 0
m_Name:
m_Url:

101
TestProjects/PerceptionURP/ProjectSettings/ProjectSettings.asset


--- !u!129 &1
PlayerSettings:
m_ObjectHideFlags: 0
serializedVersion: 20
serializedVersion: 22
productGUID: c71ca984bf3bb534fa9035b7369b68b5
AndroidProfiler: 0
AndroidFilterTouchesWhenObscured: 0

m_StereoRenderingPath: 0
m_ActiveColorSpace: 1
m_MTRendering: 1
mipStripping: 0
numberOfMipsStripped: 0
m_StackTraceTypes: 010000000100000001000000010000000100000001000000
iosShowActivityIndicatorOnLoading: -1
androidShowActivityIndicatorOnLoading: -1

androidRenderOutsideSafeArea: 0
androidUseSwappy: 0
androidBlitType: 1
androidResizableWindow: 0
androidDefaultWindowWidth: 1920
androidDefaultWindowHeight: 1080
androidMinimumWindowWidth: 400
androidMinimumWindowHeight: 300
androidFullscreenMode: 1
defaultIsNativeResolution: 1
macRetinaSupport: 1
runInBackground: 1

stadiaTargetFramerate: 0
vulkanNumSwapchainBuffers: 3
vulkanEnableSetSRGBWrite: 0
vulkanEnablePreTransform: 0
vulkanEnableLateAcquireNextImage: 0
m_SupportedAspectRatios:
4:3: 1

xboxOneDisableKinectGpuReservation: 1
xboxOneEnable7thCore: 1
vrSettings:
cardboard:
depthFormat: 0
enableTransitionView: 0
daydream:
depthFormat: 0
useSustainedPerformanceMode: 0
enableVideoLayer: 0
useProtectedVideoMemory: 0
minimumSupportedHeadTracking: 0
maximumSupportedHeadTracking: 1
hololens:
depthFormat: 1
depthBufferSharingEnabled: 1
lumin:
depthFormat: 0
frameTiming: 2
enableGLCache: 0
glCacheMaxBlobSize: 524288
glCacheMaxFileSize: 8388608
oculus:
sharedDepthBuffer: 1
dashSupport: 1
lowOverheadMode: 0
protectedContext: 0
v2Signing: 1
enable360StereoCapture: 0
isWsaHolographicRemotingEnabled: 0
enableFrameTimingStats: 0

resolutionScalingMode: 0
androidSupportedAspectRatio: 1
androidMaxAspectRatio: 2.1
applicationIdentifier: {}
buildNumber: {}
applicationIdentifier:
Standalone: com.DefaultCompany.PerceptionURP
buildNumber:
Standalone: 0
iPhone: 0
tvOS: 0
overrideDefaultApplicationIdentifier: 0
AndroidBundleVersionCode: 1
AndroidMinSdkVersion: 19
AndroidTargetSdkVersion: 0

StripUnusedMeshComponents: 0
VertexChannelCompressionMask: 4054
iPhoneSdkVersion: 988
iOSTargetOSVersionString: 10.0
iOSTargetOSVersionString: 11.0
tvOSTargetOSVersionString: 10.0
tvOSTargetOSVersionString: 11.0
uIPrerenderedIcon: 0
uIRequiresPersistentWiFi: 0
uIRequiresFullScreen: 1

iOSLaunchScreeniPadFillPct: 100
iOSLaunchScreeniPadSize: 100
iOSLaunchScreeniPadCustomXibPath:
iOSUseLaunchScreenStoryboard: 0
iOSLaunchScreeniPadCustomStoryboardPath:
iOSDeviceRequirements: []
iOSURLSchemes: []
iOSBackgroundModes: 0

iOSRequireARKit: 0
iOSAutomaticallyDetectAndAddCapabilities: 1
appleEnableProMotion: 0
shaderPrecisionModel: 0
useCustomMainManifest: 0
useCustomLauncherManifest: 0
useCustomMainGradleTemplate: 0
useCustomLauncherGradleManifest: 0
useCustomBaseGradleTemplate: 0
useCustomGradlePropertiesTemplate: 0
useCustomProguardFile: 0
AndroidTargetDevices: 0
AndroidSplashScreenScale: 0
androidSplashScreen: {fileID: 0}
AndroidKeystoreName:

height: 180
banner: {fileID: 0}
androidGamepadSupportLevel: 0
chromeosInputEmulation: 1
AndroidMinifyWithR8: 0
AndroidMinifyRelease: 0
AndroidMinifyDebug: 0
AndroidValidateAppBundleSize: 1
AndroidAppBundleSizeToValidate: 100
m_BuildTargetIcons: []

m_BuildTargetGraphicsAPIs:
- m_BuildTarget: iOSSupport
m_APIs: 10000000
m_Automatic: 0
m_Automatic: 1
m_Automatic: 0
m_Automatic: 1
- m_BuildTarget: AndroidPlayer
m_APIs: 150000000b000000
m_Automatic: 0

- m_BuildTarget: WindowsStandaloneSupport
m_APIs: 02000000
m_Automatic: 0
- m_BuildTarget: LinuxStandaloneSupport
m_APIs: 15000000
m_Automatic: 0
m_BuildTargetVRSettings: []
openGLRequireES31: 0
openGLRequireES31AEP: 0

- m_BuildTarget: Standalone
m_EncodingQuality: 1
m_BuildTargetGroupLightmapSettings: []
m_BuildTargetNormalMapEncoding: []
playModeTestRunnerEnabled: 0
runPlayModeTestAsEditModeTest: 0
actionOnDotNetUnhandledException: 1

cameraUsageDescription:
locationUsageDescription:
microphoneUsageDescription:
bluetoothUsageDescription:
switchNMETAOverride:
switchNetLibKey:
switchSocketMemoryPoolSize: 6144
switchSocketAllocatorPoolSize: 128

switchUseGOLDLinker: 0
switchApplicationID: 0x01004b9000490000
switchNSODependencies:
switchTitleNames_0:

switchTitleNames_12:
switchTitleNames_13:
switchTitleNames_14:
switchTitleNames_15:
switchPublisherNames_0:
switchPublisherNames_1:
switchPublisherNames_2:

switchPublisherNames_12:
switchPublisherNames_13:
switchPublisherNames_14:
switchPublisherNames_15:
switchIcons_0: {fileID: 0}
switchIcons_1: {fileID: 0}
switchIcons_2: {fileID: 0}

switchIcons_12: {fileID: 0}
switchIcons_13: {fileID: 0}
switchIcons_14: {fileID: 0}
switchIcons_15: {fileID: 0}
switchSmallIcons_0: {fileID: 0}
switchSmallIcons_1: {fileID: 0}
switchSmallIcons_2: {fileID: 0}

switchSmallIcons_12: {fileID: 0}
switchSmallIcons_13: {fileID: 0}
switchSmallIcons_14: {fileID: 0}
switchSmallIcons_15: {fileID: 0}
switchManualHTML:
switchAccessibleURLs:
switchLegalInformation:

switchSocketInitializeEnabled: 1
switchNetworkInterfaceManagerInitializeEnabled: 1
switchPlayerConnectionEnabled: 1
switchUseNewStyleFilepaths: 0
switchUseMicroSleepForYield: 1
switchMicroSleepForYieldTime: 25
ps4NPAgeRating: 12
ps4NPTitleSecret:
ps4NPTrophyPackPath:

ps4videoRecordingFeaturesUsed: 0
ps4contentSearchFeaturesUsed: 0
ps4CompatibilityPS5: 0
ps4AllowPS5Detection: 0
ps4GPU800MHz: 1
ps4attribEyeToEyeDistanceSettingVR: 0
ps4IncludedModules: []

webGLAnalyzeBuildSize: 0
webGLUseEmbeddedResources: 0
webGLCompressionFormat: 1
webGLWasmArithmeticExceptions: 0
webGLWasmStreaming: 0
webGLDecompressionFallback: 0
additionalCompilerArguments: {}
platformArchitecture: {}
scriptingBackend:
Standalone: 0

suppressCommonWarnings: 1
useDeterministicCompilation: 1
useReferenceAssemblies: 1
enableRoslynAnalyzers: 1
additionalIl2CppArgs:
scriptingRuntimeVersion: 1
gcIncremental: 0

XboxOneXTitleMemory: 8
XboxOneOverrideIdentityName:
XboxOneOverrideIdentityPublisher:
vrEditorSettings:
daydream:
daydreamIconForeground: {fileID: 0}
daydreamIconBackground: {fileID: 0}
vrEditorSettings: {}
cloudServicesEnabled:
UNet: 1
luminIcon:

m_VersionCode: 1
m_VersionName:
apiCompatibilityLevel: 6
activeInputHandler: 0
qualitySettingsNames: []
enableNativePlatformBackendsForNewInputSystem: 0
disableOldInputManagerSupport: 0
virtualTexturingSupportEnabled: 0

4
TestProjects/PerceptionURP/ProjectSettings/ProjectVersion.txt


m_EditorVersion: 2019.4.19f1
m_EditorVersionWithRevision: 2019.4.19f1 (ca5b14067cec)
m_EditorVersion: 2020.3.17f1
m_EditorVersionWithRevision: 2020.3.17f1 (a4537701e4ab)

2
TestProjects/PerceptionURP/ProjectSettings/URPProjectSettings.asset


m_Script: {fileID: 11500000, guid: 247994e1f5a72c2419c26a37e9334c01, type: 3}
m_Name:
m_EditorClassIdentifier:
m_LastMaterialVersion: 1
m_LastMaterialVersion: 4

8
com.unity.perception/CHANGELOG.md


Added random seed field to the Run in Unity Simulation Window.
Added support for keypoint self occlusion.
Added the ability to adjust keypoint self occlusion tolerance per keypoint in keypoint template file.
Added the ability to adjust keypoint self occlusion tolerance on a user defined joint using the joint label.
Added a Keypoint Occlusion Override component which allows a user to universally scale all of the keypoint tolerances for a model.
### Changed
Increased color variety in instance segmentation images.

26
com.unity.perception/Documentation~/GroundTruth/KeypointLabeler.md


The `state` entry has three possible values:
* 0 - the keypoint either does not exist or is outside of the image's bounds
* 1 - the keypoint exists inside of the image bounds but cannot be seen because the object is not visible at its location in the image
* 2 - the keypoint exists and the object is visible at its location
* 1 - the keypoint is defined and inside of the image's bounds but is occluded
* 2 - the keypoint exists and is visible at its location
The annotation definition, captured by the Keypoint Labeler once in each dataset, describes points being captured and their skeletal connections. These are defined by the [Keypoint Template](#KeypointTemplate).
```

For a tutorial on setting up your project for keypoint labeling, see the [Human Pose Labeling and Randomization Tutorial](../HPTutorial/TUTORIAL.md).
## Keypoint Self Occlusion
A keypoint will be considered not visible if it outside of the camera's view, the camera cannot see it because
another object is occluding it (in between the camera and the keypoint), or another part of its own model is occluding it (for
example a human model's arm is raised and blocking its face from view). The keypoint is a point in space generally internal
to the model, for example the elbow joint is in the center of the arm volume. Each keypoint has a self occlusion distance value
which provides depth to the keypoint. The keypoint distance can be assigned or modified via three different methods:
1) The unique distance can be defined to all keypoints defined in the keypoint template.
2) The occlusion distance for a particular keypont can be modified using a Joint Label component on a game object. If a Joint Label
is associated to a keypoint, the self occlusion service will use that value instead of the value found in the keypoint template file.
3) All of the keypoint distances in a model can be scaled for a model using the KeypointOcclusionOverrides component. The distanceScale will
applied to all of the keypoints for that model, a value of 1.0 means that the values are not modified.
If a keypoiant is occluded by the mesh that it is residing in, then this value is added to keypoint location to see if that
location is now closer than the mesh which is occluding the object. If it is then the keypoint will be marked as visible,
if it is not, then the keypoint will be marked as not visible. In the case of the elbow, the distance should be enough that
it is not blocked by the volume of the arm.
## Keypoint Template
Keypoint Templates are used to define the keypoints and skeletal connections captured by the Keypoint Labeler. The Keypoint Template takes advantage of Unity's humanoid animation rig, and allows the user to automatically associate template keypoints to animation rig joints. Additionally, the user can choose to ignore the rigged points, or add points not defined in the rig.

<br/>_Keypoint section of the keypoint template_
The keypoint section allows the user to create/edit keypoints and associate them with Unity animation rig points. Each keypoint record
has 4 fields: label (the name of the keypoint), Associate to Rig (a boolean value which, if true, automatically maps the keypoint to
has 5 fields: label (the name of the keypoint), Associate to Rig (a boolean value which, if true, automatically maps the keypoint to
the keypoint), and Color (RGB color value of the keypoint in the visualization).
the keypoint), Color (RGB color value of the keypoint in the visualization), and Self Occlusion Distance (length to use to determine if a
keypoint is not occluded by itself).
![Skeleton section of the keypoint template](../images/keypoint_template_skeleton.png)
<br/>_Skeleton section of the keypoint template_

263
com.unity.perception/Documentation~/images/keypoint_template_keypoints.png

之前 之后
宽度: 545  |  高度: 248  |  大小: 16 KiB

1
com.unity.perception/Editor/GroundTruth/JointLabelEditor.cs


namespace UnityEditor.Perception.GroundTruth
{
[CustomEditor(typeof(JointLabel))]
[CanEditMultipleObjects]
public class JointLabelEditor : Editor
{
public override void OnInspectorGUI()

19
com.unity.perception/Runtime/GroundTruth/Labelers/CocoKeypointTemplate.asset


m_Script: {fileID: 11500000, guid: 37a7d6f1a40c45a2981a6291f0d03337, type: 3}
m_Name: CocoKeypointTemplate
m_EditorClassIdentifier:
templateID: 4a7b253a-334e-460c-bc81-3f4e2c4871c0
templateName: Coco
jointTexture: {fileID: 2800000, guid: e381cbaaf29614168bafc8f7ec5dbfe9, type: 3}
skeletonTexture: {fileID: 2800000, guid: e381cbaaf29614168bafc8f7ec5dbfe9, type: 3}

rigLabel: 0
color: {r: 1, g: 0, b: 0, a: 1}
selfOcclusionDistance: 0.15
selfOcclusionDistance: 0.15
selfOcclusionDistance: 0.185
selfOcclusionDistance: 0.15
selfOcclusionDistance: 0.15
selfOcclusionDistance: 0.185
selfOcclusionDistance: 0.15
selfOcclusionDistance: 0.15
selfOcclusionDistance: 0.18
selfOcclusionDistance: 0.15
selfOcclusionDistance: 0.15
selfOcclusionDistance: 0.2
selfOcclusionDistance: 0.15
selfOcclusionDistance: 0.15
selfOcclusionDistance: 0.033
selfOcclusionDistance: 0.033
selfOcclusionDistance: 0.05
selfOcclusionDistance: 0.05
skeleton:
- joint1: 0
joint2: 1

121
com.unity.perception/Runtime/GroundTruth/Labelers/JointLabel.cs


using System;
using System.Collections.Generic;
using System.Linq;
using UnityEditor;
using UnityEngine.Serialization;
namespace UnityEngine.Perception.GroundTruth
{

///
/// These label's can also be applied to the keypoints found in the <see cref="Avatar"/> to override the self
/// occlusion tolerance values defined in the <see cref="KeypointTemplate"/> file. The <see cref="KeypointTemplate"/>
/// defines the typical tolerances for a model, but certain models may need to have specific overrides on a keypoint
/// for the self occlusion to work properly.
public class JointLabel : MonoBehaviour
[Serializable]
public class JointLabel : MonoBehaviour, ISerializationCallbackReceiver
static PerceptionCamera s_SinglePerceptionCamera;
public class TemplateData
class TemplateData
/// The <see cref="KeypointTemplate"/> that defines this joint.
/// </summary>
public KeypointTemplate template;
/// <summary>
/// The name of the joint.
/// </summary>
public string label;

/// List of all of the templates that this joint can be mapped to.
/// </summary>
public List<TemplateData> templateInformation;
[SerializeField]
[HideInInspector]
List<TemplateData> templateInformation;
/// <summary>
/// List of all of the templates that this joint can be mapped to.
/// </summary>
[SerializeField]
public List<string> labels = new List<string>();
/// <summary>
/// Whether <see cref="selfOcclusionDistance"/> should be used instead of the one specified in the <see cref="KeypointTemplate"/>.
/// </summary>
public bool overrideSelfOcclusionDistance = false;
/// <summary>
/// Whether <see cref="selfOcclusionDistance"/> should be used instead of the one specified in the <see cref="KeypointTemplate"/>.
/// </summary>
public float selfOcclusionDistance = .15f;
/// <summary>
/// Internal method for serialization.
/// </summary>
void ISerializationCallbackReceiver.OnBeforeSerialize()
{
}
/// <summary>
/// Internal method for serialization.
/// </summary>
void ISerializationCallbackReceiver.OnAfterDeserialize()
{
if (templateInformation != null)
{
foreach (var data in templateInformation)
{
labels.Add(data.label);
}
templateInformation = null;
}
}
private void OnDrawGizmos()
{
Gizmos.DrawIcon(transform.position, "Packages/com.unity.perception/Editor/Icons/Keypoint.png", false);
}
private void OnDrawGizmosSelected()
{
if (s_SinglePerceptionCamera == null)
{
s_SinglePerceptionCamera = FindObjectOfType<PerceptionCamera>();
}
Mesh sphereMesh = null;
#if UNITY_EDITOR
var defaultAssets = UnityEditor.AssetDatabase.LoadAllAssetsAtPath("Library/unity default resources");
sphereMesh = (Mesh) defaultAssets.FirstOrDefault(a => a.name == "Sphere");
#endif
float occlusionDistance;
if (this.overrideSelfOcclusionDistance)
{
occlusionDistance = selfOcclusionDistance;
}
else
{
if (s_SinglePerceptionCamera == null)
{
occlusionDistance = KeypointDefinition.defaultSelfOcclusionDistance;
}
else
{
var keypointLabeler = (KeypointLabeler) s_SinglePerceptionCamera.labelers.FirstOrDefault(l => l is KeypointLabeler);
var template = keypointLabeler?.activeTemplate;
if (template == null)
occlusionDistance = KeypointDefinition.defaultSelfOcclusionDistance;
else
{
KeypointDefinition matchingKeypoint = null;
foreach (var k in template.keypoints)
{
if (this.labels.Contains(k.label))
{
matchingKeypoint = k;
break;
}
}
if (matchingKeypoint == null)
occlusionDistance = KeypointDefinition.defaultSelfOcclusionDistance;
else
occlusionDistance = matchingKeypoint.selfOcclusionDistance;
}
}
}
var occlusionDistanceScale = transform.lossyScale * occlusionDistance;
Gizmos.color = new Color(1, 1, 1, .25f);
Gizmos.DrawMesh(sphereMesh, 0, transform.position, transform.rotation, occlusionDistanceScale * 2);
}
}
}

401
com.unity.perception/Runtime/GroundTruth/Labelers/KeypointLabeler.cs


using System.Linq;
using Unity.Collections;
using Unity.Mathematics;
using Unity.Profiling;
using Unity.Simulation;
using UnityEngine.Experimental.Rendering;
using UnityEngine.Rendering;
namespace UnityEngine.Perception.GroundTruth

/// <see cref="Animator"/> <seealso cref="Avatar"/>. Custom joints can be
/// created by applying <see cref="JointLabel"/> to empty game objects at a body
/// part's location.
///
/// Keypoints are recorded by this labeler with a state value describing if they are present on the model,
/// present but not visible, or visible. A keypoint can be listed as not visible for three reasons: it is outside
/// of the camera's view frustum, it is occluded by another object in the scene, or it is occluded by itself, for
/// example a raised arm in front a model's face could occlude its eyes from being visible. To calculate self
/// occlusion values, the keypoint labeler uses tolerances per keypoint to determine if the keypoint is blocked.
/// The initial tolerance value for each keypoint is set per keypoint in the <see cref="KeypointTemplate"/> file.
/// The tolerance of a custom keypoints can be set with the <see cref="JointLabel"/> used to create the keypoint.
/// Finally, a <see cref="KeypointOcclusionOverrides"/> component be added to a model to apply a universal scaling
/// override to all of the keypoint tolerances defined in a keypoint template.
// Smaller texture sizes produce assertion failures in the engine
const int k_MinTextureWidth = 8;
static ProfilerMarker s_OnEndRenderingMarker = new ProfilerMarker($"KeypointLabeler OnEndRendering");
static ProfilerMarker s_OnVisualizeMarker = new ProfilerMarker($"KeypointLabeler OnVisualize");
/// <summary>
/// The active keypoint template. Required to annotate keypoint data.
/// </summary>

AnnotationDefinition m_AnnotationDefinition;
Texture2D m_MissingTexture;
Material m_MaterialDepthCheck;
Texture2D m_KeypointPositionsTexture;
Texture2D m_KeypointCheckDepthTexture;
Dictionary<int, (AsyncAnnotation annotation, Dictionary<uint, KeypointEntry> keypoints)> m_AsyncAnnotations;
struct FrameKeypointData
{
public AsyncAnnotation annotation;
public int pointsPerEntry;
public List<KeypointEntry> keypoints;
public bool isDepthCheckComplete;
public bool isInstanceSegmentationCheckComplete;
public NativeArray<RenderedObjectInfo> objectInfos;
}
Dictionary<int, FrameKeypointData> m_FrameKeypointData;
List<KeypointEntry> m_KeypointEntriesToReport;
int m_CurrentFrame;

/// </summary>
public List<AnimationPoseConfig> animationPoseConfigs;
private ComputeShader m_KeypointDepthTestShader;
private RenderTexture m_ResultsBuffer;
private RenderTextureReader<Color32> m_DepthCheckReader;
/// <inheritdoc/>

m_KnownStatus = new Dictionary<uint, CachedData>();
m_AsyncAnnotations = new Dictionary<int, (AsyncAnnotation, Dictionary<uint, KeypointEntry>)>();
m_FrameKeypointData = new Dictionary<int, FrameKeypointData>();
m_KeypointDepthTestShader = (ComputeShader) Resources.Load("KeypointDepthTest");
var depthCheckShader = Shader.Find("Perception/KeypointDepthCheck");
var shaderVariantCollection = new ShaderVariantCollection();
m_MaterialDepthCheck = new Material(depthCheckShader);
shaderVariantCollection.Add(
new ShaderVariantCollection.ShaderVariant(depthCheckShader, PassType.ScriptableRenderPipeline));
shaderVariantCollection.WarmUp();
perceptionCamera.attachedCamera.depthTextureMode = DepthTextureMode.Depth;
#if URP_PRESENT
var cameraData = UnityEngine.Rendering.Universal.CameraExtensions.GetUniversalAdditionalCameraData(perceptionCamera.attachedCamera);
cameraData.requiresDepthOption = UnityEngine.Rendering.Universal.CameraOverrideOption.On;
cameraData.requiresDepthTexture = true;
#endif
void SetupDepthCheckBuffers(int size)
{
var textureDimensions = TextureDimensions(size);
if (m_ResultsBuffer != null &&
textureDimensions.x == m_ResultsBuffer.width &&
textureDimensions.y == m_ResultsBuffer.height)
return;
if (m_ResultsBuffer != null)
{
m_ResultsBuffer.Release();
m_DepthCheckReader.Dispose(false);
}
m_KeypointPositionsTexture = new Texture2D(textureDimensions.x, textureDimensions.y, GraphicsFormat.R16G16_SFloat, TextureCreationFlags.None);
m_KeypointCheckDepthTexture = new Texture2D(textureDimensions.x, textureDimensions.y, GraphicsFormat.R16_SFloat, TextureCreationFlags.None);
m_ResultsBuffer = new RenderTexture(textureDimensions.x, textureDimensions.y, 0, GraphicsFormat.R8G8B8A8_UNorm);
m_DepthCheckReader = new RenderTextureReader<Color32>(m_ResultsBuffer);
}
bool PixelOnScreen(int x, int y, (int x, int y) dimensions)
bool PixelOnScreen(int2 pixelLocation, (int x, int y) dimensions)
return x >= 0 && x < dimensions.x && y >= 0 && y < dimensions.y;
return pixelLocation.x >= 0 && pixelLocation.x < dimensions.x && pixelLocation.y >= 0 && pixelLocation.y < dimensions.y;
}
bool PixelsMatch(int x, int y, Color32 idColor, (int x, int y) dimensions, NativeArray<Color32> data)

static int s_PixelTolerance = 1;
// Determine the state of a keypoint. A keypoint is considered visible (state = 2) if it is on screen and not occluded
// by another object. The way that we determine if a point is occluded is by checking the pixel location of the keypoint
// by itself or another object. Self-occlusion has already been checked, so the input keypoint may be state 2, 1, or 0.
// We determine if a point is occluded by other objects is by checking the pixel location of the keypoint
// object is in front of the keypoint occluding it from view. An important note here is that the keypoint is an infintely small
// object is in front of the keypoint occluding it from view. An important note here is that the keypoint is an infinitely small
// point in space, which can lead to false negatives due to rounding issues if the keypoint is on the edge of an object or very
// close to the edge of the screen. Because of this we will test not only the keypoint pixel, but also the immediate surrounding
// pixels to determine if the pixel is really visible. This method returns 1 if the pixel is not visible but on screen, and 0

if (keypoint.state == 0) return 0;
var centerX = Mathf.FloorToInt(keypoint.x);
var centerY = Mathf.FloorToInt(keypoint.y);
var pixelLocation = PixelLocationFromScreenPoint(keypoint);
if (!PixelOnScreen(centerX, centerY, dimensions))
if (!PixelOnScreen(pixelLocation, dimensions))
for (var y = centerY - s_PixelTolerance; y <= centerY + s_PixelTolerance; y++)
for (var y = pixelLocation.y - s_PixelTolerance; y <= pixelLocation.y + s_PixelTolerance; y++)
for (var x = centerX - s_PixelTolerance; x <= centerX + s_PixelTolerance; x++)
for (var x = pixelLocation.x - s_PixelTolerance; x <= pixelLocation.x + s_PixelTolerance; x++)
if (!PixelOnScreen(x, y, dimensions)) continue;
if (!PixelOnScreen(new int2(x, y), dimensions)) continue;
return 2;
return keypoint.state;
}
}
}

private static int2 PixelLocationFromScreenPoint(Keypoint keypoint)
{
var centerX = Mathf.FloorToInt(keypoint.x);
var centerY = Mathf.FloorToInt(keypoint.y);
int2 pixelLocation = new int2(centerX, centerY);
return pixelLocation;
}
if (!m_AsyncAnnotations.TryGetValue(frameCount, out var asyncAnnotation))
if (!m_FrameKeypointData.TryGetValue(frameCount, out var frameKeypointData))
foreach (var keypointSet in asyncAnnotation.keypoints)
foreach (var keypointEntry in frameKeypointData.keypoints)
if (InstanceIdToColorMapping.TryGetColorFromInstanceId(keypointSet.Key, out var idColor))
if (InstanceIdToColorMapping.TryGetColorFromInstanceId(keypointEntry.instance_id, out var idColor))
for (var i = 0; i < keypointSet.Value.keypoints.Length; i++)
for (var i = 0; i < keypointEntry.keypoints.Length; i++)
var keypoint = keypointSet.Value.keypoints[i];
var keypoint = keypointEntry.keypoints[i];
keypoint.state = DetermineKeypointState(keypoint, idColor, dimensions, data);
if (keypoint.state == 0)

keypoint.y = math.clamp(keypoint.y, 0, dimensions.height - .001f);
}
keypointSet.Value.keypoints[i] = keypoint;
keypointEntry.keypoints[i] = keypoint;
frameKeypointData.isInstanceSegmentationCheckComplete = true;
m_FrameKeypointData[frameCount] = frameKeypointData;
ReportIfComplete(frameCount, frameKeypointData);
if (!m_AsyncAnnotations.TryGetValue(frameCount, out var asyncAnnotation))
if (!m_FrameKeypointData.TryGetValue(frameCount, out var frameKeypointData))
m_AsyncAnnotations.Remove(frameCount);
frameKeypointData.objectInfos = new NativeArray<RenderedObjectInfo>(objectInfos, Allocator.Persistent);
m_FrameKeypointData[frameCount] = frameKeypointData;
ReportIfComplete(frameCount, frameKeypointData);
}
private void ReportIfComplete(int frameCount, FrameKeypointData frameKeypointData)
{
if (!frameKeypointData.isInstanceSegmentationCheckComplete || !frameKeypointData.isDepthCheckComplete || !frameKeypointData.objectInfos.IsCreated)
return;
foreach (var keypointSet in asyncAnnotation.keypoints)
foreach (var entry in frameKeypointData.keypoints)
var entry = keypointSet.Value;
foreach (var objectInfo in objectInfos)
foreach (var objectInfo in frameKeypointData.objectInfos)
{
if (entry.instance_id == objectInfo.instanceId)
{

}
if (!include && objectFilter == KeypointObjectFilter.VisibleAndOccluded)
include = keypointSet.Value.keypoints.Any(k => k.state == 1);
include = entry.keypoints.Any(k => k.state == 1);
//This code assumes that OnRenderedObjectInfoReadback will be called immediately after OnInstanceSegmentationImageReadback
m_FrameKeypointData.Remove(frameCount);
asyncAnnotation.annotation.ReportValues(m_KeypointEntriesToReport);
frameKeypointData.annotation.ReportValues(m_KeypointEntriesToReport);
frameKeypointData.objectInfos.Dispose();
/// <param name="scriptableRenderContext"></param>
m_CurrentFrame = Time.frameCount;
using (s_OnEndRenderingMarker.Auto())
{
m_CurrentFrame = Time.frameCount;
var annotation = perceptionCamera.SensorHandle.ReportAnnotationAsync(m_AnnotationDefinition);
var keypointEntries = new List<KeypointEntry>();
var checkLocations = new NativeList<float3>(512, Allocator.Persistent);
foreach (var label in LabelManager.singleton.registeredLabels)
ProcessLabel(label, keypointEntries, checkLocations);
m_FrameKeypointData[m_CurrentFrame] = new FrameKeypointData
{
annotation = annotation,
keypoints = keypointEntries,
pointsPerEntry = activeTemplate.keypoints.Length
};
if (keypointEntries.Count != 0)
DoDepthCheck(scriptableRenderContext, keypointEntries, checkLocations);
else
{
var frameKeypointData = m_FrameKeypointData[m_CurrentFrame];
frameKeypointData.isDepthCheckComplete = true;
m_FrameKeypointData[m_CurrentFrame] = frameKeypointData;
}
checkLocations.Dispose();
}
}
/// Check self occlusion of each keypoint by passing keypoint location (x & y in one texture) and modified distance from camera (keypoint distance - keypoint threshold distance)
/// in an additional texture. The computer shader checks the depth buffer at each passed in location, converts the depth at the pixel to linear space, and then compares it to
/// the passed in modified keypoint distance. If the modified keypoint distance is less than the depth buffer distance, the keypoint is visible, else it is blocked by itself.
private void DoDepthCheck(ScriptableRenderContext scriptableRenderContext, List<KeypointEntry> keypointEntries, NativeList<float3> checkLocations)
{
var keypointCount = keypointEntries.Count * activeTemplate.keypoints.Length;
var commandBuffer = CommandBufferPool.Get("KeypointDepthCheck");
var textureDimensions = TextureDimensions(keypointCount);
SetupDepthCheckBuffers(checkLocations.Length);
var positionsPixeldata = new NativeArray<half>(textureDimensions.x * textureDimensions.y * 2, Allocator.Temp);
var depthPixeldata = new NativeArray<half>(textureDimensions.x * textureDimensions.y, Allocator.Temp);
for (int i = 0; i < checkLocations.Length; i++)
{
var pos = checkLocations[i];
positionsPixeldata[i * 2] = new half(pos.x);
positionsPixeldata[i * 2 + 1] = new half(pos.y);
depthPixeldata[i] = new half(pos.z);
}
m_KeypointPositionsTexture.SetPixelData(positionsPixeldata, 0);
m_KeypointPositionsTexture.Apply();
m_KeypointCheckDepthTexture.SetPixelData(depthPixeldata, 0);
m_KeypointCheckDepthTexture.Apply();
var annotation = perceptionCamera.SensorHandle.ReportAnnotationAsync(m_AnnotationDefinition);
var keypoints = new Dictionary<uint, KeypointEntry>();
positionsPixeldata.Dispose();
depthPixeldata.Dispose();
m_AsyncAnnotations[m_CurrentFrame] = (annotation, keypoints);
m_MaterialDepthCheck.SetTexture("_Positions", m_KeypointPositionsTexture);
m_MaterialDepthCheck.SetTexture("_KeypointCheckDepth", m_KeypointCheckDepthTexture);
commandBuffer.Blit(null, m_ResultsBuffer, m_MaterialDepthCheck);
foreach (var label in LabelManager.singleton.registeredLabels)
ProcessLabel(label);
scriptableRenderContext.ExecuteCommandBuffer(commandBuffer);
scriptableRenderContext.Submit();
CommandBufferPool.Release(commandBuffer);
m_DepthCheckReader.Capture(scriptableRenderContext, OnDepthCheckReadback);
}
private static Vector2Int TextureDimensions(int keypointCount)
{
var width = Math.Max(k_MinTextureWidth, Mathf.NextPowerOfTwo((int)Math.Ceiling(Math.Sqrt(keypointCount))));
var height = width;
var textureDimensions = new Vector2Int(width, height);
return textureDimensions;
}
private void OnDepthCheckReadback(int frame, NativeArray<Color32> data, RenderTexture renderTexture)
{
DoDepthCheckReadback(frame, data);
}
private void OnDepthCheckReadback(int frameCount, AsyncGPUReadbackRequest obj)
{
var data = obj.GetData<uint>();
//DoDepthCheckReadback(frameCount, data);
}
// Go through each keypoint and check if the depth compute shader has determined if it is visible (depth texture
// value of 1.
private void DoDepthCheckReadback(int frameCount, NativeArray<Color32> data)
{
var frameKeypointData = m_FrameKeypointData[frameCount];
var totalLength = frameKeypointData.pointsPerEntry * frameKeypointData.keypoints.Count;
Debug.Assert(totalLength < data.Length);
for (var i = 0; i < totalLength; i++)
{
var value = data[i];
if (value.r == 0)
{
var keypoints = frameKeypointData.keypoints[i / frameKeypointData.pointsPerEntry];
var indexInObject = i % frameKeypointData.pointsPerEntry;
var keypoint = keypoints.keypoints[indexInObject];
keypoint.state = 1;
keypoints.keypoints[indexInObject] = keypoint;
}
}
frameKeypointData.isDepthCheckComplete = true;
m_FrameKeypointData[frameCount] = frameKeypointData;
ReportIfComplete(frameCount, frameKeypointData);
}
// ReSharper disable InconsistentNaming

public Animator animator;
public KeypointEntry keypoints;
public List<(JointLabel, int)> overrides;
public float occlusionScalar;
}
Dictionary<uint, CachedData> m_KnownStatus;

index = -1;
foreach (var jointTemplate in joint.templateInformation.Where(jointTemplate => jointTemplate.template == template))
foreach (var label in joint.labels)
if (template.keypoints[i].label == jointTemplate.label)
if (template.keypoints[i].label == label)
{
index = i;
return true;

bool DoesTemplateContainJoint(JointLabel jointLabel)
{
foreach (var template in jointLabel.templateInformation)
{
if (template.template == activeTemplate)
{
if (activeTemplate.keypoints.Any(i => i.label == template.label))
{
return true;
}
}
}
return false;
return TryToGetTemplateIndexForJoint(activeTemplate, jointLabel, out _);
void ProcessLabel(Labeling labeledEntity)
void ProcessLabel(Labeling labeledEntity, List<KeypointEntry> keypointEntries, NativeList<float3> checkLocations)
{
if (!idLabelConfig.TryGetLabelEntryFromInstanceId(labeledEntity.instanceId, out var labelEntry))
return;

status = false,
animator = null,
keypoints = new KeypointEntry(),
overrides = new List<(JointLabel, int)>()
overrides = new List<(JointLabel, int)>(),
occlusionScalar = 1.0f
};
var entityGameObject = labeledEntity.gameObject;

}
}
var occlusionOverrider = labeledEntity.GetComponentInParent<KeypointOcclusionOverrides>();
if (occlusionOverrider != null)
{
cached.occlusionScalar = occlusionOverrider.distanceScale;
}
m_KnownStatus[labeledEntity.instanceId] = cached;
}

{
var animator = cachedData.animator;
var keypoints = cachedData.keypoints.keypoints;
var listStart = checkLocations.Length;
checkLocations.Resize(checkLocations.Length + activeTemplate.keypoints.Length, NativeArrayOptions.ClearMemory);
//grab the slice of the list for the current object to assign positions in
var checkLocationsSlice = new NativeSlice<float3>(checkLocations, listStart);
var cameraPosition = perceptionCamera.transform.position;
var cameraforward = perceptionCamera.transform.forward;
// Go through all of the rig keypoints and get their location
for (var i = 0; i < activeTemplate.keypoints.Length; i++)

var bone = animator.GetBoneTransform(pt.rigLabel);
if (bone != null)
{
InitKeypoint(bone.position, keypoints, i);
var bonePosition = bone.position;
var occlusionDistance = pt.selfOcclusionDistance * cachedData.occlusionScalar;
var jointSelfOcclusionDistance = JointSelfOcclusionDistance(bone, bonePosition, cameraPosition, cameraforward, occlusionDistance);
InitKeypoint(bonePosition, cachedData, checkLocationsSlice, i, jointSelfOcclusionDistance);
}
}
}

foreach (var (joint, idx) in cachedData.overrides)
foreach (var (joint, templateIdx) in cachedData.overrides)
InitKeypoint(joint.transform.position, keypoints, idx);
var jointTransform = joint.transform;
var jointPosition = jointTransform.position;
float resolvedSelfOcclusionDistance;
if (joint.overrideSelfOcclusionDistance)
resolvedSelfOcclusionDistance = joint.selfOcclusionDistance;
else
resolvedSelfOcclusionDistance = activeTemplate.keypoints[templateIdx].selfOcclusionDistance;
resolvedSelfOcclusionDistance *= cachedData.occlusionScalar;
var jointSelfOcclusionDistance = JointSelfOcclusionDistance(joint.transform, jointPosition, cameraPosition, cameraforward, resolvedSelfOcclusionDistance);
InitKeypoint(jointPosition, cachedData, checkLocationsSlice, templateIdx, jointSelfOcclusionDistance);
}
cachedData.keypoints.pose = "unset";

cachedData.keypoints.pose = GetPose(cachedData.animator);
}
var cachedKeypointEntry = cachedData.keypoints;
var keypointEntry = new KeypointEntry()

pose = cachedKeypointEntry.pose,
template_guid = cachedKeypointEntry.template_guid
};
m_AsyncAnnotations[m_CurrentFrame].keypoints[labeledEntity.instanceId] = keypointEntry;
keypointEntries.Add(keypointEntry);
private void InitKeypoint(Vector3 position, Keypoint[] keypoints, int idx)
private float JointSelfOcclusionDistance(Transform transform, Vector3 jointPosition, Vector3 cameraPosition,
Vector3 cameraforward, float configuredSelfOcclusionDistance)
{
var depthOfJoint = Vector3.Dot(jointPosition - cameraPosition, cameraforward);
var cameraEffectivePosition = jointPosition - cameraforward * depthOfJoint;
var jointRelativeCameraPosition = transform.InverseTransformPoint(cameraEffectivePosition);
var jointRelativeCheckPosition = jointRelativeCameraPosition.normalized * configuredSelfOcclusionDistance;
var worldSpaceCheckVector = transform.TransformVector(jointRelativeCheckPosition);
return worldSpaceCheckVector.magnitude;
}
private void InitKeypoint(Vector3 position, CachedData cachedData, NativeSlice<float3> checkLocations, int idx,
float occlusionDistance)
var keypoints = cachedData.keypoints.keypoints;
keypoints[idx].index = idx;
if (loc.z < 0)
{

keypoints[idx].y = loc.y;
keypoints[idx].state = 2;
}
//TODO: move this code
var pixelLocation = PixelLocationFromScreenPoint(keypoints[idx]);
if (pixelLocation.x < 0 || pixelLocation.y < 0)
{
pixelLocation = new int2(int.MaxValue, int.MaxValue);
}
checkLocations[idx] = new float3(pixelLocation.x + .5f, pixelLocation.y + .5f, loc.z - occlusionDistance);
}
string GetPose(Animator animator)

protected override void OnVisualize()
{
if (m_KeypointEntriesToReport == null) return;
using (s_OnVisualizeMarker.Auto())
{
var jointTexture = activeTemplate.jointTexture;
if (jointTexture == null) jointTexture = m_MissingTexture;
var jointTexture = activeTemplate.jointTexture;
if (jointTexture == null) jointTexture = m_MissingTexture;
var skeletonTexture = activeTemplate.skeletonTexture;
if (skeletonTexture == null) skeletonTexture = m_MissingTexture;
var skeletonTexture = activeTemplate.skeletonTexture;
if (skeletonTexture == null) skeletonTexture = m_MissingTexture;
foreach (var entry in m_KeypointEntriesToReport)
{
foreach (var bone in activeTemplate.skeleton)
foreach (var entry in m_KeypointEntriesToReport)
var joint1 = GetKeypointForJoint(entry, bone.joint1);
var joint2 = GetKeypointForJoint(entry, bone.joint2);
foreach (var bone in activeTemplate.skeleton)
{
var joint1 = GetKeypointForJoint(entry, bone.joint1);
var joint2 = GetKeypointForJoint(entry, bone.joint2);
if (joint1 != null && joint1.Value.state == 2 && joint2 != null && joint2.Value.state == 2)
{
VisualizationHelper.DrawLine(joint1.Value.x, joint1.Value.y, joint2.Value.x, joint2.Value.y, bone.color, 8, skeletonTexture);
}
}
if (joint1 != null && joint1.Value.state == 2 && joint2 != null && joint2.Value.state == 2)
foreach (var keypoint in entry.keypoints)
VisualizationHelper.DrawLine(joint1.Value.x, joint1.Value.y, joint2.Value.x, joint2.Value.y, bone.color, 8, skeletonTexture);
if (keypoint.state == 2)
VisualizationHelper.DrawPoint(keypoint.x, keypoint.y, activeTemplate.keypoints[keypoint.index].color, 8, jointTexture);
}
foreach (var keypoint in entry.keypoints)
{
if (keypoint.state == 2)
VisualizationHelper.DrawPoint(keypoint.x, keypoint.y, activeTemplate.keypoints[keypoint.index].color, 8, jointTexture);
}
}
}

6
com.unity.perception/Runtime/GroundTruth/Labelers/KeypointTemplate.cs


[Serializable]
public class KeypointDefinition
{
internal const float defaultSelfOcclusionDistance = 0.15f;
/// <summary>
/// The name of the keypoint
/// </summary>

/// The color of the keypoint in the visualization
/// </summary>
public Color color = Color.blue;
/// <summary>
/// The max distance the keypoint can be behind an object before it is considered occluded. Distance is computed
/// in the local space of the joint, so object scale is computed
/// </summary>
public float selfOcclusionDistance = defaultSelfOcclusionDistance;
}
/// <summary>

19
com.unity.perception/Runtime/GroundTruth/RenderTextureReader.cs


{
RenderTexture.active = m_Source;
if (m_CpuTexture == null)
if (m_CpuTexture == null || m_CpuTexture.width != m_Source.width || m_CpuTexture.height != m_Source.height)
{
if (m_CpuTexture != null)
m_CpuTexture.Resize(m_Source.width, m_Source.height);
}
m_CpuTexture.ReadPixels(new Rect(
Vector2.zero,

/// <summary>
/// Shut down the reader, waiting for all requests to return.
/// </summary>
public void Dispose()
public void Dispose() => Dispose(true);
/// <summary>
/// Shut down the reader, optionally waiting for all requests to return.
/// </summary>
/// <param name="waitForAllImages">Whether this should block on waiting for asynchronous readbacks</param>
public void Dispose(bool waitForAllImages)
WaitForAllImages();
if (waitForAllImages)
WaitForAllImages();
if (m_CpuTexture != null)
{
Object.Destroy(m_CpuTexture);

20
com.unity.perception/Tests/Runtime/GroundTruthTests/DatasetCaptureSensorSchedulingTests.cs


var simulationDeltaTime = 0.05f;
var sensorHandle = DatasetCapture.RegisterSensor(ego, "cam", "", 0, CaptureTriggerMode.Manual, simulationDeltaTime, 0, true);
var framesToCaptureOn = new List<int>();
var startFrame = Time.frameCount;
var startTime = Time.time;
while (framesToCaptureOn.Count < 10)
var framesToCaptureOn = new List<int>()
var randomFrame = Random.Range(startFrame, startFrame + 100);
if(!framesToCaptureOn.Contains(randomFrame))
framesToCaptureOn.Add(randomFrame);
}
Time.frameCount + 3,
Time.frameCount + 5,
Time.frameCount + 6,
Time.frameCount + 10,
Time.frameCount + 15,
Time.frameCount + 25,
};
framesToCaptureOn.Sort();

{
sequenceTimesExpected[i] = (framesToCaptureOn[i] - startFrame) * simulationDeltaTime;
sequenceTimesExpected[i] = (framesToCaptureOn[i] - Time.frameCount) * simulationDeltaTime;
}
var frameIndex = 0;

556
com.unity.perception/Tests/Runtime/GroundTruthTests/KeypointGroundTruthTests.cs


public class KeyPointGroundTruthTests : GroundTruthTestBase, IPrebuildSetup, IPostBuildCleanup
{
private const string kAnimatedCubeScenePath = "Packages/com.unity.perception/Tests/Runtime/TestAssets/AnimatedCubeScene.unity";
private const string kCubeScenePath = "Packages/com.unity.perception/Tests/Runtime/TestAssets/CubeScene.unity";
private const double k_Delta = .01;
public void Setup()

scenes.Add(new UnityEditor.EditorBuildSettingsScene(kAnimatedCubeScenePath, true));
scenes.Add(new UnityEditor.EditorBuildSettingsScene(kCubeScenePath, true));
UnityEditor.EditorBuildSettings.scenes = scenes.ToArray();
#endif
}

#if UNITY_EDITOR
var scenes = UnityEditor.EditorBuildSettings.scenes;
scenes = scenes.Where(s => s.path != kAnimatedCubeScenePath).ToArray();
scenes = scenes.Where(s => s.path != kAnimatedCubeScenePath && s.path != kCubeScenePath).ToArray();
[UnitySetUp]
public IEnumerator SetupTest()
{
foreach (var p in LoadCubeScene()) yield return p;
}
static GameObject SetupCamera(IdLabelConfig config, KeypointTemplate template, Action<int, List<KeypointLabeler.KeypointEntry>> computeListener, RenderTexture renderTexture = null, KeypointObjectFilter keypointObjectFilter = KeypointObjectFilter.Visible)
{
var cameraObject = new GameObject();

return cameraObject;
}
static KeypointTemplate CreateTestTemplate(Guid guid, string label)
static KeypointTemplate CreateTestTemplate(Guid guid, string label, float selfOcclusionDistance = 0.15f)
{
var keypoints = new[]
{

associateToRig = false,
color = Color.black
color = Color.black,
selfOcclusionDistance = selfOcclusionDistance
color = Color.black
color = Color.black,
selfOcclusionDistance = selfOcclusionDistance
color = Color.black
color = Color.black,
selfOcclusionDistance = selfOcclusionDistance
color = Color.black
color = Color.black,
selfOcclusionDistance = selfOcclusionDistance
color = Color.black
color = Color.black,
selfOcclusionDistance = selfOcclusionDistance
color = Color.black
color = Color.black,
selfOcclusionDistance = selfOcclusionDistance
color = Color.black
color = Color.black,
selfOcclusionDistance = selfOcclusionDistance
color = Color.black
color = Color.black,
selfOcclusionDistance = selfOcclusionDistance
color = Color.black
color = Color.black,
selfOcclusionDistance = selfOcclusionDistance
}
};

return cfg;
}
static void SetupCubeJoint(GameObject cube, KeypointTemplate template, string label, float x, float y, float z)
static void SetupCubeJoint(GameObject cube, string label, float x, float y, float z, float? selfOcclusionDistance = null)
joint.transform.parent = cube.transform;
joint.transform.SetParent(cube.transform, false);
jointLabel.templateInformation = new List<JointLabel.TemplateData>();
var templateData = new JointLabel.TemplateData
jointLabel.labels.Add(label);
if (selfOcclusionDistance.HasValue)
template = template,
label = label
};
jointLabel.templateInformation.Add(templateData);
jointLabel.overrideSelfOcclusionDistance = true;
jointLabel.selfOcclusionDistance = selfOcclusionDistance.Value;
}
else
jointLabel.overrideSelfOcclusionDistance = false;
static void SetupCubeJoints(GameObject cube, KeypointTemplate template)
static void SetupCubeJoints(GameObject cube, KeypointTemplate template, float? selfOcclusionDistance = null)
SetupCubeJoint(cube, template, "FrontLowerLeft", -dim, -dim, -dim);
SetupCubeJoint(cube, template, "FrontUpperLeft", -dim, dim, -dim);
SetupCubeJoint(cube, template, "FrontUpperRight", dim, dim, -dim);
SetupCubeJoint(cube, template, "FrontLowerRight", dim, -dim, -dim);
SetupCubeJoint(cube, template, "BackLowerLeft", -dim, -dim, dim);
SetupCubeJoint(cube, template, "BackUpperLeft", -dim, dim, dim);
SetupCubeJoint(cube, template, "BackUpperRight", dim, dim, dim);
SetupCubeJoint(cube, template, "BackLowerRight", dim, -dim, dim);
SetupCubeJoint(cube, "FrontLowerLeft", -dim, -dim, -dim, selfOcclusionDistance);
SetupCubeJoint(cube, "FrontUpperLeft", -dim, dim, -dim, selfOcclusionDistance);
SetupCubeJoint(cube, "FrontUpperRight", dim, dim, -dim, selfOcclusionDistance);
SetupCubeJoint(cube, "FrontLowerRight", dim, -dim, -dim, selfOcclusionDistance);
SetupCubeJoint(cube, "BackLowerLeft", -dim, -dim, dim, selfOcclusionDistance);
SetupCubeJoint(cube, "BackUpperLeft", -dim, dim, dim, selfOcclusionDistance);
SetupCubeJoint(cube, "BackUpperRight", dim, dim, dim, selfOcclusionDistance);
SetupCubeJoint(cube, "BackLowerRight", dim, -dim, dim, selfOcclusionDistance);
}
[UnityTest]

incoming.Add(new List<KeypointLabeler.KeypointEntry>(data));
}, texture);
var cube = TestHelper.CreateLabeledCube(scale: 6, z: 8);
var cube = SetupLabeledCube(scale: 6, z: 8);
SetupCubeJoints(cube, template);
cube.SetActive(true);

Assert.AreEqual(t.keypoints[5].y, t.keypoints[6].y);
for (var i = 0; i < 9; i++) Assert.AreEqual(i, t.keypoints[i].index);
for (var i = 0; i < 8; i++) Assert.AreEqual(2, t.keypoints[i].state);
for (var i = 0; i < 4; i++) Assert.AreEqual(2, t.keypoints[i].state);
for (var i = 4; i < 8; i++) Assert.AreEqual(1, t.keypoints[i].state);
Assert.Zero(t.keypoints[8].state);
Assert.Zero(t.keypoints[8].x);
Assert.Zero(t.keypoints[8].y);

incoming.Add(new List<KeypointLabeler.KeypointEntry>(data));
}, texture);
var cube = TestHelper.CreateLabeledCube(scale: 6, z: 8);
var cube = SetupLabeledCube(scale: 6, z: 8);
SetupCubeJoints(cube, template);
var labeling = cube.GetComponent<Labeling>();

Assert.AreEqual(t.keypoints[5].y, t.keypoints[6].y);
for (var i = 0; i < 9; i++) Assert.AreEqual(i, t.keypoints[i].index);
for (var i = 0; i < 8; i++) Assert.AreEqual(2, t.keypoints[i].state);
for (var i = 0; i < 4; i++) Assert.AreEqual(2, t.keypoints[i].state);
for (var i = 4; i < 8; i++) Assert.AreEqual(1, t.keypoints[i].state);
Assert.Zero(t.keypoints[8].state);
Assert.Zero(t.keypoints[8].x);
Assert.Zero(t.keypoints[8].y);

incoming.Add(new List<KeypointLabeler.KeypointEntry>(data));
});
var cube = TestHelper.CreateLabeledCube(scale: 6, z: 8);
var cube = SetupLabeledCube(scale: 6, z: 8);
SetupCubeJoints(cube, template);
cube.transform.position = new Vector3(-1000, -1000, 0);

}, texture);
cam.GetComponent<PerceptionCamera>().showVisualizations = false;
var cube = TestHelper.CreateLabeledCube(scale: 6, z: 8);
SetupCubeJoint(cube, template, "Center", 0, 0, 0);
var cube = SetupLabeledCube(scale: 6, z: 8);
SetupCubeJoint(cube, "Center", 0, 0, -.5f);
cube.SetActive(true);
cam.SetActive(true);

var testCase2 = incoming[1];
Assert.AreEqual(1, testCase2.Count);
var t2 = testCase2.First();
Assert.AreEqual(445, t2.keypoints[0].x, 1);
Assert.AreEqual(416, t2.keypoints[0].x, 1);
Assert.AreEqual(768 / 2, t2.keypoints[0].y);
}

incoming.Add(new List<KeypointLabeler.KeypointEntry>(data));
}, texture);
var cube = TestHelper.CreateLabeledCube(scale: 6, z: 8);
var cube = SetupLabeledCube(scale: 6, z: 8);
SetupCubeJoints(cube, template);
cube.transform.position += Vector3.right * 13.5f;

incoming.Add(new List<KeypointLabeler.KeypointEntry>(data));
}, texture);
var cube = TestHelper.CreateLabeledCube(scale: 6, z: 8);
var cube = SetupLabeledCube(scale: 6, z: 8);
SetupCubeJoints(cube, template);
cube.SetActive(true);

AddTestObjectForCleanup(cube);
//for (int i = 0; i < 10000; i++)
yield return null;
//force all async readbacks to complete

Assert.AreEqual(t.keypoints[5].y, t.keypoints[6].y);
for (var i = 0; i < 9; i++) Assert.AreEqual(i, t.keypoints[i].index);
for (var i = 0; i < 8; i++) Assert.AreEqual(2, t.keypoints[i].state);
for (var i = 0; i < 4; i++) Assert.AreEqual(2, t.keypoints[i].state);
for (var i = 4; i < 8; i++) Assert.AreEqual(1, t.keypoints[i].state);
Assert.Zero(t.keypoints[8].state);
Assert.Zero(t.keypoints[8].x);
Assert.Zero(t.keypoints[8].y);

private void CreateFullyOccludedScene(KeypointTemplate template, GameObject cam)
{
var cube = TestHelper.CreateLabeledCube(scale: 6, z: 8);
var cube = SetupLabeledCube(scale: 6, z: 8);
SetupCubeJoints(cube, template);
var blocker = GameObject.CreatePrimitive(PrimitiveType.Cube);

incoming.Add(data);
}, texture, keypointObjectFilter);
var cube = TestHelper.CreateLabeledCube(scale: 6, z: -100);
var cube = SetupLabeledCube(scale: 6, z: -100);
SetupCubeJoints(cube, template);
cube.SetActive(true);

incoming.Add(data);
}, texture, KeypointObjectFilter.All);
var cube = TestHelper.CreateLabeledCube(scale: 6, z: -20);
var cube = SetupLabeledCube(scale: 6, z: -20);
SetupCubeJoints(cube, template);
cube.SetActive(true);

incoming.Add(new List<KeypointLabeler.KeypointEntry>(data));
}, texture);
var cube = TestHelper.CreateLabeledCube(scale: 6, z: 8);
var cube = SetupLabeledCube(scale: 6, z: 8);
SetupCubeJoints(cube, template);
var blocker = GameObject.CreatePrimitive(PrimitiveType.Cube);

Assert.AreEqual(2, t.keypoints[0].state);
Assert.AreEqual(2, t.keypoints[1].state);
Assert.AreEqual(2, t.keypoints[4].state);
Assert.AreEqual(2, t.keypoints[5].state);
Assert.AreEqual(1, t.keypoints[4].state);
Assert.AreEqual(1, t.keypoints[5].state);
Assert.AreEqual(1, t.keypoints[2].state);
Assert.AreEqual(1, t.keypoints[3].state);

var labeling = cube.AddComponent<Labeling>();
labeling.labels.Add("label");
SetupCubeJoint(cube, template, "Center",0f, 0f, 0f);
SetupCubeJoint(cube, "Center",0f, 0f, -.5f);
cube.SetActive(true);
cam.SetActive(true);

Assert.AreEqual(2, t.keypoints[8].state);
}
static IEnumerable<(float scale, bool expectObject, int expectedState, KeypointObjectFilter keypointFilter, Vector2 expectedTopLeft, Vector2 expectedBottomRight)> Keypoint_OnBox_ReportsProperCoordinates_TestCases()
static IEnumerable<(float scale, bool expectObject, int expectedStateFront, int expectedStateBack, KeypointObjectFilter keypointFilter, Vector2 expectedTopLeft, Vector2 expectedBottomRight)> Keypoint_OnBox_ReportsProperCoordinates_TestCases()
1,
KeypointObjectFilter.Visible,
new Vector2(0, 0),
new Vector2(1023.99f, 1023.99f));

0,
0,
KeypointObjectFilter.Visible,
new Vector2(0, 0),

true,
0,
0,
KeypointObjectFilter.Visible,
new Vector2(0, 0),
new Vector2(0, 0));

1,
1,
KeypointObjectFilter.Visible,
new Vector2(512, 512),

true,
1,
1,
KeypointObjectFilter.VisibleAndOccluded,
new Vector2(512, 512),
new Vector2(512, 512));

[ValueSource(nameof(Keypoint_OnBox_ReportsProperCoordinates_TestCases))]
(float scale, bool expectObject, int expectedState, KeypointObjectFilter keypointFilter, Vector2 expectedTopLeft, Vector2 expectedBottomRight) args)
(float scale, bool expectObject, int expectedStateFront, int expectedStateBack, KeypointObjectFilter keypointFilter, Vector2 expectedTopLeft, Vector2 expectedBottomRight) args)
{
var incoming = new List<List<KeypointLabeler.KeypointEntry>>();
var template = CreateTestTemplate(Guid.NewGuid(), "TestTemplate");

camComponent.orthographic = true;
camComponent.orthographicSize = .5f;
var cube = TestHelper.CreateLabeledCube(scale: args.scale, z: 8);
//For some reason the back of this cube is being resolved to 7.5 away from the camera, but on the CPU side it is being recorded as 18.34375
var cube = SetupLabeledCube(scale: args.scale, z: 0);
SetupCubeJoints(cube, template);
cube.SetActive(true);

AddTestObjectForCleanup(cube);
//for (int i = 0; i < 10000; i++)
yield return null;
//force all async readbacks to complete

Assert.AreEqual(template.templateID.ToString(), t.template_guid);
Assert.AreEqual(9, t.keypoints.Length);
CollectionAssert.AreEqual(Enumerable.Repeat(args.expectedState, 8), t.keypoints.Take(8).Select(k => k.state), "State mismatch");
CollectionAssert.AreEqual(Enumerable.Repeat(args.expectedStateFront, 4),
t.keypoints.Take(4).Select(k => k.state),
"State mismatch on front");
CollectionAssert.AreEqual(Enumerable.Repeat(args.expectedStateBack, 4),
t.keypoints.Skip(4).Take(4).Select(k => k.state),
"State mismatch on front");
Assert.AreEqual(args.expectedTopLeft.x, t.keypoints[0].x, k_Delta);
Assert.AreEqual(args.expectedBottomRight.y, t.keypoints[0].y, k_Delta);

Assert.AreEqual(args.expectedBottomRight.x, t.keypoints[3].x, k_Delta);
Assert.AreEqual(args.expectedBottomRight.y, t.keypoints[3].y, k_Delta);
}
public enum CheckDistanceType
{
Global,
JointLabel
}
public enum ProjectionKind
{
Orthographic,
Projection
}
public static IEnumerable<(CheckDistanceType checkDistanceType, Vector3 origin, Vector3 objectScale, Quaternion rotation,
float checkDistance, float pointDistance, float cameraFieldOfView, bool expectOccluded)>
Keypoint_InsideBox_RespectsThreshold_TestCases()
{
foreach (var checkDistanceType in new[] {CheckDistanceType.Global, CheckDistanceType.JointLabel})
{
yield return (
checkDistanceType,
Vector3.zero,
Vector3.one,
Quaternion.identity,
0.1f,
0.2f,
60f,
true);
yield return (
checkDistanceType,
Vector3.zero,
Vector3.one,
Quaternion.identity,
0.2f,
0.005f,
60f,
false);
yield return (
checkDistanceType,
Vector3.zero,
Vector3.one,
Quaternion.identity,
0.1f,
0.05f,
60f,
false);
yield return (
checkDistanceType,
new Vector3(0, 0, 88),
Vector3.one,
Quaternion.identity,
0.1f,
0.05f,
1f,
false);
//larger value here for the occluded check due to lack of depth precision close to far plane.
//We choose to mark points not occluded when the point depth and geometry depth are the same in the depth buffer
yield return (
checkDistanceType,
new Vector3(0, 0, 88),
Vector3.one,
Quaternion.identity,
1f,
2f,
1f,
true);
}
yield return (
CheckDistanceType.Global,
Vector3.zero,
Vector3.one * .5f,
Quaternion.identity,
0.2f,
0.3f,
60f,
true);
yield return (
CheckDistanceType.Global,
Vector3.zero,
new Vector3(1f, 1f, .5f),
Quaternion.identity,
0.2f,
0.3f,
60f,
true);
yield return (
CheckDistanceType.JointLabel,
Vector3.zero,
new Vector3(1f, 1f, .5f),
Quaternion.identity,
0.2f,
0.3f,
60f,
true);
yield return (
CheckDistanceType.JointLabel,
Vector3.zero,
Vector3.one * .5f,
Quaternion.identity,
0.2f,
0.3f,
60f,
true);
yield return (
CheckDistanceType.JointLabel,
Vector3.zero,
new Vector3(1f, 1f, .05f),
Quaternion.AngleAxis(45, Vector3.right),
0.2f,
0.21f,
60f,
true);
}
[UnityTest]
public IEnumerator Keypoint_InsideBox_RespectsThreshold(
[ValueSource(nameof(Keypoint_InsideBox_RespectsThreshold_TestCases))]
(CheckDistanceType checkDistanceType, Vector3 origin, Vector3 objectScale, Quaternion rotation,
float checkDistance, float pointDistance, float cameraFieldOfView, bool expectOccluded) args,
[Values(ProjectionKind.Orthographic, ProjectionKind.Projection)] ProjectionKind projectionKind)
{
var incoming = new List<List<KeypointLabeler.KeypointEntry>>();
var labelerSelfOcclusionDistance =
args.checkDistanceType == CheckDistanceType.Global ? args.checkDistance : 0.5f;
var template = CreateTestTemplate(Guid.NewGuid(), "TestTemplate", selfOcclusionDistance: labelerSelfOcclusionDistance);
var frameSize = 1024;
var texture = new RenderTexture(frameSize, frameSize, 16);
var cam = SetupCamera(SetUpLabelConfig(), template, (frame, data) =>
{
incoming.Add(data);
}, texture);
var camComponent = cam.GetComponent<Camera>();
camComponent.fieldOfView = args.cameraFieldOfView;
camComponent.farClipPlane = 100f;
if (projectionKind == ProjectionKind.Orthographic)
{
camComponent.orthographic = true;
camComponent.orthographicSize = .5f;
}
var cube = GameObject.Find("Cube");
TestHelper.SetupLabeledCube(cube, scale: 1f, x: args.origin.x, y: args.origin.y, z: args.origin.z);
cube.transform.localScale = args.objectScale;
cube.transform.localRotation = args.rotation;
var localSelfOcclusionDistance = args.checkDistanceType == CheckDistanceType.JointLabel ? (float?)args.checkDistance : null;
SetupCubeJoint(cube, "Center", 0f, 0f, -.5f + args.pointDistance, localSelfOcclusionDistance);
cube.SetActive(true);
cam.SetActive(true);
AddTestObjectForCleanup(cam);
AddTestObjectForCleanup(cube);
//for (int i = 0; i < 10000; i++)
yield return null;
//force all async readbacks to complete
DestroyTestObject(cam);
texture.Release();
var testCase = incoming.Last();
Assert.AreEqual(1, testCase.Count);
var t = testCase.First();
Assert.AreEqual(args.expectOccluded ? 1 : 2, t.keypoints[8].state);
}
private IEnumerable LoadCubeScene()
{
SceneManager.LoadScene("CubeScene", LoadSceneMode.Additive);
AddSceneForCleanup("CubeScene");
yield return null;
}
public static IEnumerable<(Vector3 objectScale, Quaternion rotation, float checkDistance, Vector3 pointLocalPosition, bool expectOccluded)>
Keypoint_OnCorner_OfRotatedScaledBox_RespectsThreshold_TestCases()
{
yield return (
new Vector3(90f, 90f, 10f),
Quaternion.identity,
.11f,
new Vector3(-.4f, -.4f, -.4f),
false);
yield return (
new Vector3(90f, 90f, 1f),
Quaternion.identity,
.5f,
new Vector3(-.4f, -.4f, .4f),
true);
yield return (
new Vector3(90, 90, 9),
Quaternion.AngleAxis(90, Vector3.right),
.11f,
new Vector3(-.4f, -.4f, -.4f),
false);
yield return (
new Vector3(90, 90, 90),
Quaternion.AngleAxis(90, Vector3.right),
.11f,
new Vector3(-.4f, -.4f, -.4f),
false);
yield return (
new Vector3(90, 60, 90),
Quaternion.AngleAxis(45, Vector3.right),
.11f,
new Vector3(-.4f, -.4f, -.4f),
true);
}
[UnityTest]
public IEnumerator Keypoint_OnCorner_OfRotatedScaledBox_RespectsThreshold(
[ValueSource(nameof(Keypoint_OnCorner_OfRotatedScaledBox_RespectsThreshold_TestCases))]
(Vector3 objectScale, Quaternion rotation, float checkDistance, Vector3 pointLocalPosition, bool expectOccluded) args)
{
var incoming = new List<List<KeypointLabeler.KeypointEntry>>();
var labelerSelfOcclusionDistance = 0.5f;
var template = CreateTestTemplate(Guid.NewGuid(), "TestTemplate", labelerSelfOcclusionDistance);
var frameSize = 1024;
var texture = new RenderTexture(frameSize, frameSize, 16);
var cam = SetupCamera(SetUpLabelConfig(), template, (frame, data) =>
{
incoming.Add(data);
}, texture);
var camComponent = cam.GetComponent<Camera>();
camComponent.orthographic = true;
camComponent.orthographicSize = 100f;
cam.transform.localPosition = new Vector3(0, 0, -95f);
var cube = GameObject.Find("Cube");
TestHelper.SetupLabeledCube(cube, scale: 1f);
cube.transform.localScale = args.objectScale;
cube.transform.localRotation = args.rotation;
SetupCubeJoint(cube, "Center", args.pointLocalPosition.x, args.pointLocalPosition.y, args.pointLocalPosition.z, args.checkDistance);
cube.SetActive(true);
cam.SetActive(true);
AddTestObjectForCleanup(cam);
AddTestObjectForCleanup(cube);
//for (int i = 0; i < 10000; i++)
yield return null;
//force all async readbacks to complete
DestroyTestObject(cam);
texture.Release();
var testCase = incoming.Last();
Assert.AreEqual(1, testCase.Count);
var t = testCase.First();
Assert.AreEqual(args.expectOccluded ? 1 : 2, t.keypoints[8].state);
}
public static IEnumerable<(Vector3 objectScale, Quaternion rotation, float checkDistance, Vector3 pointLocalPosition, float overrideScalar, bool expectOccluded)>
Keypoint_OnCorner_OfRotatedScaledBox_RespectsModelOverrideThreshold_TestCases()
{
yield return (
new Vector3(90f, 90f, 10f),
Quaternion.identity,
.11f,
new Vector3(-.4f, -.4f, -.4f),
1f,
false);
yield return (
new Vector3(90f, 90f, 1f),
Quaternion.identity,
.5f,
new Vector3(-.4f, -.4f, .4f),
.5f,
true);
yield return (
new Vector3(90, 90, 9),
Quaternion.AngleAxis(90, Vector3.right),
.11f,
new Vector3(-.4f, -.4f, -.4f),
1f,
false);
yield return (
new Vector3(90, 90, 90),
Quaternion.AngleAxis(90, Vector3.right),
.11f,
new Vector3(-.4f, -.4f, -.4f),
.5f,
true);
yield return (
new Vector3(90, 90, 90),
Quaternion.AngleAxis(90, Vector3.right),
.055f,
new Vector3(-.4f, -.4f, -.4f),
1f,
true);
yield return (
new Vector3(90, 90, 90),
Quaternion.AngleAxis(90, Vector3.right),
.055f,
new Vector3(-.4f, -.4f, -.4f),
2f,
false);
}
[UnityTest]
public IEnumerator Keypoint_OnCorner_OfRotatedScaledBox_RespectsModelOverrideThreshold(
[ValueSource(nameof(Keypoint_OnCorner_OfRotatedScaledBox_RespectsModelOverrideThreshold_TestCases))]
(Vector3 objectScale, Quaternion rotation, float checkDistance, Vector3 pointLocalPosition, float overrideScalar, bool expectOccluded) args)
{
var incoming = new List<List<KeypointLabeler.KeypointEntry>>();
var labelerSelfOcclusionDistance = 0.5f;
var template = CreateTestTemplate(Guid.NewGuid(), "TestTemplate", labelerSelfOcclusionDistance);
var frameSize = 1024;
var texture = new RenderTexture(frameSize, frameSize, 16);
var cam = SetupCamera(SetUpLabelConfig(), template, (frame, data) =>
{
incoming.Add(data);
}, texture);
var camComponent = cam.GetComponent<Camera>();
camComponent.orthographic = true;
camComponent.orthographicSize = 100f;
cam.transform.localPosition = new Vector3(0, 0, -95f);
var cube = SetupLabeledCube(scale: 1f);
cube.transform.localScale = args.objectScale;
cube.transform.localRotation = args.rotation;
SetupCubeJoint(cube, "Center", args.pointLocalPosition.x, args.pointLocalPosition.y, args.pointLocalPosition.z, args.checkDistance);
var kpOc = cube.AddComponent<KeypointOcclusionOverrides>();
kpOc.distanceScale = args.overrideScalar;
cube.SetActive(true);
cam.SetActive(true);
AddTestObjectForCleanup(cam);
AddTestObjectForCleanup(cube);
//for (int i = 0; i < 10000; i++)
yield return null;
//force all async readbacks to complete
DestroyTestObject(cam);
texture.Release();
var testCase = incoming.Last();
Assert.AreEqual(1, testCase.Count);
var t = testCase.First();
Assert.AreEqual(args.expectOccluded ? 1 : 2, t.keypoints[8].state);
}
public static GameObject SetupLabeledCube(float scale = 10, string label = "label", float x = 0, float y = 0,
float z = 0, float roll = 0, float pitch = 0, float yaw = 0)
{
return TestHelper.SetupLabeledCube(GameObject.Find("Cube"), scale, label, x, y, z, roll, pitch, yaw);
}
[UnityTest]
public IEnumerator ManyObjects_LabelsCorrectly()
{
var incoming = new List<List<KeypointLabeler.KeypointEntry>>();
var labelerSelfOcclusionDistance = 0.5f;
var template = CreateTestTemplate(Guid.NewGuid(), "TestTemplate", selfOcclusionDistance: labelerSelfOcclusionDistance);
var frameSize = 1024;
var texture = new RenderTexture(frameSize, frameSize, 16);
var cam = SetupCamera(SetUpLabelConfig(), template, (frame, data) =>
{
incoming.Add(new List<KeypointLabeler.KeypointEntry>(data));
}, texture);
void PlaceObjects(Rect rect, float z, Vector2Int count)
{
var cubeBase = GameObject.Find("Cube");
for (int x = 0; x < count.x; x++)
{
for (int y = 0; y < count.y; y++)
{
var cube = GameObject.Instantiate(cubeBase);
TestHelper.SetupLabeledCube(
cube,
scale: rect.width / count.x - .001f,
x: rect.width / count.x * x + rect.xMin,
y: rect.height / count.y * y + rect.yMin,
z: z);
SetupCubeJoints(cube, template, .1f);
cube.SetActive(true);
AddTestObjectForCleanup(cube);
}
}
}
PlaceObjects(new Rect(-2, -2, 2, 2), 0, new Vector2Int(10, 10));
cam.SetActive(true);
AddTestObjectForCleanup(cam);
//TestHelper.LoadAndStartRenderDocCapture();
yield return null;
PlaceObjects(new Rect(0, 0, 4, 4), 0, new Vector2Int(25, 25));
yield return null;
//force all async readbacks to complete
DestroyTestObject(cam);
texture.Release();
//TestHelper.EndCaptureRenderDoc();
Assert.AreEqual(2, incoming.Count);
Assert.AreEqual(10 * 10, incoming[0].Count);
Assert.AreEqual(10 * 10 + 25 * 25, incoming[1].Count);
var idx = 0;
foreach (var entry in incoming[0].Concat(incoming[1]))
{
Assert.AreEqual(9, entry.keypoints.Length);
CollectionAssert.AreEqual(Enumerable.Repeat(2, 4),
entry.keypoints.Take(4).Select(k => k.state),
$"State mismatch on front in entry {idx}");
CollectionAssert.AreEqual(Enumerable.Repeat(1, 4),
entry.keypoints.Skip(4).Take(4).Select(k => k.state),
$"State mismatch on back in entry {idx}");
idx++;
}
}
}
}

26
com.unity.perception/Tests/Runtime/GroundTruthTests/TestHelper.cs


using System.Diagnostics;
using System.Text.RegularExpressions;
using Unity.Collections;
#if UNITY_EDITOR
using UnityEditor;
#endif
using UnityEngine;
using UnityEngine.Experimental.Rendering;
using UnityEngine.Perception.GroundTruth;

static class TestHelper
{
#if UNITY_EDITOR
private static EditorWindow s_GameView;
#endif
public static GameObject CreateLabeledPlane(float scale = 10, string label = "label")
{
GameObject planeObject;

public static GameObject CreateLabeledCube(float scale = 10, string label = "label", float x = 0, float y = 0, float z = 0, float roll = 0, float pitch = 0, float yaw = 0)
{
var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
return SetupLabeledCube(cube, scale, label, x, y, z, roll, pitch, yaw);
}
public static GameObject SetupLabeledCube(GameObject cube, float scale = 10, string label = "label", float x = 0, float y = 0, float z = 0, float roll = 0, float pitch = 0, float yaw = 0)
{
cube.transform.SetPositionAndRotation(new Vector3(x, y, z), Quaternion.Euler(pitch, yaw, roll));
cube.transform.localScale = new Vector3(scale, scale, scale);
var labeling = cube.AddComponent<Labeling>();

}
#if UNITY_EDITOR
public static void LoadAndStartRenderDocCapture(out UnityEditor.EditorWindow gameView)
public static void LoadAndStartRenderDocCapture()
gameView = UnityEditor.EditorWindow.GetWindow(type);
UnityEditorInternal.RenderDoc.BeginCaptureRenderDoc(gameView);
s_GameView = UnityEditor.EditorWindow.GetWindow(type);
UnityEditorInternal.RenderDoc.BeginCaptureRenderDoc(s_GameView);
}
[Conditional("UNITY_EDITOR")]
public static void EndCaptureRenderDoc()
{
UnityEditorInternal.RenderDoc.EndCaptureRenderDoc(s_GameView);
#endif
#endif
public static string NormalizeJson(string json, bool normalizeFormatting = false)
{
if (normalizeFormatting)

2
com.unity.perception/package.json


"description": "Tools for generating large-scale data sets for perception-based machine learning training and validation",
"displayName": "Perception",
"name": "com.unity.perception",
"unity": "2019.4",
"unity": "2020.3",
"version": "0.8.0-preview.4",
"samples": [
{

8
TestProjects/PerceptionHDRP/Assets/Resources.meta


fileFormatVersion: 2
guid: 84124422de45a3326b14584597f95f58
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

63
TestProjects/PerceptionHDRP/Assets/Scenes/PoseSampleSettings.lighting


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!850595691 &4890085278179872738
LightingSettings:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: PoseSampleSettings
serializedVersion: 2
m_GIWorkflowMode: 0
m_EnableBakedLightmaps: 0
m_EnableRealtimeLightmaps: 1
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_TextureCompression: 1
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: 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: 500
m_PVREnvironmentSampleCount: 500
m_PVREnvironmentReferencePointCount: 2048
m_LightProbeSampleCountMultiplier: 4
m_PVRBounces: 2
m_PVRRussianRouletteStartBounce: 2
m_PVREnvironmentMIS: 0
m_PVRFilteringMode: 2
m_PVRDenoiserTypeDirect: 0
m_PVRDenoiserTypeIndirect: 0
m_PVRDenoiserTypeAO: 0
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

8
TestProjects/PerceptionHDRP/Assets/Scenes/PoseSampleSettings.lighting.meta


fileFormatVersion: 2
guid: eb57ebdf6f5d99d6fbce6972a2916ca8
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:

167
TestProjects/PerceptionHDRP/ProjectSettings/SceneTemplateSettings.json


{
"templatePinStates": [],
"dependencyTypeInfos": [
{
"userAdded": false,
"type": "UnityEngine.AnimationClip",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEditor.Animations.AnimatorController",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.AnimatorOverrideController",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEditor.Audio.AudioMixerController",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.ComputeShader",
"ignore": true,
"defaultInstantiationMode": 1,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Cubemap",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.GameObject",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEditor.LightingDataAsset",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": false
},
{
"userAdded": false,
"type": "UnityEngine.LightingSettings",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Material",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEditor.MonoScript",
"ignore": true,
"defaultInstantiationMode": 1,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.PhysicMaterial",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.PhysicsMaterial2D",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Rendering.PostProcessing.PostProcessResources",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Rendering.VolumeProfile",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEditor.SceneAsset",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": false
},
{
"userAdded": false,
"type": "UnityEngine.Shader",
"ignore": true,
"defaultInstantiationMode": 1,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.ShaderVariantCollection",
"ignore": true,
"defaultInstantiationMode": 1,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Texture",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Texture2D",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
},
{
"userAdded": false,
"type": "UnityEngine.Timeline.TimelineAsset",
"ignore": false,
"defaultInstantiationMode": 0,
"supportsModification": true
}
],
"defaultDependencyTypeInfo": {
"userAdded": false,
"type": "<default_scene_template_dependencies>",
"ignore": false,
"defaultInstantiationMode": 1,
"supportsModification": true
},
"newSceneOverride": 0
}

1
TestProjects/PerceptionURP/ProjectSettings/VersionControlSettings.asset


� 2020.1.17f1�����$5�����w���6����):\7����������H������1�1�����@���Q�j�3�L�J@VersionControlSettingsm_ModeCollabEditorSettingsm_CollabEditorSettingsinProgressEnabled Visible Meta Files

17
com.unity.perception/Editor/Icons/Keypoint.png

之前 之后
宽度: 12  |  高度: 12  |  大小: 1.8 KiB

92
com.unity.perception/Editor/Icons/Keypoint.png.meta


fileFormatVersion: 2
guid: bf6fd6a0ba66efb49bfa853c76e36dcb
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

18
com.unity.perception/Runtime/GroundTruth/Labelers/KeypointOcclusionOverrides.cs


using System;
namespace UnityEngine.Perception.GroundTruth
{
/// <summary>
/// When attached to a model used by the <see cref="KeypointLabeler"/> overrides the distance values
/// for each keypoint defined in <see cref="KeypointTemplate"/> by multiplying them by this overrideDistanceScale
/// scalar. The values in <see cref="KeypointTemplate"/> are generally set for a typical adult model, which makes it
/// so that these values do not meet the needs of models with different body types (i.e. children, different heights, different weights).
/// Changing the value of the scalar will help to get keypoint occlusion working properly for these models. A value of 1.0
/// will use the template values as is.
/// </summary>
public class KeypointOcclusionOverrides : MonoBehaviour
{
[Tooltip("Overrides the default occlusion distance values by a scalar. This is necessary for bodies with different body types (i.e. children should be less than one)")]
public float distanceScale = 1.0f;
}
}

11
com.unity.perception/Runtime/GroundTruth/Labelers/KeypointOcclusionOverrides.cs.meta


fileFormatVersion: 2
guid: e489de1fb596113408b951f93430150b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

233
com.unity.perception/Runtime/GroundTruth/Resources/KeypointDepthCheck.shader


//This shader takes in keypoint positions and minimum depth values as pixels
//in a pair of textures and compares them with the depth image to see if any
//objects are occluding the keypoint
Shader "Perception/KeypointDepthCheck"
{
Properties
{
//2d position in screen space of each keypoint
_Positions("Positions", 2D) = "defaultTexture" {}
//minimum allowable depth of geometry in the direction ot each keypoint
_KeypointCheckDepth("KeypointCheckDepth", 2D) = "defaultTexture" {}
//The rendered depth texture
_DepthTexture("Depth", 2DArray) = "defaultTexture" {}
}
HLSLINCLUDE
#pragma target 4.5
//#pragma only_renderers d3d11 ps4 xboxone vulkan metal switch
//enable GPU instancing support
#pragma multi_compile_instancing
ENDHLSL
SubShader
{
Pass
{
PackageRequirements {
"com.unity.render-pipelines.high-definition"
}
Tags { "LightMode" = "SRP" }
Name "KeypointDepthCheck"
ZWrite Off
ZTest Always
Blend SrcAlpha OneMinusSrcAlpha
Cull Off
HLSLPROGRAM
// #pragma only_renderers d3d11 vulkan metal
#pragma target 4.5
#pragma vertex Vert
#pragma fragment Frag
static const float2 checkOffsets[9] = {
float2( 0, 0),
float2(-1, -1),
float2( 0, -1),
float2( 1, -1),
float2(-1, 0),
float2( 1, 0),
float2(-1, 1),
float2( 0, 1),
float2( 1, 1)};
Texture2D _Positions;
Texture2D _KeypointCheckDepth;
#pragma enable_d3d11_debug_symbols
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/CustomPass/CustomPassCommon.hlsl"
float4 Frag(Varyings varyings) : SV_Target
{
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(varyings);
float checkDepth = _KeypointCheckDepth.Load(float3(varyings.positionCS.xy, 0)).r;
float2 checkPosition = _Positions.Load(float3(varyings.positionCS.xy, 0)).xy;
checkPosition = float2(checkPosition.x, _ScreenSize.y - checkPosition.y);
float2 checkPositionResolved;
float depth;
for (int i = 0; i < 9; i++)
{
checkPositionResolved = checkPosition + checkOffsets[i];
depth = LoadCameraDepth(checkPositionResolved);
if (depth > 0)
break;
}
PositionInputs positionInputs = GetPositionInput(checkPosition, _ScreenSize.zw, depth, UNITY_MATRIX_I_VP, UNITY_MATRIX_V);
depth = positionInputs.linearDepth;
uint result = depth >= checkDepth ? 1 : 0;
return float4(result, result, result, 1);
}
ENDHLSL
}
Pass
{
PackageRequirements {
"com.unity.render-pipelines.universal"
}
Tags { "LightMode" = "SRP" }
Name "KeypointDepthCheck"
ZWrite Off
ZTest Always
Blend SrcAlpha OneMinusSrcAlpha
Cull Off
HLSLPROGRAM
//#pragma only_renderers d3d11 vulkan metal
#pragma target 4.5
#pragma vertex Vert
#pragma fragment Frag
static const float2 checkOffsets[9] = {
float2( 0, 0),
float2(-1, -1),
float2( 0, -1),
float2( 1, -1),
float2(-1, 0),
float2( 1, 0),
float2(-1, 1),
float2( 0, 1),
float2( 1, 1)};
Texture2D _Positions;
Texture2D _KeypointCheckDepth;
#include "UnityCG.cginc"
//copied from UnityInput.hlsl
float4x4 _InvViewProjMatrix;
float4x4 _InvProjMatrix;
//#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
v2f Vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = v.uv;
return o;
}
bool IsPerspectiveProjection()
{
return unity_OrthoParams.w == 0;
}
float ViewSpaceDepth(float depth)
{
if (IsPerspectiveProjection())
return LinearEyeDepth(depth);
else
return _ProjectionParams.y + (_ProjectionParams.z - _ProjectionParams.y) * (1 - depth);
}
float EncodeAndDecodeDepth(float vsDepth)
{
if (IsPerspectiveProjection())
{
//derived from vsDepth = 1.0 / (_ZBufferParams.z * dtDepth + _ZBufferParams.w);
float dtDepth = (1.0 / vsDepth - _ZBufferParams.w) / _ZBufferParams.z;
dtDepth = dtDepth;
return LinearEyeDepth(dtDepth);
}
else //in orthographic projections depth is linear so there is no loss of precision.
return vsDepth;
}
Texture2D _CameraDepthTexture;
float LoadSceneDepth(uint2 uv)
{
return _CameraDepthTexture.Load(float3(uv, 0)).r;
}
float4 ComputeClipSpacePosition(float2 positionNDC, float deviceDepth)
{
float4 positionCS = float4(positionNDC * 2.0 - 1.0, deviceDepth, 1.0);
#if UNITY_UV_STARTS_AT_TOP
// Our world space, view space, screen space and NDC space are Y-up.
// Our clip space is flipped upside-down due to poor legacy Unity design.
// The flip is baked into the projection matrix, so we only have to flip
// manually when going from CS to NDC and back.
positionCS.y = -positionCS.y;
#endif
return positionCS;
}
float3 ComputeWorldSpacePosition(float2 positionNDC, float deviceDepth, float4x4 invViewProjMatrix)
{
float4 positionCS = ComputeClipSpacePosition(positionNDC, deviceDepth);
float4 hpositionWS = mul(invViewProjMatrix, positionCS);
return hpositionWS.xyz / hpositionWS.w;
}
fixed4 Frag (v2f i) : SV_Target
{
float depthVSToCheck = _KeypointCheckDepth.Load(float3(i.vertex.xy, 0)).r;
float2 checkPosition = _Positions.Load(float3(i.vertex.xy, 0)).xy;
checkPosition = float2(checkPosition.x, _ScreenParams.y - checkPosition.y);
float2 checkPositionResolved;
float depth;
for (int i = 0; i < 9; i++)
{
checkPositionResolved = checkPosition + checkOffsets[i];
depth = LoadSceneDepth(checkPositionResolved);
if (depth > 0)
break;
}
float depthVSActual = ViewSpaceDepth(depth);
uint result = depthVSActual >= depthVSToCheck ? 1 : 0;
return float4(result, result, result, 1);
}
ENDHLSL
}
}
Fallback Off
}

10
com.unity.perception/Runtime/GroundTruth/Resources/KeypointDepthCheck.shader.meta


fileFormatVersion: 2
guid: 9940b8b9f40d48b5bf942d679dbd9d5d
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
preprocessorOverride: 0
userData:
assetBundleName:
assetBundleVariant:

200
com.unity.perception/Tests/Runtime/TestAssets/CubeScene.unity


%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: 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, g: 0, b: 0, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 12
m_GIWorkflowMode: 0
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 0
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: 4890085278179872738, guid: 280278c4790e89b428686b2f2d0b966a,
type: 2}
--- !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!1001 &854079637
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 1240306141303006794, guid: 19412e53743b3814da68e59d98ab6794,
type: 3}
propertyPath: m_RootOrder
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1240306141303006794, guid: 19412e53743b3814da68e59d98ab6794,
type: 3}
propertyPath: m_LocalPosition.x
value: 20.75
objectReference: {fileID: 0}
- target: {fileID: 1240306141303006794, guid: 19412e53743b3814da68e59d98ab6794,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1240306141303006794, guid: 19412e53743b3814da68e59d98ab6794,
type: 3}
propertyPath: m_LocalPosition.z
value: -30.48
objectReference: {fileID: 0}
- target: {fileID: 1240306141303006794, guid: 19412e53743b3814da68e59d98ab6794,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1240306141303006794, guid: 19412e53743b3814da68e59d98ab6794,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1240306141303006794, guid: 19412e53743b3814da68e59d98ab6794,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1240306141303006794, guid: 19412e53743b3814da68e59d98ab6794,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1240306141303006794, guid: 19412e53743b3814da68e59d98ab6794,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1240306141303006794, guid: 19412e53743b3814da68e59d98ab6794,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1240306141303006794, guid: 19412e53743b3814da68e59d98ab6794,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1240306141303006838, guid: 19412e53743b3814da68e59d98ab6794,
type: 3}
propertyPath: m_Enabled
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1240306141303006839, guid: 19412e53743b3814da68e59d98ab6794,
type: 3}
propertyPath: m_Name
value: Cube
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 19412e53743b3814da68e59d98ab6794, type: 3}

7
com.unity.perception/Tests/Runtime/TestAssets/CubeScene.unity.meta


fileFormatVersion: 2
guid: 368105af956e5054b98e80f93882bcac
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

63
com.unity.perception/Tests/Runtime/TestAssets/CubeSceneSettings.lighting


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!850595691 &4890085278179872738
LightingSettings:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: CubeSceneSettings
serializedVersion: 3
m_GIWorkflowMode: 0
m_EnableBakedLightmaps: 0
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_TextureCompression: 1
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

8
com.unity.perception/Tests/Runtime/TestAssets/CubeSceneSettings.lighting.meta


fileFormatVersion: 2
guid: 280278c4790e89b428686b2f2d0b966a
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 4890085278179872738
userData:
assetBundleName:
assetBundleVariant:

19
TestProjects/PerceptionHDRP/UserSettings/EditorUserSettings.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!162 &1
EditorUserSettings:
m_ObjectHideFlags: 0
serializedVersion: 4
m_ConfigSettings:
vcSharedLogLevel:
value: 0d5e400f0650
flags: 0
m_VCAutomaticAdd: 1
m_VCDebugCom: 0
m_VCDebugCmd: 0
m_VCDebugOut: 0
m_SemanticMergeMode: 2
m_VCShowFailedCheckout: 1
m_VCOverwriteFailedCheckoutAssets: 1
m_VCOverlayIcons: 1
m_VCAllowAsyncUpdate: 0

19
TestProjects/PerceptionURP/UserSettings/EditorUserSettings.asset


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!162 &1
EditorUserSettings:
m_ObjectHideFlags: 0
serializedVersion: 4
m_ConfigSettings:
vcSharedLogLevel:
value: 0d5e400f0650
flags: 0
m_VCAutomaticAdd: 1
m_VCDebugCom: 0
m_VCDebugCmd: 0
m_VCDebugOut: 0
m_SemanticMergeMode: 2
m_VCShowFailedCheckout: 1
m_VCOverwriteFailedCheckoutAssets: 1
m_VCOverlayIcons: 1
m_VCAllowAsyncUpdate: 0
正在加载...
取消
保存