public void Destroy() { if (_camera.Handle != IntPtr.Zero) { DisableTracking(); CancelUpdateTask(); ConsoleService.Write(string.Format("[Tracker, {0}] Tracker destroyed.", _camera.GUID)); } if (_camera.Fusion != IntPtr.Zero) { PsMoveApi.psmove_fusion_free(_camera.Fusion); _camera.Fusion = IntPtr.Zero; ConsoleService.Write(string.Format("[Tracker, {0}] Fusion destroyed.", _camera.GUID)); } }
public void EnableTracking(MotionControllerModel mc) { if (mc.Design) { return; } if (_camera.Handle == IntPtr.Zero) { StartTracker(PSMoveTrackerExposure.Low); } ConsoleService.Write(string.Format("[Tracker, {0}] Calibrating Motion Controller ({1}).", _camera.GUID, mc.Serial)); byte r = (byte)((mc.Color.r * 255) + 0.5f); byte g = (byte)((mc.Color.g * 255) + 0.5f); byte b = (byte)((mc.Color.b * 255) + 0.5f); mc.TrackerStatus[_camera] = PsMoveApi.psmove_tracker_enable_with_color(_camera.Handle, mc.Handle, r, g, b); if (mc.TrackerStatus[_camera] == PSMoveTrackerStatus.Tracking || mc.TrackerStatus[_camera] == PSMoveTrackerStatus.Calibrated) { PsMoveApi.psmove_tracker_update_image(_camera.Handle); PsMoveApi.psmove_tracker_update(_camera.Handle, mc.Handle); mc.TrackerStatus[_camera] = PsMoveApi.psmove_tracker_get_status(_camera.Handle, mc.Handle); PsMoveApi.psmove_enable_orientation(mc.Handle, PSMoveBool.True); PsMoveApi.psmove_reset_orientation(mc.Handle); } //Matrix4x4 proj = new Matrix4x4(); //for (int row = 0; row < 4; row++) //{ // for (int col = 0; col < 4; col++) // { // proj[row, col] = PsMoveApi.PSMoveMatrix4x4_at(PsMoveApi.psmove_fusion_get_projection_matrix(_camera.Fusion), row * 4 + col); // } //} //mc.ProjectionMatrix[_camera] = proj; ConsoleService.Write(string.Format("[Tracker, {0}] Tracker Status of {1} = {2}", _camera.GUID, mc.Name, Enum.GetName(typeof(PSMoveTrackerStatus), mc.TrackerStatus[_camera]))); }
public StereoCameraCalibrationViewModel(ObservableCollection<CameraModel> cameras) { Cameras = cameras; if (IsInDesignMode) { } else { CalibrationService = new StereoCameraCalibrationService(); ConsoleService = new ConsoleService(); Calibration = new StereoCameraCalibrationModel() { Camera1 = Cameras[0], Camera2 = Cameras[1], }; CalibrationService.Initialize(Calibration, ConsoleService); } }
public ServerViewModel() { ConsoleService = new ConsoleService(); ServerService = SimpleIoc.Default.GetInstance<ServerService>(); Server = new ServerModel(); ServerService.Initialize( ConsoleService, Server, SimpleIoc.Default.GetInstance<CamerasViewModel>().CamerasModel); ServerService.OnClientAddedHandler += delegate(object sender, EventArgs e) { OnClientAddedEventArgs args = (OnClientAddedEventArgs) e; new ClientViewModel(args.Client); Messenger.Default.Send(new AddClientMessage(args.Client)); }; ServerService.OnClientRemovedHandler += delegate(object sender, EventArgs e) { OnClientRemovedEventArgs args = (OnClientRemovedEventArgs)e; Messenger.Default.Send(new RemoveClientMessage(args.Client)); }; }
public void AddAvailableCameras() { int count = CLEyeCameraDevice.CameraCount; for(int i = 0; i < count; i++) { CameraModel camera = new CameraModel { TrackerId = i, Name = "Camera " + i }; IConsoleService consoleService = new ConsoleService(); new CameraViewModel( camera, new TrackerService(consoleService), new ClEyeService(consoleService), consoleService, new HelixCameraVisualizationService()); } Refresh(); }
protected override bool HandleMessage(object message, SimpleServerChildTcpSocket socket) { ChildSocketState socketState = ChildSocketState.Disconnecting; Server.ChildSockets.TryGetValue(socket, out socketState); KeyValuePair <SimpleServerChildTcpSocket, ChildSocketState> childSocket = new KeyValuePair <SimpleServerChildTcpSocket, ChildSocketState>(socket, socketState); PositionRequest positionRequest = message as PositionRequest; if (positionRequest != null) { string consoleString; Float3 position = Float3.Zero; if (positionRequest.Type != PositionType.Bundled) { consoleString = String.Format("{0} requests {1} position of controller {2} from camera {3}.", socket.RemoteEndPoint, Enum.GetName(typeof(PositionType), positionRequest.Type), positionRequest.ControllerIndex, positionRequest.CameraIndex); } else { consoleString = String.Format("{0} requests {1} position of controller {2}.", socket.RemoteEndPoint, Enum.GetName(typeof(PositionType), positionRequest.Type), positionRequest.ControllerIndex); } switch (positionRequest.Type) { case PositionType.Bundled: position = GetBundledPosition(positionRequest.ControllerIndex); break; case PositionType.Camera: break; case PositionType.Fusion: position = GetFusionPosition(positionRequest.CameraIndex, positionRequest.ControllerIndex); break; case PositionType.Raw: break; case PositionType.World: position = GetWorldPosition(positionRequest.CameraIndex, positionRequest.ControllerIndex); break; } ConsoleService.Write(consoleString); SendPositionMessage(childSocket, new PositionMessage() { Position = position, Type = positionRequest.Type, StartTick = positionRequest.StartTick, CameraIndex = positionRequest.CameraIndex, ControllerIndex = positionRequest.CameraIndex }); return(true); } return(base.HandleMessage(message, socket)); }
public void DoCreateCommand() { if (NewCamera != null) { if (!NewCamera.Design) { IConsoleService consoleService = new ConsoleService(); new CameraViewModel( NewCamera, new TrackerService(consoleService), new ClEyeService(consoleService), consoleService, new HelixCameraVisualizationService()); } // add debug design else { new CameraViewModel(); } IsOpen = false; } }