예제 #1
0
 private static void StartNextInProcessingQueue()
 {
     if (c_queue.Count > 0)
     {
         if (!c_backgroundWorker.IsBusy)
         {
             FileHandlerBase inputHandler = c_queue.Dequeue();
             OnProcessingStarted(inputHandler);
             c_backgroundWorker.RunWorkerAsync(inputHandler);
         }
     }
 }
예제 #2
0
        public void LoadPreview3D()
        {
            PointCloudTileSource tileSource = CurrentTileSource;

            Jacere.Core.Geometry.Extent3D extent = tileSource.Extent;

            Model3DGroup modelGroup = new Model3DGroup();

            Model3DGroup modelSubGroup = new Model3DGroup();

            modelGroup.Children.Add(modelSubGroup);

            Model3DGroup modelStitchingGroup = new Model3DGroup();

            modelGroup.Children.Add(modelStitchingGroup);

            DirectionalLight lightSource = new DirectionalLight(System.Windows.Media.Colors.White, new Vector3D(-1, -1, -1));

            modelGroup.Children.Add(lightSource);

            ModelVisual3D model = new ModelVisual3D();

            model.Content = modelGroup;

            Jacere.Core.Geometry.Point3D centerOfMass = tileSource.CenterOfMass;
            Point3D  lookatPoint   = new Point3D(0, 0, 0);
            Point3D  cameraPoint   = new Point3D(0, extent.MinY - centerOfMass.Y, centerOfMass.Z - extent.MinZ + extent.RangeX);
            Vector3D lookDirection = lookatPoint - cameraPoint;

            lookDirection.Normalize();

            PerspectiveCamera camera = new PerspectiveCamera();

            camera.Position      = cameraPoint;
            camera.LookDirection = lookDirection;
            camera.UpDirection   = new Vector3D(0, 0, 1);
            camera.FieldOfView   = 70;

            RenderOptions.SetEdgeMode(viewport, EdgeMode.Aliased);
            //viewport.ClipToBounds = false;
            //viewport.IsHitTestVisible = false;

            viewport.Camera = camera;
            viewport.Children.Add(model);

            m_tileModelCollection      = modelSubGroup.Children;
            m_stitchingModelCollection = modelStitchingGroup.Children;

            m_backgroundWorker.RunWorkerAsync(CurrentTileSource);
        }