コード例 #1
0
        private Task DoExport(object o)
        {
            return(Task.Run(async() =>
            {
                System.Windows.Forms.SaveFileDialog saveFileDialog = null;
                bool save = false;

                Parent.SyncContext.Send(c =>
                {
                    saveFileDialog = new System.Windows.Forms.SaveFileDialog();
                    saveFileDialog.Filter = "Matlab (*.mat) | *.mat";
                    save = saveFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK;
                }, null);

                if (save)
                {
                    MetroDialogSettings settings = new MetroDialogSettings()
                    {
                        AnimateShow = false,
                        AnimateHide = false
                    };

                    var controller = await Parent.DialogCoordinator.ShowProgressAsync(Parent, "Please wait...", "Export data to Matlab!", settings: Parent.MetroDialogSettings);

                    SlamModel3D.ExportToMatlab(saveFileDialog.FileName);

                    controller.SetCancelable(false);

                    await controller.CloseAsync();
                }
            }));
        }
コード例 #2
0
        public void Fired(IOProxy proxy, List <AbstractProxyEventData> eventData)
        {
            SlamMapEventData    slamMapEvent    = (SlamMapEventData)eventData.FirstOrDefault(c => c is SlamMapEventData);
            SlamStatusEventData slamStatusEvent = (SlamStatusEventData)eventData.FirstOrDefault(c => c is SlamStatusEventData);

            if (slamMapEvent != null)
            {
                if (slamMapEvent.PublishType == SlamPublishType.Frame)
                {
                    SlamModel3D.AddNewFrame(slamMapEvent.Frame);
                    _FPSCounter.CountFrame();
                }
                else if (slamMapEvent.PublishType == SlamPublishType.KeyframeWithPoints)
                {
                    SlamModel3D.AddNewKeyFrame(slamMapEvent.KeyFrame);
                }
                else if (slamMapEvent.PublishType == SlamPublishType.Reset)
                {
                    SlamModel3D.Reset();
                }
            }
            if (slamStatusEvent != null)
            {
                Parent.SyncContext.Post(o =>
                {
                    Status = slamStatusEvent.Status;
                }, null);
            }
        }
コード例 #3
0
 public VisualisationViewModel(MainViewModel parent) : base(parent)
 {
     _SlamModel3D = new SlamModel3D(Parent.SyncContext);
     Parent.IOProxy.Subscribe(this, ProxyEventType.SlamMapEvent);
     _Timer          = new Timer(300);
     _Timer.Elapsed += _Timer_Elapsed;
     _Timer.Start();
     Parent.IOProxy.Subscribe(this, ProxyEventType.SlamStatusEvent);
 }
コード例 #4
0
        private void CreateViewport()
        {
            _SyncContext.Send(d =>
            {
                _SlamModel3D = new SlamModel3D(_SyncContext, false);

                _Viewport3d            = new HelixViewport3D();
                _Viewport3d.Background = System.Windows.Media.Brushes.White;

                _Viewport3d.Camera = new PerspectiveCamera(new Point3D(0, 1, 0.3), new Vector3D(0, -1, -0.3), new Vector3D(0, 0, 1), 45);

                _Viewport3d.Children.Add(new DefaultLights());

                _Viewport3d.Children.Add(new CoordinateSystemVisual3D()
                {
                    ArrowLengths = 0.1
                });

                _ModelVisual3d = new ModelVisual3D();
                _Viewport3d.Children.Add(_ModelVisual3d);

                _CameraPosition = new CoordinateSystemVisual3D();
                _CameraPosition.ArrowLengths = 0.1;
                _Viewport3d.Children.Add(_CameraPosition);

                _TrajectoryKeyFrame           = new LinesVisual3D();
                _TrajectoryKeyFrame.Color     = System.Windows.Media.Colors.Gold;
                _TrajectoryKeyFrame.Thickness = 3;
                _Viewport3d.Children.Add(_TrajectoryKeyFrame);

                _TrajectoryFrame           = new LinesVisual3D();
                _TrajectoryFrame.Color     = System.Windows.Media.Colors.OrangeRed;
                _TrajectoryFrame.Thickness = 2;
                _Viewport3d.Children.Add(_TrajectoryFrame);
            }, null);
        }