public IEnumerator Keypoint_FullyOccluded_WithIncludeOccluded_ReportsProperly( [Values(KeypointObjectFilter.VisibleAndOccluded, KeypointObjectFilter.All)] KeypointObjectFilter keypointObjectFilter) { var incoming = new List <List <KeypointLabeler.KeypointEntry> >(); var template = CreateTestTemplate(Guid.NewGuid(), "TestTemplate"); var texture = new RenderTexture(1024, 768, 16); texture.Create(); var cam = SetupCamera(SetUpLabelConfig(), template, (frame, data) => { incoming.Add(data); }, texture, keypointObjectFilter); CreateFullyOccludedScene(template, cam); yield return(null); //force all async readbacks to complete DestroyTestObject(cam); if (texture != null) { texture.Release(); } var testCase = incoming.Last(); Assert.AreEqual(1, testCase.Count); var t = testCase.First(); Assert.NotNull(t); Assert.AreEqual(1, t.instance_id); Assert.AreEqual(1, t.label_id); Assert.AreEqual(template.templateID.ToString(), t.template_guid); Assert.AreEqual(9, t.keypoints.Length); for (var i = 0; i < 8; i++) { Assert.AreEqual(1, t.keypoints[i].state); } for (var i = 0; i < 9; i++) { Assert.AreEqual(i, t.keypoints[i].index); } Assert.Zero(t.keypoints[8].state); Assert.Zero(t.keypoints[8].x); Assert.Zero(t.keypoints[8].y); }
public IEnumerator Keypoint_Offscreen_DoesNotReport( [Values(KeypointObjectFilter.VisibleAndOccluded, KeypointObjectFilter.Visible)] KeypointObjectFilter keypointObjectFilter) { var incoming = new List <List <KeypointLabeler.KeypointEntry> >(); var template = CreateTestTemplate(Guid.NewGuid(), "TestTemplate"); var texture = new RenderTexture(1024, 768, 16); texture.Create(); var cam = SetupCamera(SetUpLabelConfig(), template, (frame, data) => { incoming.Add(data); }, texture, keypointObjectFilter); var cube = TestHelper.CreateLabeledCube(scale: 6, z: -100); SetupCubeJoints(cube, template); cube.SetActive(true); cam.SetActive(true); AddTestObjectForCleanup(cam); AddTestObjectForCleanup(cube); yield return(null); //force all async readbacks to complete DestroyTestObject(cam); if (texture != null) { texture.Release(); } var testCase = incoming.Last(); Assert.AreEqual(0, testCase.Count); }
static GameObject SetupCamera(IdLabelConfig config, KeypointTemplate template, Action <int, List <KeypointLabeler.KeypointEntry> > computeListener, RenderTexture renderTexture = null, KeypointObjectFilter keypointObjectFilter = KeypointObjectFilter.Visible) { var cameraObject = new GameObject(); cameraObject.SetActive(false); var camera = cameraObject.AddComponent <Camera>(); camera.orthographic = false; camera.fieldOfView = 60; camera.nearClipPlane = 0.3f; camera.farClipPlane = 1000; camera.transform.position = new Vector3(0, 0, -10); if (renderTexture) { camera.targetTexture = renderTexture; } var perceptionCamera = cameraObject.AddComponent <PerceptionCamera>(); perceptionCamera.captureRgbImages = false; var keyPointLabeler = new KeypointLabeler(config, template); keyPointLabeler.objectFilter = keypointObjectFilter; if (computeListener != null) { keyPointLabeler.KeypointsComputed += computeListener; } perceptionCamera.AddLabeler(keyPointLabeler); return(cameraObject); }