Priyesh Wani
4 年前
当前提交
f8b8eaeb
共有 269 个文件被更改,包括 5091 次插入 和 575 次删除
-
13.github/pull_request_template.md
-
15.yamato/environments.yml
-
8.yamato/promote.yml
-
2.yamato/publish.yml
-
49.yamato/upm-ci-full.yml
-
8.yamato/upm-ci-testprojects.yml
-
15README.md
-
6TestProjects/PerceptionHDRP/Packages/manifest.json
-
12TestProjects/PerceptionHDRP/Packages/packages-lock.json
-
5TestProjects/PerceptionHDRP/ProjectSettings/ProjectSettings.asset
-
4TestProjects/PerceptionHDRP/ProjectSettings/ProjectVersion.txt
-
60TestProjects/PerceptionURP/Assets/Scenes/SampleScene.unity
-
6TestProjects/PerceptionURP/Packages/manifest.json
-
12TestProjects/PerceptionURP/Packages/packages-lock.json
-
37TestProjects/PerceptionURP/ProjectSettings/ProjectSettings.asset
-
4TestProjects/PerceptionURP/ProjectSettings/ProjectVersion.txt
-
43com.unity.perception/CHANGELOG.md
-
13com.unity.perception/Documentation~/PerceptionCamera.md
-
3com.unity.perception/Documentation~/TableOfContents.md
-
9com.unity.perception/Documentation~/index.md
-
2com.unity.perception/Editor/GroundTruth/CameraLabelerDrawer.cs
-
87com.unity.perception/Editor/GroundTruth/LabelingEditor.cs
-
12com.unity.perception/Editor/GroundTruth/PerceptionCameraEditor.cs
-
3com.unity.perception/Editor/Unity.Perception.Editor.asmdef
-
23com.unity.perception/Runtime/GroundTruth/DatasetCapture.cs
-
2com.unity.perception/Runtime/GroundTruth/GroundTruthCrossPipelinePass.cs
-
20com.unity.perception/Runtime/GroundTruth/GroundTruthLabelSetupSystem.cs
-
26com.unity.perception/Runtime/GroundTruth/GroundTruthRendererFeature.cs
-
107com.unity.perception/Runtime/GroundTruth/Labelers/BoundingBoxLabeler.cs
-
82com.unity.perception/Runtime/GroundTruth/Labelers/CameraLabeler.cs
-
32com.unity.perception/Runtime/GroundTruth/Labelers/ObjectCountLabeler.cs
-
34com.unity.perception/Runtime/GroundTruth/Labelers/RenderedObjectInfoLabeler.cs
-
141com.unity.perception/Runtime/GroundTruth/Labelers/SemanticSegmentationLabeler.cs
-
167com.unity.perception/Runtime/GroundTruth/Labelers/Visualization/HUDPanel.cs
-
23com.unity.perception/Runtime/GroundTruth/Labeling/IdLabelEntry.cs
-
9com.unity.perception/Runtime/GroundTruth/Labeling/LabelEntryMatchCache.cs
-
22com.unity.perception/Runtime/GroundTruth/Labeling/Labeling.cs
-
197com.unity.perception/Runtime/GroundTruth/PerceptionCamera.cs
-
54com.unity.perception/Runtime/GroundTruth/PerceptionCamera_InstanceSegmentation.cs
-
11com.unity.perception/Runtime/GroundTruth/Resources/InstanceSegmentation.shader
-
18com.unity.perception/Runtime/GroundTruth/Resources/LabeledObjectHistogram.compute
-
21com.unity.perception/Runtime/GroundTruth/Resources/SemanticSegmentation.shader
-
10com.unity.perception/Runtime/GroundTruth/SemanticSegmentationCrossPipelinePass.cs
-
67com.unity.perception/Runtime/GroundTruth/SimulationState.cs
-
6com.unity.perception/Tests/Editor/BuildPerceptionPlayer.cs
-
19com.unity.perception/Tests/Editor/DatasetCaptureEditorTests.cs
-
64com.unity.perception/Tests/Runtime/GroundTruthTests/DatasetCaptureSensorSchedulingTests.cs
-
6com.unity.perception/Tests/Runtime/GroundTruthTests/DatasetCaptureSensorSchedulingTests.cs.meta
-
46com.unity.perception/Tests/Runtime/GroundTruthTests/DatasetCaptureTests.cs
-
6com.unity.perception/Tests/Runtime/GroundTruthTests/DatasetCaptureTests.cs.meta
-
50com.unity.perception/Tests/Runtime/GroundTruthTests/PerceptionCameraIntegrationTests.cs
-
161com.unity.perception/Tests/Runtime/GroundTruthTests/SegmentationGroundTruthTests.cs
-
24com.unity.perception/Tests/Runtime/GroundTruthTests/TestHelper.cs
-
152com.unity.perception/Tests/Runtime/GroundTruthTests/VisualizationTests.cs
-
16com.unity.perception/package.json
-
984TestProjects/PerceptionHDRP/Assets/Scenes/SampleSceneLensDistortion.unity
-
7TestProjects/PerceptionHDRP/Assets/Scenes/SampleSceneLensDistortion.unity.meta
-
8TestProjects/PerceptionURP/Assets/Scenes/SampleScene.meta
-
8TestProjects/PerceptionURP/Assets/Scenes/SampleSceneLensDistortion.meta
-
840TestProjects/PerceptionURP/Assets/Scenes/SampleSceneLensDistortion.unity
-
7TestProjects/PerceptionURP/Assets/Scenes/SampleSceneLensDistortion.unity.meta
-
31TestProjects/PerceptionURP/Assets/TestMpbPerMaterial.cs
-
11TestProjects/PerceptionURP/Assets/TestMpbPerMaterial.cs.meta
-
8com.unity.perception/Editor/Randomization.meta
-
4com.unity.perception/Runtime/GroundTruth/Labelers/Visualization/Resources/solid_white.png
-
104com.unity.perception/Runtime/GroundTruth/Labelers/Visualization/Resources/solid_white.png.meta
-
8com.unity.perception/Runtime/GroundTruth/Labelers/Visualization/Shaders.meta
-
200com.unity.perception/Runtime/GroundTruth/LensDistortionCrossPipelinePass.cs
-
3com.unity.perception/Runtime/GroundTruth/LensDistortionCrossPipelinePass.cs.meta
-
54com.unity.perception/Runtime/GroundTruth/LensDistortionPass.cs
-
3com.unity.perception/Runtime/GroundTruth/LensDistortionPass.cs.meta
-
98com.unity.perception/Runtime/GroundTruth/Resources/LensDistortion.shader
-
9com.unity.perception/Runtime/GroundTruth/Resources/LensDistortion.shader.meta
-
50com.unity.perception/Runtime/GroundTruth/Resources/Packing.hlsl
-
3com.unity.perception/Runtime/GroundTruth/Resources/Packing.hlsl.meta
-
8com.unity.perception/Runtime/Randomization.meta
-
93com.unity.perception/Tests/Runtime/GroundTruthTests/LabelEntryMatchCacheTests.cs
-
11com.unity.perception/Tests/Runtime/GroundTruthTests/LabelEntryMatchCacheTests.cs.meta
-
8com.unity.perception/Tests/Runtime/Randomization.meta
-
53TestProjects/PerceptionHDRP/Assets/Scenes/SampleSceneLensDistortion/Global Volume Profile.asset
-
53TestProjects/PerceptionURP/Assets/Scenes/SampleSceneLensDistortion/Global Volume Profile.asset
-
8TestProjects/PerceptionURP/Assets/Scenes/SampleSceneLensDistortion/Global Volume Profile.asset.meta
-
85com.unity.perception/Documentation~/Randomization/Images/ColorParameter.png
-
206com.unity.perception/Documentation~/Randomization/Images/ParameterConfiguration.png
-
101com.unity.perception/Documentation~/Randomization/Images/TestScenario.png
-
93com.unity.perception/Documentation~/Randomization/Images/TutorialBuild.png
-
90com.unity.perception/Documentation~/Randomization/Parameters.md
-
87com.unity.perception/Documentation~/Randomization/Samplers.md
-
32com.unity.perception/Documentation~/Randomization/Scenarios.md
-
182com.unity.perception/Documentation~/Randomization/Tutorial.md
-
69com.unity.perception/Documentation~/Randomization/Index.md
-
3com.unity.perception/Editor/Randomization/CategoricalOptionElement.cs.meta
|
|||
m_EditorVersion: 2019.4.7f1 |
|||
m_EditorVersionWithRevision: 2019.4.7f1 (e992b1a16e65) |
|||
m_EditorVersion: 2019.4.8f1 |
|||
m_EditorVersionWithRevision: 2019.4.8f1 (60781d942082) |
|
|||
m_EditorVersion: 2019.4.7f1 |
|||
m_EditorVersionWithRevision: 2019.4.7f1 (e992b1a16e65) |
|||
m_EditorVersion: 2019.4.8f1 |
|||
m_EditorVersionWithRevision: 2019.4.8f1 (60781d942082) |
|
|||
%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: 705507994} |
|||
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} |
|||
m_UseRadianceAmbientProbe: 0 |
|||
--- !u!157 &3 |
|||
LightmapSettings: |
|||
m_ObjectHideFlags: 0 |
|||
serializedVersion: 11 |
|||
m_GIWorkflowMode: 0 |
|||
m_GISettings: |
|||
serializedVersion: 2 |
|||
m_BounceScale: 1 |
|||
m_IndirectOutputScale: 1 |
|||
m_AlbedoBoost: 1 |
|||
m_EnvironmentLightingMode: 0 |
|||
m_EnableBakedLightmaps: 1 |
|||
m_EnableRealtimeLightmaps: 1 |
|||
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: 500 |
|||
m_PVRBounces: 2 |
|||
m_PVREnvironmentSampleCount: 500 |
|||
m_PVREnvironmentReferencePointCount: 2048 |
|||
m_PVRFilteringMode: 2 |
|||
m_PVRDenoiserTypeDirect: 0 |
|||
m_PVRDenoiserTypeIndirect: 0 |
|||
m_PVRDenoiserTypeAO: 0 |
|||
m_PVRFilterTypeDirect: 0 |
|||
m_PVRFilterTypeIndirect: 0 |
|||
m_PVRFilterTypeAO: 0 |
|||
m_PVREnvironmentMIS: 0 |
|||
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_UseShadowmask: 1 |
|||
--- !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 |
|||
debug: |
|||
m_Flags: 0 |
|||
m_NavMeshData: {fileID: 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 |
|||
--- !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: 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 &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: 187.1, y: 83.926025, z: -137.7} |
|||
m_LocalScale: {x: 36.249973, y: 100, z: 36.249973} |
|||
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 &464025704 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 464025709} |
|||
- component: {fileID: 464025708} |
|||
- component: {fileID: 464025707} |
|||
- component: {fileID: 464025706} |
|||
- component: {fileID: 464025705} |
|||
- component: {fileID: 464025710} |
|||
m_Layer: 0 |
|||
m_Name: Cube |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!114 &464025705 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 464025704} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: 8b33f0bc2b78db642a758f07826d0dd0, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
labels: |
|||
- Cube |
|||
--- !u!65 &464025706 |
|||
BoxCollider: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 464025704} |
|||
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 &464025707 |
|||
MeshRenderer: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 464025704} |
|||
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 &464025708 |
|||
MeshFilter: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 464025704} |
|||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} |
|||
--- !u!4 &464025709 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 464025704} |
|||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
|||
m_LocalPosition: {x: 43.9, y: 83.926025, z: -71.3} |
|||
m_LocalScale: {x: 36.249973, y: 36.249973, z: 36.249973} |
|||
m_Children: [] |
|||
m_Father: {fileID: 0} |
|||
m_RootOrder: 1 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|||
--- !u!114 &464025710 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 464025704} |
|||
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_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 705507995} |
|||
- component: {fileID: 705507994} |
|||
- component: {fileID: 705507996} |
|||
m_Layer: 0 |
|||
m_Name: Directional Light |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!108 &705507994 |
|||
Light: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 705507993} |
|||
m_Enabled: 1 |
|||
serializedVersion: 10 |
|||
m_Type: 1 |
|||
m_Shape: 0 |
|||
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} |
|||
m_Intensity: 3.1415927 |
|||
m_Range: 10 |
|||
m_SpotAngle: 30 |
|||
m_InnerSpotAngle: 21.80208 |
|||
m_CookieSize: 10 |
|||
m_Shadows: |
|||
m_Type: 2 |
|||
m_Resolution: -1 |
|||
m_CustomResolution: -1 |
|||
m_Strength: 1 |
|||
m_Bias: 0.05 |
|||
m_NormalBias: 0.4 |
|||
m_NearPlane: 0.2 |
|||
m_CullingMatrixOverride: |
|||
e00: 1 |
|||
e01: 0 |
|||
e02: 0 |
|||
e03: 0 |
|||
e10: 0 |
|||
e11: 1 |
|||
e12: 0 |
|||
e13: 0 |
|||
e20: 0 |
|||
e21: 0 |
|||
e22: 1 |
|||
e23: 0 |
|||
e30: 0 |
|||
e31: 0 |
|||
e32: 0 |
|||
e33: 1 |
|||
m_UseCullingMatrixOverride: 0 |
|||
m_Cookie: {fileID: 0} |
|||
m_DrawHalo: 0 |
|||
m_Flare: {fileID: 0} |
|||
m_RenderMode: 0 |
|||
m_CullingMask: |
|||
serializedVersion: 2 |
|||
m_Bits: 4294967295 |
|||
m_RenderingLayerMask: 1 |
|||
m_Lightmapping: 1 |
|||
m_LightShadowCasterMode: 2 |
|||
m_AreaSize: {x: 1, y: 1} |
|||
m_BounceIntensity: 1 |
|||
m_ColorTemperature: 6570 |
|||
m_UseColorTemperature: 0 |
|||
m_BoundingSphereOverride: {x: 0, y: 6.284e-41, z: 0, w: 2.8131285e+20} |
|||
m_UseBoundingSphereOverride: 0 |
|||
m_ShadowRadius: 0 |
|||
m_ShadowAngle: 0 |
|||
--- !u!4 &705507995 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 705507993} |
|||
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} |
|||
m_LocalPosition: {x: 96.1856, y: 192.67596, z: -193.83864} |
|||
m_LocalScale: {x: 36.249973, y: 36.249977, z: 36.249973} |
|||
m_Children: [] |
|||
m_Father: {fileID: 0} |
|||
m_RootOrder: 3 |
|||
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} |
|||
--- !u!114 &705507996 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 705507993} |
|||
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 |
|||
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 |
|||
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: 150000000 |
|||
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.01 |
|||
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!1 &963194225 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 963194228} |
|||
- component: {fileID: 963194227} |
|||
- component: {fileID: 963194226} |
|||
- component: {fileID: 963194229} |
|||
- component: {fileID: 963194230} |
|||
m_Layer: 0 |
|||
m_Name: Main Camera |
|||
m_TagString: MainCamera |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!81 &963194226 |
|||
AudioListener: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 963194225} |
|||
m_Enabled: 1 |
|||
--- !u!20 &963194227 |
|||
Camera: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 963194225} |
|||
m_Enabled: 1 |
|||
serializedVersion: 2 |
|||
m_ClearFlags: 1 |
|||
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} |
|||
m_projectionMatrixMode: 2 |
|||
m_GateFitMode: 2 |
|||
m_FOVAxisMode: 0 |
|||
m_SensorSize: {x: 35, y: 24} |
|||
m_LensShift: {x: 0, y: 0} |
|||
m_FocalLength: 12.228561 |
|||
m_NormalizedViewPortRect: |
|||
serializedVersion: 2 |
|||
x: 0 |
|||
y: 0 |
|||
width: 1 |
|||
height: 1 |
|||
near clip plane: 0.3 |
|||
far clip plane: 1000 |
|||
field of view: 88.91903 |
|||
orthographic: 0 |
|||
orthographic size: 5 |
|||
m_Depth: -1 |
|||
m_CullingMask: |
|||
serializedVersion: 2 |
|||
m_Bits: 4294967295 |
|||
m_RenderingPath: -1 |
|||
m_TargetTexture: {fileID: 0} |
|||
m_TargetDisplay: 0 |
|||
m_TargetEye: 3 |
|||
m_HDR: 0 |
|||
m_AllowMSAA: 0 |
|||
m_AllowDynamicResolution: 0 |
|||
m_ForceIntoRT: 0 |
|||
m_OcclusionCulling: 1 |
|||
m_StereoConvergence: 10 |
|||
m_StereoSeparation: 0.022 |
|||
--- !u!4 &963194228 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 963194225} |
|||
m_LocalRotation: {x: 0, y: -0.3118126, z: 0, w: 0.95014364} |
|||
m_LocalPosition: {x: 198.01884, y: 87, z: -267.4195} |
|||
m_LocalScale: {x: 36.249973, y: 36.249973, z: 36.249973} |
|||
m_Children: [] |
|||
m_Father: {fileID: 0} |
|||
m_RootOrder: 4 |
|||
m_LocalEulerAnglesHint: {x: 0, y: -36.337, z: 0} |
|||
--- !u!114 &963194229 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 963194225} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: 23c1ce4fb46143f46bc5cb5224c934f6, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
m_Version: 7 |
|||
m_ObsoleteRenderingPath: 0 |
|||
m_ObsoleteFrameSettings: |
|||
overrides: 0 |
|||
enableShadow: 0 |
|||
enableContactShadows: 0 |
|||
enableShadowMask: 0 |
|||
enableSSR: 0 |
|||
enableSSAO: 0 |
|||
enableSubsurfaceScattering: 0 |
|||
enableTransmission: 0 |
|||
enableAtmosphericScattering: 0 |
|||
enableVolumetrics: 0 |
|||
enableReprojectionForVolumetrics: 0 |
|||
enableLightLayers: 0 |
|||
enableExposureControl: 1 |
|||
diffuseGlobalDimmer: 0 |
|||
specularGlobalDimmer: 0 |
|||
shaderLitMode: 0 |
|||
enableDepthPrepassWithDeferredRendering: 0 |
|||
enableTransparentPrepass: 0 |
|||
enableMotionVectors: 0 |
|||
enableObjectMotionVectors: 0 |
|||
enableDecals: 0 |
|||
enableRoughRefraction: 0 |
|||
enableTransparentPostpass: 0 |
|||
enableDistortion: 0 |
|||
enablePostprocess: 0 |
|||
enableOpaqueObjects: 0 |
|||
enableTransparentObjects: 0 |
|||
enableRealtimePlanarReflection: 0 |
|||
enableMSAA: 0 |
|||
enableAsyncCompute: 0 |
|||
runLightListAsync: 0 |
|||
runSSRAsync: 0 |
|||
runSSAOAsync: 0 |
|||
runContactShadowsAsync: 0 |
|||
runVolumeVoxelizationAsync: 0 |
|||
lightLoopSettings: |
|||
overrides: 0 |
|||
enableDeferredTileAndCluster: 0 |
|||
enableComputeLightEvaluation: 0 |
|||
enableComputeLightVariants: 0 |
|||
enableComputeMaterialVariants: 0 |
|||
enableFptlForForwardOpaque: 0 |
|||
enableBigTilePrepass: 0 |
|||
isFptlEnabled: 0 |
|||
clearColorMode: 0 |
|||
backgroundColorHDR: {r: 0.025, g: 0.07, b: 0.19, a: 0} |
|||
clearDepth: 1 |
|||
volumeLayerMask: |
|||
serializedVersion: 2 |
|||
m_Bits: 1 |
|||
volumeAnchorOverride: {fileID: 0} |
|||
antialiasing: 0 |
|||
SMAAQuality: 2 |
|||
dithering: 0 |
|||
stopNaNs: 0 |
|||
taaSharpenStrength: 0.6 |
|||
physicalParameters: |
|||
m_Iso: 200 |
|||
m_ShutterSpeed: 0.005 |
|||
m_Aperture: 16 |
|||
m_BladeCount: 5 |
|||
m_Curvature: {x: 2, y: 11} |
|||
m_BarrelClipping: 0.25 |
|||
m_Anamorphism: 0 |
|||
flipYMode: 0 |
|||
fullscreenPassthrough: 0 |
|||
allowDynamicResolution: 0 |
|||
customRenderingSettings: 0 |
|||
invertFaceCulling: 0 |
|||
probeLayerMask: |
|||
serializedVersion: 2 |
|||
m_Bits: 4294967295 |
|||
hasPersistentHistory: 0 |
|||
m_RenderingPathCustomFrameSettings: |
|||
bitDatas: |
|||
data1: 70280697347933 |
|||
data2: 4539628424926265344 |
|||
lodBias: 1 |
|||
lodBiasMode: 0 |
|||
lodBiasQualityLevel: 0 |
|||
maximumLODLevel: 0 |
|||
maximumLODLevelMode: 0 |
|||
maximumLODLevelQualityLevel: 0 |
|||
materialQuality: 0 |
|||
renderingPathCustomFrameSettingsOverrideMask: |
|||
mask: |
|||
data1: 0 |
|||
data2: 0 |
|||
defaultFrameSettings: 0 |
|||
--- !u!114 &963194230 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 963194225} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: 4467405dbcbd3d64ab4363e9ae8bb813, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
description: The main camera |
|||
period: 0.0166 |
|||
startTime: 0 |
|||
captureRgbImages: 1 |
|||
m_Labelers: |
|||
- id: 0 |
|||
- id: 1 |
|||
- id: 2 |
|||
- id: 3 |
|||
showVisualizations: 1 |
|||
references: |
|||
version: 1 |
|||
00000000: |
|||
type: {class: BoundingBox2DLabeler, ns: UnityEngine.Perception.GroundTruth, |
|||
asm: Unity.Perception.Runtime} |
|||
data: |
|||
enabled: 1 |
|||
annotationId: f9f22e05-443f-4602-a422-ebe4ea9b55cb |
|||
idLabelConfig: {fileID: 11400000, guid: 258de5b48703743468d34fc5bbdfa3aa, |
|||
type: 2} |
|||
00000001: |
|||
type: {class: SemanticSegmentationLabeler, ns: UnityEngine.Perception.GroundTruth, |
|||
asm: Unity.Perception.Runtime} |
|||
data: |
|||
enabled: 1 |
|||
annotationId: 12f94d8d-5425-4deb-9b21-5e53ad957d66 |
|||
labelConfig: {fileID: 11400000, guid: c140c5aa05dd09e4fadaa26de31b1f39, type: 2} |
|||
m_TargetTextureOverride: {fileID: 0} |
|||
00000002: |
|||
type: {class: ObjectCountLabeler, ns: UnityEngine.Perception.GroundTruth, asm: Unity.Perception.Runtime} |
|||
data: |
|||
enabled: 1 |
|||
objectCountMetricId: 51da3c27-369d-4929-aea6-d01614635ce2 |
|||
m_LabelConfig: {fileID: 11400000, guid: 258de5b48703743468d34fc5bbdfa3aa, |
|||
type: 2} |
|||
00000003: |
|||
type: {class: RenderedObjectInfoLabeler, ns: UnityEngine.Perception.GroundTruth, |
|||
asm: Unity.Perception.Runtime} |
|||
data: |
|||
enabled: 1 |
|||
objectInfoMetricId: 5ba92024-b3b7-41a7-9d3f-c03a6a8ddd01 |
|||
idLabelConfig: {fileID: 11400000, guid: 258de5b48703743468d34fc5bbdfa3aa, |
|||
type: 2} |
|||
--- !u!1 &1562495298 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 1562495300} |
|||
- component: {fileID: 1562495299} |
|||
m_Layer: 0 |
|||
m_Name: Global Volume |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!114 &1562495299 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1562495298} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
isGlobal: 1 |
|||
priority: 0 |
|||
blendDistance: 0 |
|||
weight: 1 |
|||
sharedProfile: {fileID: 11400000, guid: 6886180e6c51dac4f9ea4d9bcdaa6e13, type: 2} |
|||
--- !u!4 &1562495300 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1562495298} |
|||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
|||
m_LocalPosition: {x: 0, y: 1, z: 2} |
|||
m_LocalScale: {x: 1, y: 1, z: 1} |
|||
m_Children: [] |
|||
m_Father: {fileID: 0} |
|||
m_RootOrder: 5 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|||
--- !u!1 &1640252278 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 1640252283} |
|||
- component: {fileID: 1640252282} |
|||
- component: {fileID: 1640252281} |
|||
- component: {fileID: 1640252280} |
|||
- component: {fileID: 1640252279} |
|||
- component: {fileID: 1640252284} |
|||
m_Layer: 0 |
|||
m_Name: Box |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !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 |
|||
--- !u!65 &1640252280 |
|||
BoxCollider: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1640252278} |
|||
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 &1640252281 |
|||
MeshRenderer: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1640252278} |
|||
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 &1640252282 |
|||
MeshFilter: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1640252278} |
|||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} |
|||
--- !u!4 &1640252283 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1640252278} |
|||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
|||
m_LocalPosition: {x: 65.9, y: 83.926025, z: -212.4} |
|||
m_LocalScale: {x: 36.249973, y: 100, z: 36.249973} |
|||
m_Children: [] |
|||
m_Father: {fileID: 0} |
|||
m_RootOrder: 2 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|||
--- !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 |
|
|||
fileFormatVersion: 2 |
|||
guid: 626a1164e53022d4c93345d4666a6713 |
|||
DefaultImporter: |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
fileFormatVersion: 2 |
|||
guid: c63d11a708fe3f047a545d7e457f6e81 |
|||
folderAsset: yes |
|||
DefaultImporter: |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
fileFormatVersion: 2 |
|||
guid: fe6387cf00f889a4aa1829716e16631f |
|||
folderAsset: yes |
|||
DefaultImporter: |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
%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: 705507994} |
|||
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} |
|||
m_UseRadianceAmbientProbe: 0 |
|||
--- !u!157 &3 |
|||
LightmapSettings: |
|||
m_ObjectHideFlags: 0 |
|||
serializedVersion: 11 |
|||
m_GIWorkflowMode: 0 |
|||
m_GISettings: |
|||
serializedVersion: 2 |
|||
m_BounceScale: 1 |
|||
m_IndirectOutputScale: 1 |
|||
m_AlbedoBoost: 1 |
|||
m_EnvironmentLightingMode: 0 |
|||
m_EnableBakedLightmaps: 1 |
|||
m_EnableRealtimeLightmaps: 1 |
|||
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: 500 |
|||
m_PVRBounces: 2 |
|||
m_PVREnvironmentSampleCount: 500 |
|||
m_PVREnvironmentReferencePointCount: 2048 |
|||
m_PVRFilteringMode: 2 |
|||
m_PVRDenoiserTypeDirect: 0 |
|||
m_PVRDenoiserTypeIndirect: 0 |
|||
m_PVRDenoiserTypeAO: 0 |
|||
m_PVRFilterTypeDirect: 0 |
|||
m_PVRFilterTypeIndirect: 0 |
|||
m_PVRFilterTypeAO: 0 |
|||
m_PVREnvironmentMIS: 0 |
|||
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_UseShadowmask: 1 |
|||
--- !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 |
|||
debug: |
|||
m_Flags: 0 |
|||
m_NavMeshData: {fileID: 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 |
|||
--- !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: 155.99806, y: 83.926025, z: -149.97618} |
|||
m_LocalScale: {x: 36.249973, y: 36.249973, z: 36.249973} |
|||
m_Children: [] |
|||
m_Father: {fileID: 0} |
|||
m_RootOrder: 2 |
|||
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 &464025704 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 464025709} |
|||
- component: {fileID: 464025708} |
|||
- component: {fileID: 464025707} |
|||
- component: {fileID: 464025706} |
|||
- component: {fileID: 464025705} |
|||
- component: {fileID: 464025710} |
|||
m_Layer: 0 |
|||
m_Name: Cube |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!114 &464025705 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 464025704} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: 8b33f0bc2b78db642a758f07826d0dd0, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
labels: |
|||
- Cube |
|||
--- !u!65 &464025706 |
|||
BoxCollider: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 464025704} |
|||
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 &464025707 |
|||
MeshRenderer: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 464025704} |
|||
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 &464025708 |
|||
MeshFilter: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 464025704} |
|||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} |
|||
--- !u!4 &464025709 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 464025704} |
|||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
|||
m_LocalPosition: {x: 92.92311, y: 83.926025, z: -136.20119} |
|||
m_LocalScale: {x: 36.249973, y: 36.249973, z: 36.249973} |
|||
m_Children: [] |
|||
m_Father: {fileID: 0} |
|||
m_RootOrder: 3 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|||
--- !u!114 &464025710 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 464025704} |
|||
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_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 705507995} |
|||
- component: {fileID: 705507994} |
|||
- component: {fileID: 705507996} |
|||
m_Layer: 0 |
|||
m_Name: Directional Light |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!108 &705507994 |
|||
Light: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 705507993} |
|||
m_Enabled: 1 |
|||
serializedVersion: 10 |
|||
m_Type: 1 |
|||
m_Shape: 0 |
|||
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} |
|||
m_Intensity: 3.1415927 |
|||
m_Range: 10 |
|||
m_SpotAngle: 30 |
|||
m_InnerSpotAngle: 21.80208 |
|||
m_CookieSize: 10 |
|||
m_Shadows: |
|||
m_Type: 2 |
|||
m_Resolution: -1 |
|||
m_CustomResolution: -1 |
|||
m_Strength: 1 |
|||
m_Bias: 0.05 |
|||
m_NormalBias: 0.4 |
|||
m_NearPlane: 0.2 |
|||
m_CullingMatrixOverride: |
|||
e00: 1 |
|||
e01: 0 |
|||
e02: 0 |
|||
e03: 0 |
|||
e10: 0 |
|||
e11: 1 |
|||
e12: 0 |
|||
e13: 0 |
|||
e20: 0 |
|||
e21: 0 |
|||
e22: 1 |
|||
e23: 0 |
|||
e30: 0 |
|||
e31: 0 |
|||
e32: 0 |
|||
e33: 1 |
|||
m_UseCullingMatrixOverride: 0 |
|||
m_Cookie: {fileID: 0} |
|||
m_DrawHalo: 0 |
|||
m_Flare: {fileID: 0} |
|||
m_RenderMode: 0 |
|||
m_CullingMask: |
|||
serializedVersion: 2 |
|||
m_Bits: 4294967295 |
|||
m_RenderingLayerMask: 1 |
|||
m_Lightmapping: 1 |
|||
m_LightShadowCasterMode: 2 |
|||
m_AreaSize: {x: 1, y: 1} |
|||
m_BounceIntensity: 1 |
|||
m_ColorTemperature: 6570 |
|||
m_UseColorTemperature: 0 |
|||
m_BoundingSphereOverride: {x: 4.7e-43, y: 0, z: 0, w: 0} |
|||
m_UseBoundingSphereOverride: 0 |
|||
m_ShadowRadius: 0 |
|||
m_ShadowAngle: 0 |
|||
--- !u!4 &705507995 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 705507993} |
|||
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} |
|||
m_LocalPosition: {x: 96.1856, y: 192.67596, z: -193.83864} |
|||
m_LocalScale: {x: 36.249973, y: 36.249977, z: 36.249973} |
|||
m_Children: [] |
|||
m_Father: {fileID: 0} |
|||
m_RootOrder: 0 |
|||
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} |
|||
--- !u!114 &705507996 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 705507993} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
--- !u!1 &963194225 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 963194228} |
|||
- component: {fileID: 963194226} |
|||
- component: {fileID: 963194230} |
|||
- component: {fileID: 963194229} |
|||
- component: {fileID: 963194227} |
|||
- component: {fileID: 963194231} |
|||
- component: {fileID: 963194232} |
|||
m_Layer: 0 |
|||
m_Name: Main Camera |
|||
m_TagString: MainCamera |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!81 &963194226 |
|||
AudioListener: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 963194225} |
|||
m_Enabled: 1 |
|||
--- !u!114 &963194227 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 963194225} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
m_RenderShadows: 1 |
|||
m_RequiresDepthTextureOption: 2 |
|||
m_RequiresOpaqueTextureOption: 2 |
|||
m_CameraType: 0 |
|||
m_Cameras: [] |
|||
m_RendererIndex: -1 |
|||
m_VolumeLayerMask: |
|||
serializedVersion: 2 |
|||
m_Bits: 1 |
|||
m_VolumeTrigger: {fileID: 0} |
|||
m_RenderPostProcessing: 1 |
|||
m_Antialiasing: 0 |
|||
m_AntialiasingQuality: 2 |
|||
m_StopNaN: 0 |
|||
m_Dithering: 0 |
|||
m_ClearDepth: 1 |
|||
m_RequiresDepthTexture: 0 |
|||
m_RequiresColorTexture: 0 |
|||
m_Version: 2 |
|||
--- !u!4 &963194228 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 963194225} |
|||
m_LocalRotation: {x: -0.17179534, y: 0.30667058, z: -0.056378223, w: -0.93448436} |
|||
m_LocalPosition: {x: 198.01884, y: 126.545494, z: -267.4195} |
|||
m_LocalScale: {x: 36.249973, y: 36.249973, z: 36.249973} |
|||
m_Children: [] |
|||
m_Father: {fileID: 0} |
|||
m_RootOrder: 5 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|||
--- !u!20 &963194229 |
|||
Camera: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 963194225} |
|||
m_Enabled: 1 |
|||
serializedVersion: 2 |
|||
m_ClearFlags: 1 |
|||
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} |
|||
m_projectionMatrixMode: 1 |
|||
m_GateFitMode: 2 |
|||
m_FOVAxisMode: 0 |
|||
m_SensorSize: {x: 36, y: 24} |
|||
m_LensShift: {x: 0, y: 0} |
|||
m_FocalLength: 50 |
|||
m_NormalizedViewPortRect: |
|||
serializedVersion: 2 |
|||
x: 0 |
|||
y: 0 |
|||
width: 1 |
|||
height: 1 |
|||
near clip plane: 0.3 |
|||
far clip plane: 1000 |
|||
field of view: 60 |
|||
orthographic: 0 |
|||
orthographic size: 5 |
|||
m_Depth: 0 |
|||
m_CullingMask: |
|||
serializedVersion: 2 |
|||
m_Bits: 4294967295 |
|||
m_RenderingPath: -1 |
|||
m_TargetTexture: {fileID: 0} |
|||
m_TargetDisplay: 0 |
|||
m_TargetEye: 3 |
|||
m_HDR: 1 |
|||
m_AllowMSAA: 1 |
|||
m_AllowDynamicResolution: 0 |
|||
m_ForceIntoRT: 0 |
|||
m_OcclusionCulling: 1 |
|||
m_StereoConvergence: 10 |
|||
m_StereoSeparation: 0.022 |
|||
--- !u!114 &963194230 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 963194225} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: 4467405dbcbd3d64ab4363e9ae8bb813, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
description: The main camera |
|||
period: 0.0166 |
|||
startTime: 0 |
|||
captureRgbImages: 1 |
|||
m_Labelers: |
|||
- id: 0 |
|||
- id: 1 |
|||
- id: 2 |
|||
- id: 3 |
|||
m_LensDistortion: {fileID: 0} |
|||
showVisualizations: 1 |
|||
references: |
|||
version: 1 |
|||
00000000: |
|||
type: {class: ObjectCountLabeler, ns: UnityEngine.Perception.GroundTruth, asm: Unity.Perception.Runtime} |
|||
data: |
|||
enabled: 1 |
|||
objectCountMetricId: 51da3c27-369d-4929-aea6-d01614635ce2 |
|||
m_LabelConfig: {fileID: 11400000, guid: cedcacfb1d9beb34fbbb231166c472fe, |
|||
type: 2} |
|||
00000001: |
|||
type: {class: BoundingBox2DLabeler, ns: UnityEngine.Perception.GroundTruth, |
|||
asm: Unity.Perception.Runtime} |
|||
data: |
|||
enabled: 1 |
|||
annotationId: f9f22e05-443f-4602-a422-ebe4ea9b55cb |
|||
idLabelConfig: {fileID: 11400000, guid: cedcacfb1d9beb34fbbb231166c472fe, |
|||
type: 2} |
|||
00000002: |
|||
type: {class: RenderedObjectInfoLabeler, ns: UnityEngine.Perception.GroundTruth, |
|||
asm: Unity.Perception.Runtime} |
|||
data: |
|||
enabled: 1 |
|||
objectInfoMetricId: 5ba92024-b3b7-41a7-9d3f-c03a6a8ddd01 |
|||
idLabelConfig: {fileID: 11400000, guid: cedcacfb1d9beb34fbbb231166c472fe, |
|||
type: 2} |
|||
00000003: |
|||
type: {class: SemanticSegmentationLabeler, ns: UnityEngine.Perception.GroundTruth, |
|||
asm: Unity.Perception.Runtime} |
|||
data: |
|||
enabled: 1 |
|||
annotationId: 12f94d8d-5425-4deb-9b21-5e53ad957d66 |
|||
labelConfig: {fileID: 11400000, guid: c140c5aa05dd09e4fadaa26de31b1f39, type: 2} |
|||
m_TargetTextureOverride: {fileID: 0} |
|||
--- !u!114 &963194231 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 963194225} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: 7c51d9f2c5784bb4aee3fdf021966e14, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
targetLight: {fileID: 705507993} |
|||
target: {fileID: 1640252278} |
|||
--- !u!114 &963194232 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 963194225} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: 53f4c974fdf704444959724a41de0cfe, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
--- !u!1 &1257403327 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 1257403328} |
|||
- component: {fileID: 1257403329} |
|||
m_Layer: 0 |
|||
m_Name: Global Volume |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!4 &1257403328 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1257403327} |
|||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
|||
m_LocalPosition: {x: 0, y: 0, z: 0} |
|||
m_LocalScale: {x: 1, y: 1, z: 1} |
|||
m_Children: [] |
|||
m_Father: {fileID: 0} |
|||
m_RootOrder: 1 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|||
--- !u!114 &1257403329 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1257403327} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
isGlobal: 1 |
|||
priority: 0 |
|||
blendDistance: 0 |
|||
weight: 1 |
|||
sharedProfile: {fileID: 11400000, guid: 1f38bcef59815b3429d705dd5e490517, type: 2} |
|||
--- !u!1 &1640252278 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 1640252283} |
|||
- component: {fileID: 1640252282} |
|||
- component: {fileID: 1640252279} |
|||
- component: {fileID: 1640252284} |
|||
- component: {fileID: 1640252280} |
|||
m_Layer: 0 |
|||
m_Name: Box1234 |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !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 |
|||
--- !u!137 &1640252280 |
|||
SkinnedMeshRenderer: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1640252278} |
|||
m_Enabled: 1 |
|||
m_CastShadows: 1 |
|||
m_ReceiveShadows: 1 |
|||
m_DynamicOccludee: 1 |
|||
m_MotionVectors: 1 |
|||
m_LightProbeUsage: 1 |
|||
m_ReflectionProbeUsage: 1 |
|||
m_RayTracingMode: 0 |
|||
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 |
|||
serializedVersion: 2 |
|||
m_Quality: 0 |
|||
m_UpdateWhenOffscreen: 0 |
|||
m_SkinnedMotionVectors: 1 |
|||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} |
|||
m_Bones: [] |
|||
m_BlendShapeWeights: [] |
|||
m_RootBone: {fileID: 0} |
|||
m_AABB: |
|||
m_Center: {x: 0, y: 0, z: 0} |
|||
m_Extent: {x: 0.5, y: 0.5, z: 0.5} |
|||
m_DirtyAABB: 0 |
|||
--- !u!33 &1640252282 |
|||
MeshFilter: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1640252278} |
|||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} |
|||
--- !u!4 &1640252283 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1640252278} |
|||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
|||
m_LocalPosition: {x: 96.1856, y: 83.926025, z: -193.83864} |
|||
m_LocalScale: {x: 36.249973, y: 36.249973, z: 36.249973} |
|||
m_Children: [] |
|||
m_Father: {fileID: 0} |
|||
m_RootOrder: 4 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|||
--- !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 |
|
|||
fileFormatVersion: 2 |
|||
guid: 158b39ade1e98d54f921da59e9c1197c |
|||
DefaultImporter: |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
using System.Collections; |
|||
using System.Collections.Generic; |
|||
using UnityEngine; |
|||
|
|||
public enum MaterialPropertyTarget |
|||
{ |
|||
Renderer, |
|||
Material |
|||
} |
|||
[ExecuteInEditMode] |
|||
public class TestMpbPerMaterial : MonoBehaviour |
|||
{ |
|||
public MaterialPropertyTarget materialPropertyTarget = MaterialPropertyTarget.Material; |
|||
public Color color; |
|||
// Update is called once per frame
|
|||
void Start() |
|||
{ |
|||
var meshRenderer = GetComponent<MeshRenderer>(); |
|||
MaterialPropertyBlock mpb = new MaterialPropertyBlock(); |
|||
mpb.SetColor("_BaseColor", color); |
|||
if (materialPropertyTarget == MaterialPropertyTarget.Renderer) |
|||
meshRenderer.SetPropertyBlock(mpb); |
|||
else |
|||
{ |
|||
for (int i = 0; i < meshRenderer.sharedMaterials.Length; i++) |
|||
{ |
|||
meshRenderer.SetPropertyBlock(mpb, i); |
|||
} |
|||
} |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: 695e410829600ff40bcdd76fa0818f6a |
|||
MonoImporter: |
|||
externalObjects: {} |
|||
serializedVersion: 2 |
|||
defaultReferences: [] |
|||
executionOrder: 0 |
|||
icon: {instanceID: 0} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
fileFormatVersion: 2 |
|||
guid: bc1c8d85f0374514ab4d1af6b3bbe6cd |
|||
folderAsset: yes |
|||
DefaultImporter: |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
fileFormatVersion: 2 |
|||
guid: bc6ed62c29e144961bc6ac55cc87f418 |
|||
TextureImporter: |
|||
internalIDToNameTable: [] |
|||
externalObjects: {} |
|||
serializedVersion: 11 |
|||
mipmaps: |
|||
mipMapMode: 0 |
|||
enableMipMap: 0 |
|||
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: 0 |
|||
lightmap: 0 |
|||
compressionQuality: 50 |
|||
spriteMode: 1 |
|||
spriteExtrude: 1 |
|||
spriteMeshType: 0 |
|||
alignment: 0 |
|||
spritePivot: {x: 0.5, y: 0.5} |
|||
spritePixelsToUnits: 100 |
|||
spriteBorder: {x: 1, y: 1, z: 1, w: 1} |
|||
spriteGenerateFallbackPhysicsShape: 1 |
|||
alphaUsage: 1 |
|||
alphaIsTransparency: 1 |
|||
spriteTessellationDetail: -1 |
|||
textureType: 8 |
|||
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 |
|||
- serializedVersion: 3 |
|||
buildTarget: Standalone |
|||
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: 5e97eb03825dee720800000000000000 |
|||
internalID: 0 |
|||
vertices: [] |
|||
indices: |
|||
edges: [] |
|||
weights: [] |
|||
secondaryTextures: [] |
|||
spritePackingTag: |
|||
pSDRemoveMatte: 0 |
|||
pSDShowRemoveMatteOption: 0 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
fileFormatVersion: 2 |
|||
guid: 49685106b663d4ce2be106a7decb44fa |
|||
folderAsset: yes |
|||
DefaultImporter: |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
using System; |
|||
using Unity.Mathematics; |
|||
using UnityEngine.Experimental.Rendering; |
|||
using UnityEngine.Rendering; |
|||
|
|||
#if HDRP_PRESENT
|
|||
using UnityEngine.Rendering.HighDefinition; |
|||
#elif URP_PRESENT
|
|||
using UnityEngine.Rendering.Universal; |
|||
#endif
|
|||
|
|||
#if HDRP_PRESENT || URP_PRESENT
|
|||
|
|||
namespace UnityEngine.Perception.GroundTruth |
|||
{ |
|||
/// <summary>
|
|||
/// Custom Pass which will apply a lens distortion (per the respective volume override in URP or HDRP, or
|
|||
/// through a custom override directly through the pass) to an incoming mask / texture. The purpose of this
|
|||
/// is to allow the same lens distortion being applied to the RGB image ine the perception camera to be applied
|
|||
/// to the respective ground truths generated.
|
|||
/// </summary>
|
|||
internal class LensDistortionCrossPipelinePass : GroundTruthCrossPipelinePass |
|||
{ |
|||
const string k_ShaderName = "Perception/LensDistortion"; |
|||
|
|||
//Serialize the shader so that the shader asset is included in player builds when the SemanticSegmentationPass is used.
|
|||
//Currently commented out and shaders moved to Resources folder due to serialization crashes when it is enabled.
|
|||
//See https://fogbugz.unity3d.com/f/cases/1187378/
|
|||
//[SerializeField]
|
|||
|
|||
// Lens Distortion Shader
|
|||
Shader m_LensDistortionShader; |
|||
Material m_LensDistortionMaterial; |
|||
|
|||
bool m_fInitialized = false; |
|||
|
|||
public static readonly int _Distortion_Params1 = Shader.PropertyToID("_Distortion_Params1"); |
|||
public static readonly int _Distortion_Params2 = Shader.PropertyToID("_Distortion_Params2"); |
|||
|
|||
LensDistortion m_lensDistortion; |
|||
internal float? lensDistortionOverride = null; // Largely for testing, but could be useful otherwise
|
|||
|
|||
RenderTexture m_TargetTexture; |
|||
RenderTexture m_distortedTexture; |
|||
|
|||
//private LensDistortion m_LensDistortion;
|
|||
|
|||
public LensDistortionCrossPipelinePass(Camera targetCamera, RenderTexture targetTexture) |
|||
: base(targetCamera) |
|||
{ |
|||
m_TargetTexture = targetTexture; |
|||
} |
|||
|
|||
|
|||
public override void Setup() |
|||
{ |
|||
base.Setup(); |
|||
m_LensDistortionShader = Shader.Find(k_ShaderName); |
|||
|
|||
var shaderVariantCollection = new ShaderVariantCollection(); |
|||
|
|||
if (shaderVariantCollection != null) |
|||
shaderVariantCollection.Add(new ShaderVariantCollection.ShaderVariant(m_LensDistortionShader, PassType.ScriptableRenderPipeline)); |
|||
|
|||
m_LensDistortionMaterial = new Material(m_LensDistortionShader); |
|||
|
|||
if(shaderVariantCollection != null) |
|||
shaderVariantCollection.WarmUp(); |
|||
|
|||
// Set up a new texture
|
|||
if (m_distortedTexture == null || m_distortedTexture.width != Screen.width || m_distortedTexture.height != Screen.height) { |
|||
|
|||
if (m_distortedTexture != null) |
|||
m_distortedTexture.Release(); |
|||
|
|||
m_distortedTexture = new RenderTexture(Screen.width, Screen.height, 0, RenderTextureFormat.ARGBFloat, RenderTextureReadWrite.Linear); |
|||
m_distortedTexture.enableRandomWrite = true; |
|||
m_distortedTexture.filterMode = FilterMode.Point; |
|||
m_distortedTexture.Create(); |
|||
} |
|||
|
|||
// Grab the lens distortion
|
|||
#if HDRP_PRESENT
|
|||
// Grab the Lens Distortion from Perception Camera stack
|
|||
var hdCamera = HDCamera.GetOrCreate(targetCamera); |
|||
var stack = hdCamera.volumeStack; |
|||
m_lensDistortion = stack.GetComponent<LensDistortion>(); |
|||
#elif URP_PRESENT
|
|||
var stack = VolumeManager.instance.stack; |
|||
m_lensDistortion = stack.GetComponent<LensDistortion>(); |
|||
#endif
|
|||
m_fInitialized = true; |
|||
} |
|||
|
|||
protected override void ExecutePass(ScriptableRenderContext renderContext, CommandBuffer cmd, Camera camera, CullingResults cullingResult) |
|||
{ |
|||
if (m_fInitialized == false) |
|||
return; |
|||
|
|||
if (SetLensDistortionShaderParameters() == false) |
|||
return; |
|||
|
|||
// Blitmayhem
|
|||
cmd.Blit(m_TargetTexture, m_distortedTexture, m_LensDistortionMaterial); |
|||
cmd.Blit(m_distortedTexture, m_TargetTexture); |
|||
|
|||
renderContext.ExecuteCommandBuffer(cmd); |
|||
cmd.Clear(); |
|||
} |
|||
|
|||
public bool SetLensDistortionShaderParameters() |
|||
{ |
|||
if (m_fInitialized == false) |
|||
return false; |
|||
|
|||
// This code is lifted from the SetupLensDistortion() function in
|
|||
// https://github.com/Unity-Technologies/Graphics/blob/257b08bba6c11de0f894e42e811124247a522d3c/com.unity.render-pipelines.universal/Runtime/Passes/PostProcessPass.cs
|
|||
// This is in UnityEngine.Rendering.Universal.Internal.PostProcessPass::SetupLensDistortion so it's
|
|||
// unclear how to re-use this code
|
|||
|
|||
float intensity = 0.5f; |
|||
float scale = 1.0f; |
|||
var center = new Vector2(0.0f, 0.0f); |
|||
var mult = new Vector2(1.0f, 1.0f); |
|||
|
|||
#if HDRP_PRESENT
|
|||
if(m_lensDistortion == null) |
|||
return false; |
|||
#elif URP_PRESENT
|
|||
if(targetCamera == null) |
|||
return false; |
|||
|
|||
var UACD = targetCamera.GetUniversalAdditionalCameraData(); |
|||
|
|||
if(UACD.renderPostProcessing == false && lensDistortionOverride.HasValue == false) |
|||
return false; |
|||
|
|||
if (m_lensDistortion.active == false) |
|||
return false; |
|||
|
|||
#else
|
|||
return false; |
|||
#endif
|
|||
|
|||
if (lensDistortionOverride.HasValue) |
|||
{ |
|||
intensity = lensDistortionOverride.Value; |
|||
} |
|||
else if (m_lensDistortion != null) |
|||
{ |
|||
// This is a bit finicky for URP - since Lens Distortion comes off the VolumeManager stack as active
|
|||
// even if post processing is not enabled. An intensity of 0.0f is untenable, so the below checks
|
|||
// ensures post processing hasn't been enabled but Lens Distortion actually overriden
|
|||
if (m_lensDistortion.intensity.value != 0.0f) |
|||
{ |
|||
intensity = m_lensDistortion.intensity.value; |
|||
center = m_lensDistortion.center.value * 2f - Vector2.one; |
|||
mult.x = Mathf.Max(m_lensDistortion.xMultiplier.value, 1e-4f); |
|||
mult.y = Mathf.Max(m_lensDistortion.yMultiplier.value, 1e-4f); |
|||
scale = 1.0f / m_lensDistortion.scale.value; |
|||
} |
|||
else |
|||
{ |
|||
return false; |
|||
} |
|||
} |
|||
|
|||
float amount = 1.6f * Mathf.Max(Mathf.Abs(intensity * 100.0f), 1.0f); |
|||
float theta = Mathf.Deg2Rad * Mathf.Min(160f, amount); |
|||
float sigma = 2.0f * Mathf.Tan(theta * 0.5f); |
|||
|
|||
var p1 = new Vector4( |
|||
center.x, |
|||
center.y, |
|||
mult.x, |
|||
mult.y |
|||
); |
|||
|
|||
var p2 = new Vector4( |
|||
intensity >= 0f ? theta : 1f / theta, |
|||
sigma, |
|||
scale, |
|||
intensity * 100.0f |
|||
); |
|||
|
|||
// Set Shader Constants
|
|||
m_LensDistortionMaterial.SetVector(_Distortion_Params1, p1); |
|||
m_LensDistortionMaterial.SetVector(_Distortion_Params2, p2); |
|||
|
|||
return true; |
|||
} |
|||
|
|||
public override void SetupMaterialProperties(MaterialPropertyBlock mpb, Renderer renderer, Labeling labeling, uint instanceId) |
|||
{ |
|||
SetLensDistortionShaderParameters(); |
|||
} |
|||
} |
|||
} |
|||
|
|||
#endif // ! HDRP_PRESENT || URP_PRESENT
|
|
|||
fileFormatVersion: 2 |
|||
guid: ad37b813e25c450fbc65b2820a7d9dc2 |
|||
timeCreated: 1598041907 |
|
|||
#if HDRP_PRESENT
|
|||
|
|||
using System; |
|||
using UnityEngine.Rendering; |
|||
using UnityEngine.Rendering.HighDefinition; |
|||
|
|||
namespace UnityEngine.Perception.GroundTruth |
|||
{ |
|||
/// <summary>
|
|||
/// Custom Pass which renders labeled images where each object with a Labeling component is drawn with the value
|
|||
/// specified by the given LabelingConfiguration.
|
|||
/// </summary>
|
|||
public class LensDistortionPass : CustomPass |
|||
{ |
|||
public RenderTexture targetTexture; |
|||
public Camera targetCamera; |
|||
|
|||
internal LensDistortionCrossPipelinePass m_LensDistortionCrossPipelinePass; |
|||
|
|||
public LensDistortionPass(Camera targetCamera, RenderTexture targetTexture) |
|||
{ |
|||
this.targetTexture = targetTexture; |
|||
this.targetCamera = targetCamera; |
|||
EnsureInit(); |
|||
} |
|||
|
|||
public void EnsureInit() |
|||
{ |
|||
if (m_LensDistortionCrossPipelinePass == null) |
|||
{ |
|||
m_LensDistortionCrossPipelinePass = new LensDistortionCrossPipelinePass(targetCamera, targetTexture); |
|||
m_LensDistortionCrossPipelinePass.EnsureActivated(); |
|||
} |
|||
} |
|||
|
|||
public LensDistortionPass() |
|||
{ |
|||
//
|
|||
} |
|||
|
|||
protected override void Setup(ScriptableRenderContext renderContext, CommandBuffer cmd) |
|||
{ |
|||
EnsureInit(); |
|||
m_LensDistortionCrossPipelinePass.Setup(); |
|||
} |
|||
|
|||
protected override void Execute(ScriptableRenderContext renderContext, CommandBuffer cmd, HDCamera hdCamera, CullingResults cullingResult) |
|||
{ |
|||
CoreUtils.SetRenderTarget(cmd, targetTexture); |
|||
m_LensDistortionCrossPipelinePass.Execute(renderContext, cmd, hdCamera.camera, cullingResult); |
|||
} |
|||
} |
|||
} |
|||
#endif
|
|
|||
fileFormatVersion: 2 |
|||
guid: 7f243f0bc64f47db99fb540a718016dc |
|||
timeCreated: 1598041612 |
|
|||
Shader "Perception/LensDistortion" |
|||
{ |
|||
|
|||
Properties |
|||
{ |
|||
_MainTex ("Texture", 2D) = "white" {} |
|||
} |
|||
|
|||
SubShader |
|||
{ |
|||
Tags { "RenderType" = "Opaque" "LightMode" = "SRP" } |
|||
LOD 100 |
|||
ZTest Always ZWrite Off Cull Off |
|||
|
|||
Pass |
|||
{ |
|||
|
|||
Name "LensDistortion" |
|||
|
|||
CGPROGRAM |
|||
#pragma vertex vert |
|||
#pragma fragment frag |
|||
|
|||
#include "UnityCG.cginc" |
|||
|
|||
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; |
|||
} |
|||
|
|||
// Note: This is taken from the HDRP UberPost shader: |
|||
// https://github.com/Unity-Technologies/Graphics/blob/master/com.unity.render-pipelines.universal/Shaders/PostProcessing/UberPost.shader |
|||
// https://github.com/Unity-Technologies/Graphics/blob/257b08bba6c11de0f894e42e811124247a522d3c/com.unity.render-pipelines.universal/Runtime/Passes/PostProcessPass.cs |
|||
|
|||
// TODO: Include this code somehow since we're really only using the DistortUV call |
|||
|
|||
float4 _Distortion_Params1; |
|||
float4 _Distortion_Params2; |
|||
|
|||
#define DistCenter _Distortion_Params1.xy |
|||
#define DistAxis _Distortion_Params1.zw |
|||
#define DistTheta _Distortion_Params2.x |
|||
#define DistSigma _Distortion_Params2.y |
|||
#define DistScale _Distortion_Params2.z |
|||
#define DistIntensity _Distortion_Params2.w |
|||
|
|||
float2 DistortUV(float2 uv) |
|||
{ |
|||
uv = (uv - 0.5) * DistScale + 0.5; |
|||
float2 ruv = DistAxis * (uv - 0.5 - DistCenter); |
|||
float ru = length(float2(ruv)); |
|||
|
|||
UNITY_BRANCH |
|||
if (DistIntensity > 0.0) |
|||
{ |
|||
float wu = ru * DistTheta; |
|||
ru = tan(wu) * (rcp(ru * DistSigma)); |
|||
uv = uv + ruv * (ru - 1.0); |
|||
} |
|||
else |
|||
{ |
|||
ru = rcp(ru) * DistTheta * atan(ru * DistSigma); |
|||
uv = uv + ruv * (ru - 1.0); |
|||
} |
|||
|
|||
return uv; |
|||
} |
|||
|
|||
sampler2D _MainTex; |
|||
|
|||
fixed4 frag(v2f input) : SV_Target |
|||
{ |
|||
float2 uvDistorted = input.uv; |
|||
uvDistorted = DistortUV(uvDistorted); |
|||
float4 texValue = tex2D(_MainTex, uvDistorted); |
|||
|
|||
return texValue; |
|||
} |
|||
|
|||
ENDCG |
|||
} |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: fc985f5773827c7468c475fd7290d5e7 |
|||
ShaderImporter: |
|||
externalObjects: {} |
|||
defaultTextures: [] |
|||
nonModifiableTextures: [] |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
#ifndef UNITY_PERCEPTION_PACKING_INCLUDED |
|||
#define UNITY_PERCEPTION_PACKING_INCLUDED |
|||
|
|||
#define real float |
|||
#define real2 float2 |
|||
#define real3 float3 |
|||
#define real4 float4 |
|||
|
|||
// Packs an integer stored using at most 'numBits' into a [0..1] real. |
|||
real PackInt(uint i, uint numBits) |
|||
{ |
|||
uint maxInt = (1u << numBits) - 1u; |
|||
return saturate(i * rcp(maxInt)); |
|||
} |
|||
|
|||
// Unpacks a [0..1] real into an integer of size 'numBits'. |
|||
uint UnpackInt(real f, uint numBits) |
|||
{ |
|||
uint maxInt = (1u << numBits) - 1u; |
|||
return (uint)(f * maxInt + 0.5); // Round instead of truncating |
|||
} |
|||
|
|||
#ifndef INTRINSIC_BITFIELD_EXTRACT |
|||
// Unsigned integer bit field extraction. |
|||
// Note that the intrinsic itself generates a vector instruction. |
|||
// Wrap this function with WaveReadLaneFirst() to get scalar output. |
|||
uint BitFieldExtract(uint data, uint offset, uint numBits) |
|||
{ |
|||
uint mask = (1u << numBits) - 1u; |
|||
return (data >> offset) & mask; |
|||
} |
|||
#endif // INTRINSIC_BITFIELD_EXTRACT |
|||
|
|||
//----------------------------------------------------------------------------- |
|||
// Float packing |
|||
//----------------------------------------------------------------------------- |
|||
|
|||
// src must be between 0.0 and 1.0 |
|||
uint PackFloatToUInt(real src, uint offset, uint numBits) |
|||
{ |
|||
return UnpackInt(src, numBits) << offset; |
|||
} |
|||
|
|||
real UnpackUIntToFloat(uint src, uint offset, uint numBits) |
|||
{ |
|||
uint maxInt = (1u << numBits) - 1u; |
|||
return real(BitFieldExtract(src, offset, numBits)) * rcp(maxInt); |
|||
} |
|||
|
|||
#endif // UNITY_PACKING_INCLUDED |
|
|||
fileFormatVersion: 2 |
|||
guid: 9af0f66010764cc5a8ef4acccc164cdb |
|||
timeCreated: 1598539851 |
|
|||
fileFormatVersion: 2 |
|||
guid: 511b2251e3510cd48a26b8a61f6911f0 |
|||
folderAsset: yes |
|||
DefaultImporter: |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
using System.Collections; |
|||
using NUnit.Framework; |
|||
using UnityEngine.Perception.GroundTruth; |
|||
using UnityEngine.TestTools; |
|||
|
|||
namespace GroundTruthTests |
|||
{ |
|||
[TestFixture] |
|||
public class LabelEntryMatchCacheTests : GroundTruthTestBase |
|||
{ |
|||
[Test] |
|||
public void TryGet_ReturnsFalse_ForInvalidInstanceId() |
|||
{ |
|||
var config = new IdLabelConfig(); |
|||
using (var cache = new LabelEntryMatchCache(config)) |
|||
{ |
|||
Assert.IsFalse(cache.TryGetLabelEntryFromInstanceId(100, out var labelEntry, out var index)); |
|||
Assert.AreEqual(-1, index); |
|||
Assert.AreEqual(default(IdLabelEntry), labelEntry); |
|||
} |
|||
} |
|||
[UnityTest] |
|||
public IEnumerator TryGet_ReturnsTrue_ForMatchingLabel() |
|||
{ |
|||
var label = "label"; |
|||
var labeledPlane = TestHelper.CreateLabeledPlane(label: label); |
|||
AddTestObjectForCleanup(labeledPlane); |
|||
var config = new IdLabelConfig(); |
|||
config.Init(new[] |
|||
{ |
|||
new IdLabelEntry() |
|||
{ |
|||
id = 1, |
|||
label = label |
|||
}, |
|||
}); |
|||
using (var cache = new LabelEntryMatchCache(config)) |
|||
{ |
|||
//allow label to be registered
|
|||
yield return null; |
|||
Assert.IsTrue(cache.TryGetLabelEntryFromInstanceId(labeledPlane.GetComponent<Labeling>().instanceId, out var labelEntry, out var index)); |
|||
Assert.AreEqual(0, index); |
|||
Assert.AreEqual(config.labelEntries[0], labelEntry); |
|||
} |
|||
} |
|||
[UnityTest] |
|||
public IEnumerator TryGet_ReturnsFalse_ForNonMatchingLabel() |
|||
{ |
|||
var label = "label"; |
|||
var labeledPlane = TestHelper.CreateLabeledPlane(label: label); |
|||
AddTestObjectForCleanup(labeledPlane); |
|||
var config = new IdLabelConfig(); |
|||
using (var cache = new LabelEntryMatchCache(config)) |
|||
{ |
|||
//allow label to be registered
|
|||
yield return null; |
|||
Assert.IsFalse(cache.TryGetLabelEntryFromInstanceId(labeledPlane.GetComponent<Labeling>().instanceId, out var labelEntry, out var index)); |
|||
Assert.AreEqual(-1, index); |
|||
Assert.AreEqual(default(IdLabelEntry), labelEntry); |
|||
} |
|||
} |
|||
[UnityTest] |
|||
public IEnumerator TryGet_ReturnsFalse_ForNonMatchingLabel_WithOtherMatches() |
|||
{ |
|||
var label = "label"; |
|||
//only way to guarantee registration order is to run frames.
|
|||
//We want to ensure labeledPlane is registered before labeledPlane2 so that the cache does not early out
|
|||
var labeledPlane = TestHelper.CreateLabeledPlane(label: "foo"); |
|||
AddTestObjectForCleanup(labeledPlane); |
|||
yield return null; |
|||
var labeledPlane2 = TestHelper.CreateLabeledPlane(label: label); |
|||
AddTestObjectForCleanup(labeledPlane2); |
|||
var config = new IdLabelConfig(); |
|||
config.Init(new[] |
|||
{ |
|||
new IdLabelEntry() |
|||
{ |
|||
id = 1, |
|||
label = label |
|||
}, |
|||
}); |
|||
using (var cache = new LabelEntryMatchCache(config)) |
|||
{ |
|||
//allow label to be registered
|
|||
yield return null; |
|||
Assert.IsFalse(cache.TryGetLabelEntryFromInstanceId(labeledPlane.GetComponent<Labeling>().instanceId, out var labelEntry, out var index)); |
|||
Assert.AreEqual(-1, index); |
|||
Assert.AreEqual(default(IdLabelEntry), labelEntry); |
|||
} |
|||
} |
|||
|
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: 8404035e89b3b1b4e87136d8a512b6f5 |
|||
MonoImporter: |
|||
externalObjects: {} |
|||
serializedVersion: 2 |
|||
defaultReferences: [] |
|||
executionOrder: 0 |
|||
icon: {instanceID: 0} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
fileFormatVersion: 2 |
|||
guid: 44d8bef3d43160b428851cccd5080624 |
|||
folderAsset: yes |
|||
DefaultImporter: |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
%YAML 1.1 |
|||
%TAG !u! tag:unity3d.com,2011: |
|||
--- !u!114 &11400000 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 0} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3} |
|||
m_Name: Global Volume Profile |
|||
m_EditorClassIdentifier: |
|||
components: |
|||
- {fileID: 3741622219492366159} |
|||
--- !u!114 &3741622219492366159 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 3 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 0} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: 9c1bfcd0f0fa7b8468f281d6bbbaf320, type: 3} |
|||
m_Name: LensDistortion |
|||
m_EditorClassIdentifier: |
|||
active: 1 |
|||
m_AdvancedMode: 0 |
|||
intensity: |
|||
m_OverrideState: 1 |
|||
m_Value: 0.805 |
|||
min: -1 |
|||
max: 1 |
|||
xMultiplier: |
|||
m_OverrideState: 0 |
|||
m_Value: 1 |
|||
min: 0 |
|||
max: 1 |
|||
yMultiplier: |
|||
m_OverrideState: 0 |
|||
m_Value: 1 |
|||
min: 0 |
|||
max: 1 |
|||
center: |
|||
m_OverrideState: 0 |
|||
m_Value: {x: 0.5, y: 0.5} |
|||
scale: |
|||
m_OverrideState: 0 |
|||
m_Value: 1 |
|||
min: 0.01 |
|||
max: 5 |
|
|||
%YAML 1.1 |
|||
%TAG !u! tag:unity3d.com,2011: |
|||
--- !u!114 &11400000 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 0} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3} |
|||
m_Name: Global Volume Profile |
|||
m_EditorClassIdentifier: |
|||
components: |
|||
- {fileID: 6059181497156826374} |
|||
--- !u!114 &6059181497156826374 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 3 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 0} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: c5e1dc532bcb41949b58bc4f2abfbb7e, type: 3} |
|||
m_Name: LensDistortion |
|||
m_EditorClassIdentifier: |
|||
active: 1 |
|||
m_AdvancedMode: 0 |
|||
intensity: |
|||
m_OverrideState: 1 |
|||
m_Value: 0.715 |
|||
min: -1 |
|||
max: 1 |
|||
xMultiplier: |
|||
m_OverrideState: 1 |
|||
m_Value: 1 |
|||
min: 0 |
|||
max: 1 |
|||
yMultiplier: |
|||
m_OverrideState: 1 |
|||
m_Value: 1 |
|||
min: 0 |
|||
max: 1 |
|||
center: |
|||
m_OverrideState: 1 |
|||
m_Value: {x: 0.5, y: 0.5} |
|||
scale: |
|||
m_OverrideState: 1 |
|||
m_Value: 1 |
|||
min: 0.01 |
|||
max: 5 |
|
|||
fileFormatVersion: 2 |
|||
guid: 1f38bcef59815b3429d705dd5e490517 |
|||
NativeFormatImporter: |
|||
externalObjects: {} |
|||
mainObjectFileID: 0 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
# Parameters |
|||
|
|||
## Lookup Parameters |
|||
|
|||
To obtain a parameter from a paramter configuration, use the GetParameter() method: |
|||
``` |
|||
// Get a reference to the parameter configuration attached to this GameObject |
|||
var parameterConfiguration = GetComponent<ParameterConfiguration>(); |
|||
|
|||
// Lookup the parameter "ObjectWidth" by name |
|||
var parameter = GetComponent<FloatParameter>("ObjectWidth"); |
|||
``` |
|||
|
|||
## Creating and Sampling Parameters |
|||
|
|||
Parameters are typically managed by `ParameterConfigurations` in the Unity Editor. However, parameters can be instanced independently like a regular class too: |
|||
``` |
|||
// Create a color parameter |
|||
var colorParameter = new HsvaColorParameter(); |
|||
|
|||
// Generate one color sample |
|||
var color = colorParameter.Sample(); |
|||
``` |
|||
|
|||
Note that parameters, like samplers, generate new random values for each call to the Sample() method: |
|||
``` |
|||
var color1 = colorParameter.Sample(); |
|||
var color2 = colorParameter.Sample(); |
|||
Assert.AreNotEqual(color1, color2); |
|||
``` |
|||
|
|||
## Defining Custom Parameters |
|||
|
|||
All parameters derive from the `Parameter` abstract class, but all included perception package parameter types derive from two specialized Parameter base classes: |
|||
1. `CategoricalParameter` |
|||
2. `NumericParameter` |
|||
|
|||
### Categorical Parameters |
|||
|
|||
Categorical parameters choose a value from a list of options that have no intrinsic ordering. For example, a material paramater randomly chooses from a list of material options, but the list of material options itself can be rearranged into any particular order without affecting the distribution of materials selected. |
|||
|
|||
If your custom parameter is a categorical in nature, take a look at the [StringParameter]() class included in the perception package as a reference for how to derive the `CategoricalParameter` class. |
|||
``` |
|||
using UnityEngine.Perception.Randomization.Parameters.Attributes; |
|||
|
|||
namespace UnityEngine.Perception.Randomization.Parameters |
|||
{ |
|||
[AddComponentMenu("")] |
|||
[ParameterMetaData("String")] |
|||
public class StringParameter : CategoricalParameter<string> {} |
|||
} |
|||
``` |
|||
|
|||
**Note:** the AddComponentMenu attribute with an empty string prevents parameters from appearing in the Add Component GameObject menu. Randomization parameters should only be created with by a `ParameterConfiguration` |
|||
|
|||
### Numeric Parameters |
|||
|
|||
Numeric parameters use samplers to generate randomized structs. Take a look at the [ColorHsvaParameter]() class included in the perception package for an example on how to implement a numeric parameter. |
|||
|
|||
## Improving Sampling Performance |
|||
For numeric parameters, it is recommended to use the JobHandle overload of the Samples() method when generating a large number of samples. The JobHandle overload will utilize the Unity Burst Compiler and Job System to automatically optimize and multithread parameter sampling jobs. The code block below is an example of how to use this overload to sample two parameters in parallel: |
|||
``` |
|||
// Get a reference to the parameter configuration attached to this GameObject |
|||
var parameterConfiguration = GetComponent<ParameterConfiguration>(); |
|||
|
|||
// Lookup parameters |
|||
var cubeColorParameter = parameterConfiguration.GetParameter<HsvaColorParameter>("CubeColor"); |
|||
var cubePositionParameter = parameterConfiguration.GetParameter<Vector3Parameter>("CubePosition"); |
|||
|
|||
// Schedule sampling jobs |
|||
var cubeColors = cubeColorParameter.Samples(constants.cubeCount, out var colorHandle); |
|||
var cubePositions = cubePositionParameter.Samples(constants.cubeCount, out var positionHandle); |
|||
|
|||
// Combine job handles |
|||
var handles = JobHandle.CombineDependencies(colorHandle, positionHandle); |
|||
|
|||
// Wait for the jobs to complete |
|||
handles.Complete(); |
|||
|
|||
// Use the created samples |
|||
for (var i = 0; i < constants.cubeCount; i++) |
|||
{ |
|||
m_ObjectMaterials[i].SetColor(k_BaseColorProperty, cubeColors[i]); |
|||
m_Objects[i].transform.position = cubePositions[i]; |
|||
} |
|||
|
|||
// Dispose of the generated samples |
|||
cubeColors.Dispose(); |
|||
cubePositions.Dispose(); |
|||
``` |
|
|||
# Samplers |
|||
Samplers in the perception package are classes that deterministically generate random float values from bounded probability distributions. Although samplers are often used in conjunction with parameters to generate arrays of typed random values, samplers can be instantiated and used from any ordinary script: |
|||
``` |
|||
var sampler = new NormalSampler(); |
|||
sampler.seed = 123456789u; |
|||
sampler.mean = 3; |
|||
sampler.stdDev = 2; |
|||
sampler.range = new FloatRange(-10, 10); |
|||
|
|||
// Generate a sample |
|||
var sample = sampler.NextSample(); |
|||
``` |
|||
|
|||
Four Samplers are included with the perception package: |
|||
1. Constant Sampler |
|||
2. Uniform Sampler |
|||
3. Normal Sampler |
|||
4. Placeholder Range Sampler |
|||
|
|||
#### Constant Sampler |
|||
Generates constant valued samples |
|||
|
|||
#### Uniform Sampler |
|||
Samples uniformly from a specified range |
|||
|
|||
#### Normal Sampler |
|||
Generates random samples from a truncated normal distribution bounded by a specified range |
|||
|
|||
#### Placeholder Range Sampler |
|||
Used to define a float range [minimum, maximum] for a particular component of a parameter (example: the hue component of a color parameter). This sampler is useful for configuring sample ranges for non-perception related scripts, particularly when these scripts have a public interface for manipulating a minimum and maximum bounds for their sample range but perform the actual sampling logic internally. |
|||
|
|||
|
|||
## Performance |
|||
|
|||
Samplers are designed to be Unity Burst Compiler and Job System compatible to increase simulation performance when generating large numbers of samples. Below is an example of a simple job that uses a NormalSampler directly to create 100 normally distributed samples: |
|||
``` |
|||
[BurstCompile] |
|||
public struct SampleJob : IJob |
|||
{ |
|||
NormalSampler sampler; |
|||
public NativeArray<float> samples; |
|||
|
|||
public void Execute() |
|||
{ |
|||
for (var i = 0; i < samples.Length; i++) |
|||
samples[i] = sampler.NextSample(); |
|||
} |
|||
} |
|||
``` |
|||
Additionally, samplers have a NativeSamples() method that can schedule a ready-made multi-threaded job intended for generating a large array of samples. Below is an example of how to combine two job handles returned by NativeSamples() to generate two arrays of samples simultaneously: |
|||
``` |
|||
// Create samplers |
|||
var uniformSampler = new UniformSampler |
|||
{ |
|||
range = new FloatRange(0, 1), |
|||
seed = 123456789u |
|||
}; |
|||
var normalSampler = new NormalSampler |
|||
{ |
|||
range = new FloatRange(0, 1), |
|||
mean = 0, |
|||
stdDev = 1, |
|||
seed = 987654321u |
|||
}; |
|||
|
|||
// Create sample jobs |
|||
var uniformSamples = uniformSampler.NativeSamples(1000, out var uniformHandle); |
|||
var normalSamples = normalSampler.NativeSamples(1000, out var normalHandle); |
|||
|
|||
// Combine job handles |
|||
var combinedJobHandles = JobHandle.CombineDependencies(uniformHandle, normalHandle); |
|||
|
|||
// Wait for jobs to complete |
|||
combinedJobHandles.Complete(); |
|||
|
|||
//... |
|||
// Use samples |
|||
//... |
|||
|
|||
// Dispose of sample arrays |
|||
uniformSamples.Dispose(); |
|||
normalSamples.Dispose(); |
|||
``` |
|||
|
|||
|
|||
## Custom Samplers |
|||
Take a look at the [UniformSampler](../../Runtime/Randomization/Samplers/SamplerTypes/UniformSampler) and [NormalSampler](../../Runtime/Randomization/Samplers/SamplerTypes/NormalSampler) structs as references for implementing your own [ISampler](../../Runtime/Randomization/Samplers/ISampler). Note that the NativeSamples() method in the ISampler interface requires the usage of the Unity Job System. Take a look [here](https://docs.unity3d.com/Manual/JobSystem.html) to learn more about how to create jobs using the Unity Job System. |
|
|||
# Scenarios |
|||
|
|||
Scenarios have three responsibilities: |
|||
1. Controlling the execution flow of your simulation |
|||
2. Customizing the application of random parameters in your project |
|||
3. Defining constants that can be configured externally from a built Unity player |
|||
|
|||
By default, the perception package includes one ready-made scenario, the `FixedFrameLengthScenario` class. This scenario is useful for when all created parameters have target GameObjects configured directly in the `ParameterConfiguration` and the scenario execution requires little modification. |
|||
|
|||
More commonly, users will find the need to create their own Scenario class. Below is an overview of the more common scenario properties and methods a user can override: |
|||
1. **isIterationComplete** - determines the conditions that cause the end of a scenario iteration |
|||
2. **isScenarioComplete** - determines the conditions that cause the end of a scenario |
|||
3. **Initialize** - actions to complete before the scenario has begun iterating |
|||
4. **Setup** - actions to complete at the beginning of each iteration |
|||
5. **Teardown** - actions to complete at the end of each iteration |
|||
6. **OnComplete** - actions to complete after the scenario as completed |
|||
|
|||
## Constants |
|||
Scenarios define constants from which to expose global simulation behaviors like a starting iteration value or a total iteration count. Users can serialize these scenario constants to JSON, modify them in an external program, and finally reimport the JSON constants at runtime to configure their simulation even after their project has been built. Below is an example of the constants used in the `FixedLengthScenario` class: |
|||
``` |
|||
[Serializable] |
|||
public class Constants |
|||
{ |
|||
public int iterationFrameLength = 1; |
|||
public int startingIteration; |
|||
public int totalIterations = 1000; |
|||
} |
|||
``` |
|||
A few key things to note here: |
|||
1. Make sure to include the [Serializable] attribute on a constant class. This will ensure that the constants can be manipulated from the Unity inspector. |
|||
2. By default, UnityEngine.Object class references cannot be serialized to JSON in a meaningful way. This includes Monobehaviors and SerializedObjects. For more information on what can and can't be serialized, take a look at the [Unity JsonUtility manual](https://docs.unity3d.com/ScriptReference/JsonUtility.html). |
|||
3. A scenario class's Serialize() and Deserialized() methods can be overriden to implement custom serialization strategies. |
|
|||
# Randomization Tutorial |
|||
|
|||
This goal of this tutorial is to walk users through an example randomized perception project that explores the following activities: |
|||
1. Creating a parameter configuration |
|||
2. Customizing parameters and samplers |
|||
4. Configuring a scenario to run the simulation |
|||
5. Configure the perception camera |
|||
6. Building a simulation runtime |
|||
7. Modifying scenario constants |
|||
|
|||
By the end of this guide, the user should have a new project that generates the perception data necessary to train a model to identify a cube from a solid colored background. |
|||
|
|||
Note: Before beginning the tutorial, follow [this guide](../SetupSteps.md) to install the perception package into a new Unity project. |
|||
|
|||
|
|||
## Step 1: Create Scene and GameObjects |
|||
1. Create a new scene using `File -> New Scene` |
|||
2. Use the key combo `Ctrl+S` to save and name the new scene |
|||
3. Create a new cube GameObject |
|||
1. Create a new cube GameObject by navigating to `GameObject -> 3D Object -> Cube` in the menubar |
|||
2. Rename the new cube GameObject "Cube" by double clicking on the new GameObject that appeared in the hierarchy |
|||
3. Reset the cube's transform component by right clicking on transform component in the cube's inpector and clicking `Reset` |
|||
4. Create a new background GameObject |
|||
1. Create a new quad GameObject and rename it "Background" |
|||
2. Set the background quad's position to (0, 0, 2) to set it behind the cube and make the quad large enough to fill the camera by change the quad's scale to (30, 30, 1) |
|||
5. In the *MeshRenderer* component of the *Cube* and *Background* GameObjects, set `Lighting -> Cast shadows -> Off` to prevent the two objects from casting shadows on each other |
|||
|
|||
|
|||
## Step 2: Create Parameter Configuration |
|||
1. Create a new empty GameObject by using `GameObject -> Create Empty` from the menubar |
|||
2. Rename the new empty GameObject "Config" by double clicking on the new GameObject that appeared in the hierarchy |
|||
3. To add a new Parameter Configuration component to the Config GameObject, click on the GameObject in the hierarchy and then click the `Add Component` button in the inspector window. Select `Randomization -> Parameter Configuration` to add the new component. |
|||
|
|||
|
|||
## Step 3: Create and Customize Parameters |
|||
In this step, we will configure 6 parameters to randomize the scene: *CubePosition*, *CubeRotation*, *CubeScale*, *CubeColor*, *BackgroundColor*, and *CameraRotation* |
|||
|
|||
#### Parameter 1: Cube Position |
|||
1. Create a new Vector3 parameter by clicking *Add New Parameter -> Vector3* on the parameter configuration inspector |
|||
2. Rename the parameter "CubePosition" by typing the text box next to the blue text indicating the parameter's type |
|||
3. Click the *Target GameObject* checkbox and select the *Cube* GameObject in the target object selector. Select the property *position* from the property dropdown. |
|||
4. Consider using the following sampler values: |
|||
* X : Uniform [-5, 5] |
|||
* Y : Uniform [-5, 5] |
|||
* Z : Constant [Value = 0] |
|||
|
|||
#### Parameter 2: Cube Rotation |
|||
1. Create a new Vector3 parameter named "CubeRotation" |
|||
2. Select the *Cube* GameObject as the target GameObject and select the property *Transform.eulerAngles* from the property dropdown |
|||
3. Consider using the following component values: |
|||
* X : Uniform [0, 360] |
|||
* Y : Uniform [0, 360] |
|||
* Z : Uniform [0, 360] |
|||
|
|||
#### Parameter 3: Cube Scale |
|||
1. Create a new Vector3 parameter named "CubeScale" |
|||
2. Select the *Cube* GameObject as the target GameObject and select the property *Transform.localScale* from the property dropdown |
|||
3. Consider using the following component values: |
|||
* X : Uniform [0.5, 2] |
|||
* Y : Uniform [0.5, 2] |
|||
* Z : Uniform [0.5, 2] |
|||
4. To ensure that the X, Y, and Z samplers all sample equal scale values, copy the X sampler's random seed to all three samplers |
|||
|
|||
#### Parameter 4: Cube Color |
|||
1. Create a new ColorHSVA parameter named "CubeColor" |
|||
2. Skip setting the target GameObject. We will be using this parameter from within the scenario instead. |
|||
3. Consider using the following component values: |
|||
* Hue : Uniform [0, 1] |
|||
* Saturation : Uniform [0, 1] |
|||
* Value : Uniform [0.25, 1] |
|||
* Alpha : Constant [Value = 0] |
|||
|
|||
#### Parameter 5: Background Color |
|||
1. Create a new ColorHSVA parameter named "BackgroundColor" |
|||
2. Skip setting the target GameObject. We will be using this parameter from within the scenario instead. |
|||
3. Consider using the following component values: |
|||
* Hue : Uniform [0, 1] |
|||
* Saturation : Uniform [0, 1] |
|||
* Value : Uniform [0.25, 1] |
|||
* Alpha : Constant [Value = 0] |
|||
|
|||
#### Parameter 6: Camera Rotation |
|||
1. Create a new Vector3 parameter named "CameraRotation" |
|||
2. Select the *Main Camera* GameObject as the target GameObject and select the property *Transform.eulerAngles* from the property dropdown |
|||
3. Consider using the following component values: |
|||
* X : Constant [Value = 0] |
|||
* Y : Constant [Value = 0] |
|||
* Z : Uniform [0, 360] |
|||
|
|||
|
|||
## Step 4: Configure Scenario |
|||
1. Right click on the *Scripts* folder in the project hierarchy and select `Create -> C# Script`. Name the script "CubeScenario" and press enter. |
|||
2. Double click on the new "CubeScenario" script to open it for edit |
|||
3. In your code editor, paste the following C# code into the CubeScenario script: |
|||
``` |
|||
using System; |
|||
using UnityEngine; |
|||
using UnityEngine.Perception.Randomization.Configuration; |
|||
using UnityEngine.Perception.Randomization.Parameters; |
|||
using UnityEngine.Perception.Randomization.Scenarios; |
|||
|
|||
public class CubeScenario : Scenario<CubeScenario.Constants> |
|||
{ |
|||
[Serializable] |
|||
public class Constants |
|||
{ |
|||
public int totalIterations = 1000; |
|||
} |
|||
|
|||
public override bool isIterationComplete => currentIterationFrame >= 1; |
|||
public override bool isScenarioComplete => currentIteration >= constants.totalIterations; |
|||
|
|||
public ParameterConfiguration config; |
|||
public GameObject background; |
|||
public GameObject cube; |
|||
|
|||
ColorHsvaParameter m_BackgroundColorParameter; |
|||
ColorHsvaParameter m_CubeColorParameter; |
|||
Material m_BackgroundMaterial; |
|||
Material m_CubeMaterial; |
|||
static readonly int k_BaseColor = Shader.PropertyToID("_BaseColor"); |
|||
|
|||
public override void OnInitialize() |
|||
{ |
|||
m_BackgroundColorParameter = config.GetParameter<ColorHsvaParameter>("BackgroundColor"); |
|||
m_CubeColorParameter = config.GetParameter<ColorHsvaParameter>("CubeColor"); |
|||
m_BackgroundMaterial = background.GetComponent<MeshRenderer>().material; |
|||
m_CubeMaterial = cube.GetComponent<MeshRenderer>().material; |
|||
} |
|||
|
|||
public override void OnIterationSetup() |
|||
{ |
|||
m_BackgroundMaterial.SetColor(k_BaseColor, m_BackgroundColorParameter.Sample()); |
|||
m_CubeMaterial.SetColor(k_BaseColor, m_CubeColorParameter.Sample()); |
|||
} |
|||
} |
|||
``` |
|||
So what is this CubeScenario script accomplishing? |
|||
1. The *Constants* nested class in this scenario script determines what scenario parameters can be JSON serialized. Only these parameters can be changed externally from a built player. In this example, we expose the number of total iterations the scenario will complete. |
|||
2. The overrided properties *isIterationComplete* and *isScenarioComplete* are checked before every frame to control the scenario's execution flow. In this case, the scenario will execute for only one frame for each iteration and continue executing until reaching the total iteration limit set by the *totalIterations* field in the constants class. |
|||
3. In Unity, manipulating the color of a material is a shader specific task that cannot be accomplished directly from a color parameter's target GameObject setting. Instead we: |
|||
1. Expose a reference to the parameter configuration this scenario's inspector as the public script variable |
|||
2. Cache the ID of the *_BaseColor* shader property |
|||
3. Override the OnInitialize() method to cache a few references. First, we lookup the parameters *BackgroundColor* and *CubeColor* by name from the the parameter configuration. Second, we grab the references to the materials attached to the cube and background GameObjects when the simulation starts. |
|||
4. Override the OnIterationSetup() method to apply randomly sampled color values to the shaders of the cached materials at the beginning of each scenario iteration |
|||
4. Back in the Unity editor, navigate to the inspector of the *Config* GameObject and use `Add Component -> CubeScenario` to add the new CubeScenario component to your parameter configuration. |
|||
5. Open the constants dropdown and confirm how many iterations the scenario should run (the default is 1000) |
|||
6. Use the *backgroundColorParameter* and *cubeColorParameter* dropdowns to inform the script of which parameters in the configuration to use for the BackgroundColor and CubeColor respectively. |
|||
7. Select the *Background* and *Cube* GameObjects from their respective GameObject field selectors |
|||
8. Confirm that the scenario and parameter configuration are composed properly by clicking the play button in the editor. In the Game window, a cube of different sizes, rotations, scales, and colors should be appearing against a color changing background. |
|||
9. To serialize the constants used in the scenario to JSON for external modification after this project has been built into a runtime, click the *Serialize Config* button on the parameter configuration |
|||
|
|||
|
|||
## Step 5: Configure Perception Camera |
|||
Read through the [general perception getting started guide](../GettingStarted.md) before completing the following steps: |
|||
1. (For URP projects) Add GroundTruthRendererFeature |
|||
2. Add a *PerceptionCamera* component to the MainCamera |
|||
3. Label the cube |
|||
1. Add a *Labeling* component to the cube GameObject |
|||
2. Create a *LabelingConfiguration* asset |
|||
3. Add the cube label to the new configuration |
|||
4. Select the new configuration asset from the perception camera |
|||
4. Enter play mode to confirm that labeled data is being generated |
|||
|
|||
|
|||
## Step 6: Build Simulation Runtime |
|||
1. Create a new sub-folder under "Assets" in the Project Hierarchy named "BuildConfigurations" |
|||
2. Right click on the BuildConfigurations folder and use `Create -> Build -> Empty Build Configuration` to create a new build configuration asset |
|||
3. Rename the build configuration asset "TutorialBuild" |
|||
4. Copy the settings from the example build configuration screenshot below: |
|||
![TutorialBuild](Images/TutorialBuild.png) |
|||
5. Click the "Build" button in the upper righthand corner of the build configuration inspector to create an executable of the tutorial scene. |
|||
|
|||
|
|||
## Step 7: Modify Scenario Constants |
|||
**Note**: Make sure that the "Deserialize On Start" field is checked in the scenario's inspector. A player built without this field checked will cause the player to not load serialized constants. |
|||
|
|||
1. Navigate to the folder created during the build from the previous step of this tutorial (example: C:\projects\RandomizationTutorial\Builds\Tutorial) |
|||
2. Open the "_Data" folder (example: Tutorial_Data) and then open the "StreamingAssets" folder |
|||
3. Inside the folder should be the JSON scenario constants serialized from the parameter configuration in Step 4 |
|||
4. Edit this JSON file to update the scenario constants used in the player |
|||
5. Confirm the new constants are deserialized at runtime by executing the simulation |
|
|||
# Overview |
|||
|
|||
*NOTICE: The perception randomization toolset is currently marked as experimental and will experience a number of updates in the near future.* |
|||
|
|||
The randomization toolset simplifies randomizing aspects of generating synthetic data. It facilitates exposing parameters for randomization, offers samplers to pick random values from parameters, and provides scenarios to define a full randomization process. Each of these also allows for custom implementations to fit particular randomization needs. |
|||
|
|||
**What is Domain Randomization?** |
|||
|
|||
Domain randomization is used to create variability in synthetic datasets to help ML models trained in a synthetic domain (Unity) work well in real world applications. The intuition is that the real world is complex and varies widely, while synthetic datasets have limited variation. By randomizing parts of the synthetic domain the ML model will be exposed to enough variability to perform well when deployed. Domain randomization techniques vary widely in what they randomize and how they choose the randomization to apply. The randomization toolset is intended to facilitate a broad variety of implementations and applications. |
|||
|
|||
Our use of domain randomization draws from Tobin et al. (2017) work training robotic pick and place using purely synthetic data. |
|||
|
|||
**How can a Unity project be randomized using the Perception Randomization toolset?** |
|||
|
|||
Randomizing a project involves the following steps: |
|||
1. Create a parameter configuration |
|||
2. Add parameters to the parameter configuration |
|||
3. Customize parameter properties and samplers |
|||
4. Create a scenario to control simulation execution |
|||
|
|||
As the first step mentions, randomization begins with creating a new ParameterConfiguration component. From here, users can configure and organize new random parameters to control various aspects of their simulation directly from the inspector in the Unity editor. |
|||
|
|||
![Example Parameters](./Images/ParameterConfiguration.png) |
|||
|
|||
Next, create a few parameters and modify their properties. Parameters often customize their random variables through the parameter configuration using samplers. Samplers enable users to specify a type of probabilty distribution to use when generating random values. |
|||
|
|||
Finally, add a Scenario component to the scene. Scenarios are used to coordinate the application of randomizations during the execution of a simulation. |
|||
|
|||
|
|||
|
|||
Continue reading for more details concerning the three primary components driving randomizations in the perception package: parameters, samplers, and scenarios. |
|||
|
|||
## Parameters |
|||
|
|||
Parameters are used to map common types of simulation properties to random variables. For example, a Vector3 size parameter can be used to randomize the x, y, and z dimensions of an obstacle. Or a material parameter can be used to swap between different terrain surface materials. Additionally, parameter sub-properties can be modified from the parameter configuration in playmode better visualize the impact of different randomization settings. |
|||
|
|||
To read more about how to create custom parameter types, navigate over to the [parameters doc](Parameters.md). |
|||
|
|||
|
|||
## Samplers |
|||
|
|||
Samplers generate random float values by sampling from probability distributions. They are considered bounded since each random sampler generates float values within a range defined by a minumum and maximum value. The values generated from samplers are often used to randomize the sub components of parameters. |
|||
|
|||
![Example Parameters](./Images/ColorParameter.png) |
|||
|
|||
For example, a color parameter has four independently randomizable components: hue, saturation, value, and alpha. Each of the four samplers attached to a color parameter can employ a unique probability distribution to customize how new colors are sampled within a simulation. Out of the box, the perception package supports uniform and normal distribution sampling. So in our color example, a user may choose a normal distribution for their hue, a uniform distribution for saturation, and a constant value sampler for the value and alpha color components. |
|||
|
|||
Take a look at the [samplers doc](Samplers.md) to learn more about implementing custom probability distributions and samplers that can integrate with the perception package. |
|||
|
|||
|
|||
## Scenarios |
|||
|
|||
Scenarios have three responsibilities: |
|||
1. Controlling the execution flow of your simulation |
|||
2. Customizing the application of random parameters in your project |
|||
3. Defining constants that can be configured externally from a built Unity player |
|||
|
|||
The fundamental principle of domain randomization is to simulate environments under a variety of randomized conditions. Each **iteration** of a scenario is intended to encapsulate one complete run of a simulated environment under uniquely randomized conditions. Scenarios determine how to setup a new iteration, what conditions determine the end of an iteration, how to clean up a completed iteration, and finally how many iterations to perform. Each of these behaviors can be customized for a new scenario by deriving from the Scenario class in the perception package. |
|||
|
|||
It is possible to configure parameters to affect simulation properties directly from the parameter configuration. While useful, this feature is constrained to a particular set of use cases. Instead, a user can reference existing parameters in their scenario to implement more intricate randomizations. For example, a user can reference a `SpawnCount` parameter and a `ObjectPosition` parameter to randomize the positions of a dynamic number of objects during the setup step of a scenario. |
|||
|
|||
![Example Parameters](./Images/TestScenario.png) |
|||
|
|||
Finally, scenarios define constants from which to expose global simulation behaviors automatically. By modifying serialized constants externally, users can customize their simulation runtime even after their project has been built. |
|||
|
|||
|
|||
## Getting Started |
|||
|
|||
Visit our [randomization tutorial doc](Tutorial.md) to get started using the perception package's randomization tools in an example project. |
|
|||
fileFormatVersion: 2 |
|||
guid: 3066f77d411047baafb6cc454adc6e37 |
|||
timeCreated: 1595535184 |
部分文件因为文件数量过多而无法显示
撰写
预览
正在加载...
取消
保存
Reference in new issue