public void OnObjectWasTakenTrigger(TrackableObject obj) { ObjectDetectionZone myZone = null; // find the zone that the object was last seen foreach (ObjectDetectionZone zone in ObjectDetectionManager.Instance.CurrentLayout.ObjectDetectionZones) { if (zone.Id == obj.LastSeenZoneId) { // found the zone myZone = zone; } } // check if rec is running if (StateManager.Instance.State == AllEnums.State.RECORD && !m_BlockUntilObjectIsBackAgain) { // create a scene for displaying the picking of the object Scene.Scene autoScene = new Scene.Scene(); Scene.SceneRect rect = ObjectDetectionManager.Instance.createSceneRectForObjectDetectionZone(myZone, true); autoScene.Add(rect); AdaptiveScene adaptiveScene = new AdaptiveScene(autoScene, AdaptivityLevel.AdaptivityLevels.FirstOrDefault()); EditWorkflowManager.Instance.createStep(AllEnums.PBD_Mode.OBJECT_RECOGNIZED, adaptiveScene, "Benutze Objekt-" + obj.Name, obj.Name); m_BlockUntilObjectIsBackAgain = true; } }
private void ViewPort_Drop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent("SceneItem")) { string item = e.Data.GetData("SceneItem") as string; var pos = e.GetPosition(m_Viewport); var hitRes = VisualTreeHelper.HitTest(m_Viewport, pos); RayMeshGeometry3DHitTestResult rayMeshRes = hitRes as RayMeshGeometry3DHitTestResult; if (rayMeshRes != null) { double x = (double)rayMeshRes.PointHit.X; double y = (double)rayMeshRes.PointHit.Y; Scene.SceneItem s = null; if (item == typeof(SceneRect).ToString()) { s = new Scene.SceneRect(x, y, 50, 50, System.Windows.Media.Color.FromRgb(0, 255, 0)); } else if (item == typeof(SceneText).ToString()) { s = new Scene.SceneText(x, y, "Text", System.Windows.Media.Color.FromRgb(255, 255, 255), 10.0, new FontFamily("Arial")); } else if (item == typeof(SceneTextViewer).ToString()) { s = new Scene.SceneTextViewer(x, y, 0.2, 0.2, "Text", new FontFamily("Arial"), 10.0, System.Windows.Media.Color.FromRgb(255, 255, 255)); } else if (item == typeof(SceneCircle).ToString()) { s = new Scene.SceneCircle(x, y, 10, 0.0, Math.PI * 2.0, System.Windows.Media.Color.FromRgb(0, 255, 0)); } else if (item == typeof(SceneImage).ToString()) { s = new Scene.SceneImage(x, y, 100, 100, null); } else if (item == typeof(SceneVideo).ToString()) { s = new Scene.SceneVideo(x, y, 100, 100, null); } else if (item == typeof(ScenePolygon).ToString()) { s = new Scene.ScenePolygon(new Polygon(new Vector2[] { new Vector2(0 + x, 0 + y), new Vector2(50 + x, 50 + y), new Vector2(50 + x, y) }), System.Windows.Media.Color.FromRgb(0, 255, 0)); } else if (item == typeof(SceneAudio).ToString()) { s = new Scene.SceneAudio(null); } if (s != null) { SceneManager.Instance.CurrentScene.Add(s); } else { throw new NotImplementedException(); } } } }
public Scene.SceneRect createSceneRectForObjectDetectionZone(ObjectDetectionZone z, bool isUsedForRecord) { int x_offset = SettingsManager.Instance.Settings.SettingsTable.KinectDrawing_AssemblyArea.X; int y_offset = SettingsManager.Instance.Settings.SettingsTable.KinectDrawing_AssemblyArea.Y; float h = ((float)z.Height / (float)SettingsManager.Instance.Settings.SettingsTable.KinectDrawing_AssemblyArea.Height); float w = ((float)z.Width / (float)SettingsManager.Instance.Settings.SettingsTable.KinectDrawing_AssemblyArea.Width); float x = ((float)(z.X - x_offset) / (float)SettingsManager.Instance.Settings.SettingsTable.KinectDrawing_AssemblyArea.Width); float y = 1.0f - h - ((float)(z.Y - y_offset) / (float)SettingsManager.Instance.Settings.SettingsTable.KinectDrawing_AssemblyArea.Height); Color c = System.Windows.Media.Color.FromRgb(255, 255, 0); // yellow // TODO: maybe later /* * if (b.wasRecentlyTriggered() && !isUsedForRecord) * { * c = System.Windows.Media.Color.FromRgb(255, 0, 0); // red * } */ Scene.SceneRect rect = new Scene.SceneRect(x, y, w, h, c); return(rect); }