您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
86 行
3.3 KiB
86 行
3.3 KiB
using System;
|
|
using System.Diagnostics;
|
|
using System.Text.RegularExpressions;
|
|
using Unity.Collections;
|
|
#if UNITY_EDITOR
|
|
using UnityEditor;
|
|
#endif
|
|
using UnityEngine;
|
|
using UnityEngine.Experimental.Rendering;
|
|
using UnityEngine.Perception.GroundTruth;
|
|
|
|
namespace GroundTruthTests
|
|
{
|
|
static class TestHelper
|
|
{
|
|
#if UNITY_EDITOR
|
|
private static EditorWindow s_GameView;
|
|
#endif
|
|
|
|
public static GameObject CreateLabeledPlane(float scale = 10, string label = "label")
|
|
{
|
|
GameObject planeObject;
|
|
planeObject = GameObject.CreatePrimitive(PrimitiveType.Plane);
|
|
planeObject.transform.SetPositionAndRotation(new Vector3(0, 0, 10), Quaternion.Euler(90, 0, 0));
|
|
planeObject.transform.localScale = new Vector3(scale, -1, scale);
|
|
var labeling = planeObject.AddComponent<Labeling>();
|
|
labeling.labels.Add(label);
|
|
return planeObject;
|
|
}
|
|
|
|
public static GameObject CreateLabeledCube(float scale = 10, string label = "label", float x = 0, float y = 0, float z = 0, float roll = 0, float pitch = 0, float yaw = 0)
|
|
{
|
|
var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
|
|
|
|
return SetupLabeledCube(cube, scale, label, x, y, z, roll, pitch, yaw);
|
|
}
|
|
|
|
public static GameObject SetupLabeledCube(GameObject cube, float scale = 10, string label = "label", float x = 0, float y = 0, float z = 0, float roll = 0, float pitch = 0, float yaw = 0)
|
|
{
|
|
cube.transform.SetPositionAndRotation(new Vector3(x, y, z), Quaternion.Euler(pitch, yaw, roll));
|
|
cube.transform.localScale = new Vector3(scale, scale, scale);
|
|
var labeling = cube.AddComponent<Labeling>();
|
|
labeling.labels.Add(label);
|
|
return cube;
|
|
}
|
|
|
|
public static void ReadRenderTextureRawData<T>(RenderTexture renderTexture, Action<NativeArray<T>> callback) where T : struct
|
|
{
|
|
RenderTexture.active = renderTexture;
|
|
|
|
var cpuTexture = new Texture2D(renderTexture.width, renderTexture.height, renderTexture.graphicsFormat, TextureCreationFlags.None);
|
|
|
|
cpuTexture.ReadPixels(new Rect(
|
|
Vector2.zero,
|
|
new Vector2(renderTexture.width, renderTexture.height)),
|
|
0, 0);
|
|
RenderTexture.active = null;
|
|
var data = cpuTexture.GetRawTextureData<T>();
|
|
callback(data);
|
|
}
|
|
|
|
#if UNITY_EDITOR
|
|
public static void LoadAndStartRenderDocCapture()
|
|
{
|
|
UnityEditorInternal.RenderDoc.Load();
|
|
System.Reflection.Assembly assembly = typeof(UnityEditor.EditorWindow).Assembly;
|
|
Type type = assembly.GetType("UnityEditor.GameView");
|
|
s_GameView = UnityEditor.EditorWindow.GetWindow(type);
|
|
UnityEditorInternal.RenderDoc.BeginCaptureRenderDoc(s_GameView);
|
|
}
|
|
[Conditional("UNITY_EDITOR")]
|
|
public static void EndCaptureRenderDoc()
|
|
{
|
|
UnityEditorInternal.RenderDoc.EndCaptureRenderDoc(s_GameView);
|
|
}
|
|
#endif
|
|
|
|
public static string NormalizeJson(string json, bool normalizeFormatting = false)
|
|
{
|
|
if (normalizeFormatting)
|
|
json = Regex.Replace(json, "^\\s*", "", RegexOptions.Multiline);
|
|
|
|
return json.Replace("\r\n", "\n");
|
|
}
|
|
}
|
|
}
|