浏览代码

made the analytics test more robust

/0.9.0.preview.1_staging
Aryan Mann 3 年前
当前提交
92ec0466
共有 11 个文件被更改,包括 410 次插入449 次删除
  1. 40
      com.unity.perception/Runtime/PerceptionAnalytics.cs
  2. 68
      com.unity.perception/Runtime/PerceptionAnalyticsStructs.cs
  3. 241
      com.unity.perception/Tests/Runtime/Randomization/ScenarioTests/ScenarioTests.cs
  4. 224
      com.unity.perception/Tests/Runtime/Randomization/ScenarioTests/Resources/analyticsSerializationExample.json
  5. 7
      com.unity.perception/Tests/Runtime/Randomization/ScenarioTests/Resources/analyticsSerializationExample.json.meta
  6. 24
      com.unity.perception/Tests/Runtime/Randomization/ScenarioTests/Resources/sampleAnimationPoseConfig.asset
  7. 8
      com.unity.perception/Tests/Runtime/Randomization/ScenarioTests/Resources/sampleAnimationPoseConfig.asset.meta
  8. 23
      com.unity.perception/Tests/Runtime/Randomization/ScenarioTests/Resources/sampleIdLabelConfig.asset
  9. 8
      com.unity.perception/Tests/Runtime/Randomization/ScenarioTests/Resources/sampleIdLabelConfig.asset.meta
  10. 209
      com.unity.perception/Tests/Runtime/Randomization/ScenarioTests/Resources/randomizerAnalyticsSerializationExample.json
  11. 7
      com.unity.perception/Tests/Runtime/Randomization/ScenarioTests/Resources/randomizerAnalyticsSerializationExample.json.meta

40
com.unity.perception/Runtime/PerceptionAnalytics.cs


using System;
using System.Collections.Generic;
using System.Linq;
using Unity.Simulation;
using UnityEngine.Analytics;
using UnityEngine;
using UnityEngine.Perception.GroundTruth;

/// <summary>
/// Which labelers will be identified and included in the analytics information.
/// </summary>
public static readonly Type[] labelerAllowList = new[]
public static readonly string[] labelerAllowList = new[]
typeof(BoundingBox3DLabeler), typeof(BoundingBox2DLabeler), typeof(InstanceSegmentationLabeler),
typeof(KeypointLabeler), typeof(ObjectCountLabeler), typeof(SemanticSegmentationLabeler)
"BoundingBox3DLabeler", "BoundingBox2DLabeler", "InstanceSegmentationLabeler",
"KeypointLabeler", "ObjectCountLabeler", "SemanticSegmentationLabeler", "RenderedObjectInfoLabeler"
internal static void ReportScenarioCompleted(PerceptionCamera cam, IEnumerable<Randomizer> randomizers)
internal static void ReportScenarioCompleted(
PerceptionCamera cam,
IEnumerable<Randomizer> randomizers
)
{
try
{

var data = new ScenarioCompletedData();
if (cam != null)
{
// Perception Camera Data
data.perceptionCamera = new PerceptionCameraData()
{
captureTriggerMode = cam.captureTriggerMode.ToString(),
startAtFrame = cam.firstCaptureFrame,
framesBetweenCaptures = cam.framesBetweenCaptures
};
// Labeler Data
data.labelers = cam.labelers
.Select(LabelerData.FromLabeler)
.Where(labeler => labeler != null).ToArray();
}
var randomizerList = randomizers.ToArray();
if (randomizerList.Any())
{
data.randomizers = randomizerList
.Select(RandomizerData.FromRandomizer)
.Where(x => x != null).ToArray();
}
var data = ScenarioCompletedData.FromCameraAndRandomizers(cam, randomizers);
SendEvent(k_EventScenarioInformation, data);
}
catch

68
com.unity.perception/Runtime/PerceptionAnalyticsStructs.cs


using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using Unity.Simulation;
using UnityEngine.Perception.GroundTruth;
using UnityEngine.Perception.Randomization.Parameters;
using UnityEngine.Perception.Randomization.Randomizers;

#endregion
#region Scenario Information
[Serializable]
public class PerceptionCameraData
{

{
public string name;
public int labelConfigCount;
public string objectFilter;
public string objectFilter = "";
if (!PerceptionAnalytics.labelerAllowList.Contains(labelerType))
var labelerName = labelerType.Name;
if (!PerceptionAnalytics.labelerAllowList.Contains(labelerName))
name = labeler.GetType().Name
name = labelerName
};
switch (labeler)

case SemanticSegmentationLabeler ssl:
labelerData.labelConfigCount = ssl.labelConfig.labelEntries.Count;
break;
case RenderedObjectInfoLabeler rol:
labelerData.labelConfigCount = rol.idLabelConfig.labelEntries.Count;
break;
default:
labelerData = null;
break;
}
return labelerData;

{
public string name;
public string distribution;
public float value = int.MinValue;
public float rangeMinimum = int.MinValue;
public float rangeMaximum = int.MinValue;
public float mean = int.MinValue;
public float stdDev = int.MinValue;
public int categoricalParameterCount = int.MinValue;
public float value;
public float rangeMinimum;
public float rangeMaximum;
public float mean;
public float stdDev;
public int categoricalParameterCount;
public static ParameterField ExtractSamplerInformation(ISampler sampler, string fieldName = "value")
{

public PerceptionCameraData perceptionCamera;
public LabelerData[] labelers;
public RandomizerData[] randomizers;
internal static ScenarioCompletedData FromCameraAndRandomizers(
PerceptionCamera cam,
IEnumerable<Randomizer> randomizers
)
{
var data = new ScenarioCompletedData()
{
platform = (Configuration.Instance.IsSimulationRunningInCloud()) ? "USim": Application.platform.ToString()
};
if (cam != null)
{
// Perception Camera Data
data.perceptionCamera = new PerceptionCameraData()
{
captureTriggerMode = cam.captureTriggerMode.ToString(),
startAtFrame = cam.firstCaptureFrame,
framesBetweenCaptures = cam.framesBetweenCaptures
};
// Labeler Data
data.labelers = cam.labelers
.Select(LabelerData.FromLabeler)
.Where(labeler => labeler != null).ToArray();
}
var randomizerList = randomizers.ToArray();
if (randomizerList.Any())
{
data.randomizers = randomizerList
.Select(RandomizerData.FromRandomizer)
.Where(x => x != null).ToArray();
}
else
{
data.randomizers = new RandomizerData[] { };
}
return data;
}
}
#endregion

241
com.unity.perception/Tests/Runtime/Randomization/ScenarioTests/ScenarioTests.cs


using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Unity.Collections;
using UnityEngine.Perception;
using UnityEngine.Perception.Analytics;
using UnityEngine.Perception.Randomization.Randomizers.SampleRandomizers;
using UnityEngine.Perception.Randomization.Samplers;

// State: currentIteration = 0
Assert.AreEqual(0, m_Scenario.currentIteration);
yield return null;
[Test]
}
public void ScenarioCompletedAnalyticsSerializesCorrectly()
[UnityTest]
public IEnumerator ScenarioCompletedAnalyticsSerializesCorrectly()
// Setup test randomizer
// Perception Camera Serialization
var perceptionCamera = m_TestObject.AddComponent<PerceptionCamera>();
perceptionCamera.captureTriggerMode = CaptureTriggerMode.Scheduled;
perceptionCamera.firstCaptureFrame = 2;
perceptionCamera.framesBetweenCaptures = 10;
// Labeler serialization
var sampleIdLabelConfig = Resources.Load<IdLabelConfig>("sampleIdLabelConfig");
var sampleAnimationPoseConfig = Resources.Load<AnimationPoseConfig>("sampleAnimationPoseConfig");
var emptyKeypointTemplate = ScriptableObject.CreateInstance<KeypointTemplate>();
emptyKeypointTemplate.keypoints = new KeypointDefinition[] { };
emptyKeypointTemplate.skeleton = new SkeletonDefinition[] { };
perceptionCamera.AddLabeler(new BoundingBox2DLabeler(sampleIdLabelConfig));
perceptionCamera.AddLabeler(new RenderedObjectInfoLabeler(sampleIdLabelConfig));
perceptionCamera.AddLabeler(new KeypointLabeler()
{
idLabelConfig = sampleIdLabelConfig,
objectFilter = KeypointObjectFilter.Visible,
activeTemplate = emptyKeypointTemplate,
animationPoseConfigs = new List<AnimationPoseConfig>()
{
sampleAnimationPoseConfig, sampleAnimationPoseConfig
}
});
// Randomizer Serialization
var randomizers = new List<Randomizer>();
var testRandomizer = new AllMembersAndParametersTestRandomizer();
testRandomizer.colorRgbCategoricalParam.SetOptions(new (Color, float)[]
{

});
var randomizerData =
RandomizerData.FromRandomizer(testRandomizer);
randomizers.Add(testRandomizer);
Assert.IsTrue(randomizerData != null);
yield return null;
/*
// Parameters
var expectedSerializedValue =
new RandomizerData()
{
name = nameof(AllMembersAndParametersTestRandomizer),
members = new[]
{
new MemberData()
{
name = "booleanMember",
type = "System.Boolean",
value = "False"
},
new MemberData()
{
name = "intMember",
type = "System.Int32",
value = "4"
},
new MemberData()
{
name = "uintMember",
type = "System.UInt32",
value = "2"
},
new MemberData()
{
name = "floatMember",
type = "System.Single",
value = "5"
},
new MemberData()
{
name = "vector2Member",
type = "UnityEngine.Vector2",
value = "(4.0, 7.0)"
},
new MemberData()
{
name = "unsupportedMember",
type = "UnityEngine.Perception.PerceptionEngineAnalytics+MemberData",
value = "UnityEngine.Perception.PerceptionEngineAnalytics+MemberData"
}
},
parameters = new[]
{
new ParameterData()
{
name = "booleanParam",
type = "BooleanParameter",
fields = new List<ParameterField>()
{
new ParameterField()
{
distribution = "Constant",
name = "value",
value = 1
},
}
},
new ParameterData()
{
name = "floatParam",
type = "FloatParameter",
fields = new List<ParameterField>()
{
new ParameterField()
{
distribution = "AnimationCurve",
name = "value",
}
}
},
new ParameterData()
{
name = "integerParam",
type = "IntegerParameter",
fields = new List<ParameterField>()
{
new ParameterField()
{
distribution = "Uniform",
name = "value",
rangeMinimum = -3, rangeMaximum = 7
}
}
},
new ParameterData()
{
name = "vector2Param",
type = "Vector2Parameter",
fields = new List<ParameterField>()
{
new ParameterField()
{
distribution = "Constant",
name = "x",
value = 2
},
new ParameterField()
{
distribution = "Uniform",
name = "y",
rangeMinimum = -4, rangeMaximum = 8
}
}
},
new ParameterData()
{
name = "vector3Param",
type = "Vector3Parameter",
fields = new List<ParameterField>()
{
new ParameterField()
{
distribution = "Normal",
name = "x",
rangeMinimum = -5, rangeMaximum = 9,
mean = 4, stdDev = 2
},
new ParameterField()
{
distribution = "Constant",
name = "y",
value = 3
},
new ParameterField()
{
distribution = "AnimationCurve",
name = "z",
}
}
},
new ParameterData()
{
name = "vector4Param",
type = "Vector4Parameter",
fields = new List<ParameterField>()
{
new ParameterField()
{
distribution = "Normal",
name = "x",
rangeMinimum = -5, rangeMaximum = 9,
mean = 4, stdDev = 2
},
new ParameterField()
{
distribution = "Constant",
name = "y",
value = 3
},
new ParameterField()
{
distribution = "AnimationCurve",
name = "z",
},
new ParameterField()
{
distribution = "Uniform",
name = "w",
rangeMinimum = -12, rangeMaximum = 42
}
}
},
new ParameterData()
{
name = "colorRgbCategoricalParam",
type = "ColorRgbCategoricalParameter",
fields = new List<ParameterField>()
{
new ParameterField()
{
distribution = "Categorical",
name = "values",
categoricalParameterCount = 3
}
}
}
}
};
*/
// Scenario Completed Serialization
var scenarioCompletedData = ScenarioCompletedData.FromCameraAndRandomizers(perceptionCamera, randomizers);
var expectedRandomizerJson = RemoveWhitespace(((TextAsset)Resources.Load("analyticsSerializationExample")).text);
var actualRandomizerJson = RemoveWhitespace(JsonConvert.SerializeObject(scenarioCompletedData));
var expectedSerializedValueJson = RemoveWhitespace(((TextAsset)Resources.Load("randomizerAnalyticsSerializationExample")).text);
var serializedValueJson = RemoveWhitespace(JsonConvert.SerializeObject(randomizerData));
Assert.AreEqual(expectedRandomizerJson, actualRandomizerJson);
Assert.AreEqual(expectedSerializedValueJson, serializedValueJson);
Object.DestroyImmediate(emptyKeypointTemplate);
}
PerceptionCamera SetupPerceptionCamera()

224
com.unity.perception/Tests/Runtime/Randomization/ScenarioTests/Resources/analyticsSerializationExample.json


{
"platform": "OSXEditor",
"perceptionCamera": {
"captureTriggerMode": "Scheduled",
"startAtFrame": 2,
"framesBetweenCaptures": 10
},
"labelers": [
{ "name": "BoundingBox2DLabeler", "labelConfigCount": 3, "objectFilter": "", "animationPoseCount": 0 },
{ "name": "RenderedObjectInfoLabeler", "labelConfigCount": 3, "objectFilter": "", "animationPoseCount": 0 },
{ "name": "KeypointLabeler", "labelConfigCount": 3, "objectFilter": "Visible", "animationPoseCount": 2 }
],
"randomizers": [
{
"name": "AllMembersAndParametersTestRandomizer",
"members": [
{
"name": "booleanMember",
"value": "False",
"type": "System.Boolean"
},
{
"name": "intMember",
"value": "4",
"type": "System.Int32"
},
{
"name": "uintMember",
"value": "2",
"type": "System.UInt32"
},
{
"name": "floatMember",
"value": "5",
"type": "System.Single"
},
{
"name": "vector2Member",
"value": "(4.0, 7.0)",
"type": "UnityEngine.Vector2"
},
{
"name": "unsupportedMember",
"value": "UnityEngine.Perception.Randomization.Samplers.UniformSampler",
"type": "UnityEngine.Perception.Randomization.Samplers.UniformSampler"
}
],
"parameters": [
{
"name": "booleanParam",
"type": "BooleanParameter",
"fields": [
{
"name": "value",
"distribution": "Constant",
"value": 1.0,
"rangeMinimum": 0.0,
"rangeMaximum": 0.0,
"mean": 0.0,
"stdDev": 0.0,
"categoricalParameterCount": 0
}
]
},
{
"name": "floatParam",
"type": "FloatParameter",
"fields": [
{
"name": "value",
"distribution": "AnimationCurve",
"value": 0.0,
"rangeMinimum": 0.0,
"rangeMaximum": 0.0,
"mean": 0.0,
"stdDev": 0.0,
"categoricalParameterCount": 0
}
]
},
{
"name": "integerParam",
"type": "IntegerParameter",
"fields": [
{
"name": "value",
"distribution": "Uniform",
"value": 0.0,
"rangeMinimum": -3.0,
"rangeMaximum": 7.0,
"mean": 0.0,
"stdDev": 0.0,
"categoricalParameterCount": 0
}
]
},
{
"name": "vector2Param",
"type": "Vector2Parameter",
"fields": [
{
"name": "x",
"distribution": "Constant",
"value": 2.0,
"rangeMinimum": 0.0,
"rangeMaximum": 0.0,
"mean": 0.0,
"stdDev": 0.0,
"categoricalParameterCount": 0
},
{
"name": "y",
"distribution": "Uniform",
"value": 0.0,
"rangeMinimum": -4.0,
"rangeMaximum": 8.0,
"mean": 0.0,
"stdDev": 0.0,
"categoricalParameterCount": 0
}
]
},
{
"name": "vector3Param",
"type": "Vector3Parameter",
"fields": [
{
"name": "x",
"distribution": "Normal",
"value": 0.0,
"rangeMinimum": -5.0,
"rangeMaximum": 9.0,
"mean": 4.0,
"stdDev": 2.0,
"categoricalParameterCount": 0
},
{
"name": "y",
"distribution": "Constant",
"value": 3.0,
"rangeMinimum": 0.0,
"rangeMaximum": 0.0,
"mean": 0.0,
"stdDev": 0.0,
"categoricalParameterCount": 0
},
{
"name": "z",
"distribution": "AnimationCurve",
"value": 0.0,
"rangeMinimum": 0.0,
"rangeMaximum": 0.0,
"mean": 0.0,
"stdDev": 0.0,
"categoricalParameterCount": 0
}
]
},
{
"name": "vector4Param",
"type": "Vector4Parameter",
"fields": [
{
"name": "x",
"distribution": "Normal",
"value": 0.0,
"rangeMinimum": -5.0,
"rangeMaximum": 9.0,
"mean": 4.0,
"stdDev": 2.0,
"categoricalParameterCount": 0
},
{
"name": "y",
"distribution": "Constant",
"value": 3.0,
"rangeMinimum": 0.0,
"rangeMaximum": 0.0,
"mean": 0.0,
"stdDev": 0.0,
"categoricalParameterCount": 0
},
{
"name": "z",
"distribution": "AnimationCurve",
"value": 0.0,
"rangeMinimum": 0.0,
"rangeMaximum": 0.0,
"mean": 0.0,
"stdDev": 0.0,
"categoricalParameterCount": 0
},
{
"name": "w",
"distribution": "Uniform",
"value": 0.0,
"rangeMinimum": -12.0,
"rangeMaximum": 42.0,
"mean": 0.0,
"stdDev": 0.0,
"categoricalParameterCount": 0
}
]
},
{
"name": "colorRgbCategoricalParam",
"type": "ColorRgbCategoricalParameter",
"fields": [
{
"name": "values",
"distribution": "Categorical",
"value": 0.0,
"rangeMinimum": 0.0,
"rangeMaximum": 0.0,
"mean": 0.0,
"stdDev": 0.0,
"categoricalParameterCount": 3
}
]
}
]
}
]
}

7
com.unity.perception/Tests/Runtime/Randomization/ScenarioTests/Resources/analyticsSerializationExample.json.meta


fileFormatVersion: 2
guid: 72cc983a50b61400a8489261c65b3e41
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

24
com.unity.perception/Tests/Runtime/Randomization/ScenarioTests/Resources/sampleAnimationPoseConfig.asset


%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: 4c69656f5dd14516a3a18e42b3b43a4e, type: 3}
m_Name: sampleAnimationPoseConfig
m_EditorClassIdentifier:
animationClip: {fileID: 0}
m_Timestamps:
- startOffsetPercent: 0
poseLabel: a
- startOffsetPercent: 24
poseLabel: b
- startOffsetPercent: 45
poseLabel: c
- startOffsetPercent: 89
poseLabel: d

8
com.unity.perception/Tests/Runtime/Randomization/ScenarioTests/Resources/sampleAnimationPoseConfig.asset.meta


fileFormatVersion: 2
guid: 92646dbc24d95413084b0787214fdcb3
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

23
com.unity.perception/Tests/Runtime/Randomization/ScenarioTests/Resources/sampleIdLabelConfig.asset


%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: 2f09f279848e42cea259348b13bce4c5, type: 3}
m_Name: sampleIdLabelConfig
m_EditorClassIdentifier:
m_LabelEntries:
- label: Test 1
id: 1
- label: Test 2
id: 2
- label: Test 3
id: 3
autoAssignIds: 1
startingLabelId: 1

8
com.unity.perception/Tests/Runtime/Randomization/ScenarioTests/Resources/sampleIdLabelConfig.asset.meta


fileFormatVersion: 2
guid: c3dce9f8036624486bdc1e97f0934aa1
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

209
com.unity.perception/Tests/Runtime/Randomization/ScenarioTests/Resources/randomizerAnalyticsSerializationExample.json


{
"name":"AllMembersAndParametersTestRandomizer",
"members":[
{
"name":"booleanMember",
"value":"False",
"type":"System.Boolean"
},
{
"name":"intMember",
"value":"4",
"type":"System.Int32"
},
{
"name":"uintMember",
"value":"2",
"type":"System.UInt32"
},
{
"name":"floatMember",
"value":"5",
"type":"System.Single"
},
{
"name":"vector2Member",
"value":"(4.0, 7.0)",
"type":"UnityEngine.Vector2"
},
{
"name":"unsupportedMember",
"value":"UnityEngine.Perception.Randomization.Samplers.UniformSampler",
"type":"UnityEngine.Perception.Randomization.Samplers.UniformSampler"
}
],
"parameters":[
{
"name":"booleanParam",
"type":"BooleanParameter",
"fields":[
{
"name":"value",
"distribution":"Constant",
"value":1.0,
"rangeMinimum":-2.14748365E+09,
"rangeMaximum":-2.14748365E+09,
"mean":-2.14748365E+09,
"stdDev":-2.14748365E+09,
"categoricalParameterCount":-2147483648
}
]
},
{
"name":"floatParam",
"type":"FloatParameter",
"fields":[
{
"name":"value",
"distribution":"AnimationCurve",
"value":-2.14748365E+09,
"rangeMinimum":-2.14748365E+09,
"rangeMaximum":-2.14748365E+09,
"mean":-2.14748365E+09,
"stdDev":-2.14748365E+09,
"categoricalParameterCount":-2147483648
}
]
},
{
"name":"integerParam",
"type":"IntegerParameter",
"fields":[
{
"name":"value",
"distribution":"Uniform",
"value":-2.14748365E+09,
"rangeMinimum":-3.0,
"rangeMaximum":7.0,
"mean":-2.14748365E+09,
"stdDev":-2.14748365E+09,
"categoricalParameterCount":-2147483648
}
]
},
{
"name":"vector2Param",
"type":"Vector2Parameter",
"fields":[
{
"name":"x",
"distribution":"Constant",
"value":2.0,
"rangeMinimum":-2.14748365E+09,
"rangeMaximum":-2.14748365E+09,
"mean":-2.14748365E+09,
"stdDev":-2.14748365E+09,
"categoricalParameterCount":-2147483648
},
{
"name":"y",
"distribution":"Uniform",
"value":-2.14748365E+09,
"rangeMinimum":-4.0,
"rangeMaximum":8.0,
"mean":-2.14748365E+09,
"stdDev":-2.14748365E+09,
"categoricalParameterCount":-2147483648
}
]
},
{
"name":"vector3Param",
"type":"Vector3Parameter",
"fields":[
{
"name":"x",
"distribution":"Normal",
"value":-2.14748365E+09,
"rangeMinimum":-5.0,
"rangeMaximum":9.0,
"mean":4.0,
"stdDev":2.0,
"categoricalParameterCount":-2147483648
},
{
"name":"y",
"distribution":"Constant",
"value":3.0,
"rangeMinimum":-2.14748365E+09,
"rangeMaximum":-2.14748365E+09,
"mean":-2.14748365E+09,
"stdDev":-2.14748365E+09,
"categoricalParameterCount":-2147483648
},
{
"name":"z",
"distribution":"AnimationCurve",
"value":-2.14748365E+09,
"rangeMinimum":-2.14748365E+09,
"rangeMaximum":-2.14748365E+09,
"mean":-2.14748365E+09,
"stdDev":-2.14748365E+09,
"categoricalParameterCount":-2147483648
}
]
},
{
"name":"vector4Param",
"type":"Vector4Parameter",
"fields":[
{
"name":"x",
"distribution":"Normal",
"value":-2.14748365E+09,
"rangeMinimum":-5.0,
"rangeMaximum":9.0,
"mean":4.0,
"stdDev":2.0,
"categoricalParameterCount":-2147483648
},
{
"name":"y",
"distribution":"Constant",
"value":3.0,
"rangeMinimum":-2.14748365E+09,
"rangeMaximum":-2.14748365E+09,
"mean":-2.14748365E+09,
"stdDev":-2.14748365E+09,
"categoricalParameterCount":-2147483648
},
{
"name":"z",
"distribution":"AnimationCurve",
"value":-2.14748365E+09,
"rangeMinimum":-2.14748365E+09,
"rangeMaximum":-2.14748365E+09,
"mean":-2.14748365E+09,
"stdDev":-2.14748365E+09,
"categoricalParameterCount":-2147483648
},
{
"name":"w",
"distribution":"Uniform",
"value":-2.14748365E+09,
"rangeMinimum":-12.0,
"rangeMaximum":42.0,
"mean":-2.14748365E+09,
"stdDev":-2.14748365E+09,
"categoricalParameterCount":-2147483648
}
]
},
{
"name":"colorRgbCategoricalParam",
"type":"ColorRgbCategoricalParameter",
"fields":[
{
"name":"values",
"distribution":"Categorical",
"value":-2.14748365E+09,
"rangeMinimum":-2.14748365E+09,
"rangeMaximum":-2.14748365E+09,
"mean":-2.14748365E+09,
"stdDev":-2.14748365E+09,
"categoricalParameterCount":3
}
]
}
]
}

7
com.unity.perception/Tests/Runtime/Randomization/ScenarioTests/Resources/randomizerAnalyticsSerializationExample.json.meta


fileFormatVersion: 2
guid: cc8e181627cad4a7d99440e32e0c03ea
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
正在加载...
取消
保存