private void Load_Executed(object sender, ExecutedRoutedEventArgs e)
        {
            model3D.Content = new Model3DGroup();

            // *** Opening dialog for choosing the object
            OpenFileDialog openFileDialog = new OpenFileDialog();

            openFileDialog.Filter = "Obj files (*.obj)| *.obj";

            string objectsPath = Environment.CurrentDirectory + System.IO.Path.DirectorySeparatorChar + "3DObjects";

            openFileDialog.InitialDirectory = objectsPath;

            // *** Getting full path of the object
            string fullPath = "Empty";

            try
            {
                if (openFileDialog.ShowDialog() == true)
                {
                    fullPath = openFileDialog.FileName;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Oops, something went wrong ->" + ex.Message);
            }

            // *** Getting directly the object
            ObjReader    CurrentHelixObjReader = new ObjReader();
            Model3DGroup MyModel;

            try
            {
                MyModel = CurrentHelixObjReader.Read(fullPath);
            }
            catch (Exception)
            {
                MessageBox.Show("You haven`t selected any objects! \nCath the teapot :)");
                var teaPot = new Teapot();
                MyModel = CurrentHelixObjReader.Read(Environment.CurrentDirectory + System.IO.Path.DirectorySeparatorChar + "3DObjects" + System.IO.Path.DirectorySeparatorChar + "Teapot.obj");
            }


            // *** Filling our object into the scene
            previewText.Text = String.Empty;
            model3D.Content  = MyModel;
        }
        private void Button_LOAD(object sender, RoutedEventArgs e)
        {
            if (scene)
            {
                ObjReader      CurrentHelixObjReader = new ObjReader();
                OpenFileDialog openFile = new OpenFileDialog();
                if (openFile.ShowDialog() == true)
                {
                    myView.ZoomExtents();



                    MyModel = CurrentHelixObjReader.Read(openFile.FileName);

                    model_visual.Content = MyModel;
                    try
                    {
                        myView.Children.Add(model_visual);
                    }
                    catch { }
                    scene = false;
                }
            }
            else
            {
                MessageBox.Show("Очистите сцену кнопкой CLEAR");
            }
        }
Example #3
0
        void Show()
        {
            var       s = ShowPath;
            ObjReader CurrentHelixObjReader = new ObjReader();
            // Model3DGroup MyModel = CurrentHelixObjReader.Read(@"D:\3DModel\dinosaur_FBX\dinosaur.fbx");
            Model3DGroup MyModel = CurrentHelixObjReader.Read(s);

            model.Content = MyModel;
            //MyModel.Children.Add(MyModel);

            List <double> crossings = new List <double>();

            foreach (var polygon in Graph.Polygons)
            {
                crossings.Add(polygon.GetCross(polygon.Edges[0]));
                crossings.Add(polygon.GetCross(polygon.Edges[1]));
                crossings.Add(polygon.GetCross(polygon.Edges[2]));
            }
            var avr = crossings.Average();

            Avr.Content = avr;
            var dis = crossings.Sum(x => (x - avr) * (x - avr)) / crossings.Count;

            Dis.Content = dis;
        }
Example #4
0
        public List <Object3D> Load3ds(string path)
        {
            var reader = new ObjReader();
            var list   = reader.Read(path);

            return(list);
        }
Example #5
0
        public void Search_DataMatrix()
        {
            lvDM.Items.Clear();

            if (txt_Search.Text != "")
            {
                madeDbConnection();

                string str_Keyword = txt_Search.Text;

                MySqlCommand    objCommand = objDBCon.CreateCommand();
                MySqlDataReader ObjReader;
                objCommand.CommandText = "select * from DataMatrix where DM_Experiment = '" + str_Keyword
                                         + "%' OR DM_Researcher LIKE '%" + str_Keyword
                                         + "%' OR DM_TubeNumber LIKE '%" + str_Keyword
                                         + "%' OR DM_RackNumber LIKE '%" + str_Keyword
                                         + "%' OR DM_Position LIKE '%" + str_Keyword
                                         + "%' OR DM_Strain LIKE '%" + str_Keyword + "%'";

                ObjReader = objCommand.ExecuteReader();
                while (ObjReader.Read())
                {
                    string str_DB_Data = "";
                    for (int i = 0; i < ObjReader.FieldCount; i++)
                    {
                        str_DB_Data += ObjReader.GetValue(i).ToString() + ";";
                    }

                    loadDBData(str_DB_Data);
                }
                closeDbConnection();
            }
        }
Example #6
0
        public MainViewModel(Dispatcher dispatcher) : base(dispatcher)
        {
            Xdk       = new XdkIO();
            UdpSender = new UdpOrientationSender();
            UdpSender.TargetIPAddress = IPAddress.Loopback;
            UdpSender.TargetPort      = 4242;

            SerialPortNameToUse = Xdk.CurrentSerialPortName;

            SerialPortService.Instance.PortsChanged += OnPortsChanged;
            SerialPortService.Instance.StartMonitoring();

            ClosingCommand             = CommandFactory.Create(ClosingCommandExecute);
            ToggleConnectSerialCommand = CommandFactory.Create(ToggleSerialConnectExecuteAsync, CanToggleSerialConnectExecute, true);
            RefreshPortsCommand        = CommandFactory.Create(() => RefreshSerialPorts(), () => !IsPortConnected, true);
            ToggleConnectUdpCommand    = CommandFactory.Create(ToggleUdpConnectionExecuteAsync, () => UdpSender.TargetEndpoint != null &&
                                                               (_udpTaskCancelSource == null || !_udpTaskCancelSource.IsCancellationRequested), true);

            RefreshSerialPorts();

            ObjReader objReader = new ObjReader();

            using (Stream stream = new MemoryStream(Properties.Resources.Head))
            {
                TestModel = objReader.Read(stream);
            }
        }
Example #7
0
        public EntityNBT(CommandsGeneratorTemplate cmdGenerator)
        {
            Application.Current.Dispatcher.Invoke(new Action(delegate {
                C1 = new EntityNeutral();
                C2 = new EntityHostile();
                C3 = new EntityFriend();
                C4 = new EntityBoss();
                C5 = new EntityThrow();
                C6 = new EntityTraffic();
                C7 = new EntityOther();
            }));
            InitializeComponent(); potion.BeginInit();
            e1.IsSelected = true;
            CmdGenerator  = cmdGenerator;

            ObjReader    CurrentHelixObjReader = new ObjReader();
            Model3DGroup MyModel = CurrentHelixObjReader.Read(Environment.CurrentDirectory + "/3D/direction.obj");

            foo.Content = MyModel;
            IList <Point3D> a = new List <Point3D>
            {
                new Point3D(5, 0, 1),
                new Point3D(0, 0, 1)
            };

            tube.Path = new Point3DCollection(a);
        }
Example #8
0
        public void LoadObj(string path)
        {
            var reader = new ObjReader();
            var objCol = reader.Read(path);

            AttachModelList(objCol);
        }
Example #9
0
        public UcPicture3()
        {
            InitializeComponent();
            ObjReader    CurrentHelixObjReader = new ObjReader();
            Model3DGroup MyModel = CurrentHelixObjReader.Read(@".\3dModel\Rigged Hand.obj");

            model.Content = MyModel;
        }
Example #10
0
        private void Create3DViewPort()
        {
            ObjReader    CurrentHelixObjReader = new ObjReader();
            Model3DGroup MyView = CurrentHelixObjReader.Read(@"..\..\..\3D planes\Black Hawk uh-60.obj");

            myView.Camera.LookDirection = new Vector3D(0, -1, 0);
            model.Content = MyView;
        }
Example #11
0
        public Model3DGroup ReadObj(string path)
        {
            var r = new ObjReader()
            {
                DefaultMaterial = defaultMaterial, IgnoreErrors = false
            };

            return(r.Read(path));
        }
Example #12
0
        private void Prepare3DModel()
        {
            ObjReader helixObjReader = new ObjReader();
            string    path           = @"texture.png";
            var       point          = helixObjReader.Read(@"mi24.obj");

            //var importer = new HelixToolkit.Wpf.ModelImporter();
            //var point = importer.Load("mi24.obj");

            //GeometryModel3D model = point.Children[0] as GeometryModel3D;


            //Material material = MaterialHelper.CreateImageMaterial(path, 1);

            ImageBrush colors_brush = new ImageBrush();

            colors_brush.ImageSource =
                new BitmapImage(new Uri("texture.png", UriKind.Relative));
            DiffuseMaterial colors_material =
                new DiffuseMaterial(colors_brush);
            GeometryModel3D model;

            DiffuseMaterial diffuseMaterial = new DiffuseMaterial(new SolidColorBrush(Colors.Black));

            SpecularMaterial specularMaterial = new SpecularMaterial(new SolidColorBrush(Colors.Chocolate), 2.55);

            foreach (var pointChild in point.Children)
            {
                model = pointChild as GeometryModel3D;

                model.Material = specularMaterial;
                // model.Material = diffuseMaterial;
            }

            //DiffuseMaterial material = new DiffuseMaterial(new SolidColorBrush(Colors.Black));

            //SpecularMaterial specularMaterial = new SpecularMaterial(new SolidColorBrush(Colors.Chocolate), 2.55);

            //model.Material = material;
            //model.Material = specularMaterial;

            modelVisual3D.Content = point;



            //model.Content = modelAircraft3D;
            //model.Children.Add(new DefaultLights());
            //GeometryModel3D model1 = modelAircraft3D.Children[0] as GeometryModel3D;
            //DiffuseMaterial material = new DiffuseMaterial(new SolidColorBrush(Colors.Black));
            //model1.Material = material;
            //modelAircraft3D.Children[0] = model1;
            //model.Content = modelAircraft3D;
            modelVisual3D.Children.Add(new DefaultLights());
            myView.Camera.UpDirection   = new Vector3D(0, 1, 0);
            myView.Camera.LookDirection = new Vector3D(0, 0, 100);
            myView.Camera.Position      = new Point3D(0, 0, -25);
        }
Example #13
0
    public MainWindow()
    {
        InitializeComponent();

        //ModelImporter modelImporter = new ModelImporter();
        //var model3D = modelImporter.Load("Untitled.3mf"); // System.InvalidOperationException:“File format not supported.”

        ObjReader objReader    = new ObjReader();
        var       model3DGroup = objReader.Read("Untitled.3mf");
    }
        public void load3dModel()
        {
            ObjReader CurrentHelixObjReader = new ObjReader();
            // Model3DGroup MyModel = CurrentHelixObjReader.Read(@"D:\3DModel\dinosaur_FBX\dinosaur.fbx");
            Model3DGroup MyModel = CurrentHelixObjReader.Read(@"C:\Users\Sinan\Desktop\New WinRAR arşivi\137522.obj");

            //C:\Users\Sinan\Desktop\New WinRAR arşivi

            model.Content = MyModel;
        }
        private async void Load_Async()
        {
            // *** Opening dialog for choosing the object
            OpenFileDialog openFileDialog = new OpenFileDialog();

            openFileDialog.Filter           = "Obj files (*.obj)| *.obj";
            openFileDialog.InitialDirectory = Environment.CurrentDirectory;

            // *** Disable the buttons
            Load.IsEnabledModificate  = false;
            Clear.IsEnabledModificate = false;

            // *** Getting full path of the object
            string fullPath = null;

            try
            {
                if (openFileDialog.ShowDialog() == true)
                {
                    fullPath = openFileDialog.FileName;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Oops, something went wrong ->" + ex.Message);
            }

            if (fullPath != null)
            {
                await Task.Run(() =>
                {
                    // *** Getting directly the object
                    ObjReader CurrentHelixObjReader = new ObjReader();

                    try
                    {
                        NewModel = CurrentHelixObjReader.Read(fullPath);
                        NewModel.Freeze();
                    }
                    catch (Exception)
                    {
                        NewModel = null;
                    }
                });

                Clear.IsEnabledModificate = true;
            }
            else
            {
                Clear.IsEnabledModificate = false;
            }

            // *** Enable the buttons
            Load.IsEnabledModificate = true;
        }
        public void initModel(string currentMovingBlack)
        {
            importer = new ObjReader();
            model = importer.Read("..\\..\\ObjectFile\\hand_obj.obj");
            transform3DGroup = new Transform3DGroup();

            double _x = 0.0, _y = 0.0, _z = 0.0;

            MakeModel(_x, _y, _z, currentMovingBlack);

        }
Example #17
0
 /// <summary>
 /// Load OBJ file
 /// </summary>
 /// <param name="filename"></param>
 /// <param name="faces"></param>
 private void LoadModel(string filename, MeshFaces faces)
 {
     // load model
     var reader   = new ObjReader();
     var objModel = reader.Read(filename, new ModelInfo()
     {
         Faces = MeshFaces.Default
     });
     //this.Model = objModel[0].Geometry as MeshGeometry3D;
     //this.Model.Colors = this.Model.Positions.Select(x => new Color4(1, 0, 0, 1)).ToArray();
 }
Example #18
0
        private void InitializeModels()
        {
            var builder = new MeshBuilder();

            builder.AddBox(Vector3.Zero, 1, 1, 1);
            var reader = new ObjReader();
            var models = reader.Read("bunny.obj");

            Geometry = models[0].Geometry;
            Material = PhongMaterials.Red;
        }
        public void load3dModel()
        {
            ObjReader    CurrentHelixObjReader = new ObjReader();
            Model3DGroup MyModel = CurrentHelixObjReader.Read(@"C:\Users\Uğurcan Soruç\Desktop\Flight_GCS\Flight_GCS\3.6.2019 Arayuz SON\FullArayüz-Yedek\uydu.obj");

            model.Content = MyModel;
            var hVp3D = new HelixViewport3D();
            var mode  = new ModelVisual3D();

            hVp3D.Children.Add(mode);
        }
Example #20
0
        private void Prepare3DModel()
        {
            ObjReader helixObjReader  = new ObjReader();
            var       modelAircraft3D = helixObjReader.Read(@"untitled8.obj");

            model.Content = modelAircraft3D;
            model.Children.Add(new DefaultLights());
            myView.Camera.UpDirection   = new Vector3D(0, 1, 0);
            myView.Camera.LookDirection = new Vector3D(0, 0, -100);
            myView.Camera.Position      = new Point3D(0, 0, 100);
        }
Example #21
0
        /// <summary>
        /// load the model from obj-file
        /// </summary>
        /// <param name="filename">filename</param>
        /// <param name="faces">Determines if facades should be treated as triangles (Default) or as quads (Quads)</param>
        private void LoadModel(string filename, MeshFaces faces)
        {
            // load model
            var reader   = new ObjReader();
            var objModel = reader.Read(filename, new ModelInfo()
            {
                Faces = faces
            });
            var model = objModel[0].Geometry as MeshGeometry3D;

            Model = model;
        }
        /// <summary>
        /// load the model from obj-file
        /// </summary>
        /// <param name="filename">filename</param>
        /// <param name="faces">Determines if facades should be treated as triangles (Default) or as quads (Quads)</param>
        private void LoadModel(string filename, MeshFaces faces)
        {
            // load model
            var reader   = new ObjReader();
            var objModel = reader.Read(filename, new ModelInfo()
            {
                Faces = faces
            });
            var model = objModel[0].Geometry as MeshGeometry3D;

            model.Colors = new Color4Collection(model.Positions.Select(x => new Color4(1, 0, 0, 1)));
            DefaultModel = model;
        }
Example #23
0
        public void LoadModelWithoutNormals()
        {
            var reader  = new ObjReader();
            var objects = reader.Read(@"Models\obj\cornell_box.obj");

            Assert.IsNotNull(objects);
            Assert.AreEqual(9, objects.Count);

            var floorGeometry = objects[0].Geometry as MeshGeometry3D;

            Assert.IsNotNull(floorGeometry);
            Assert.AreEqual(4, floorGeometry.Positions.Count);
            Assert.AreEqual(4, floorGeometry.Normals.Count);
        }
Example #24
0
        public void ProcessInput(List <string> args)
        {
            inputProcessor.SetupKeyWords(args);
            var path = inputProcessor.Source.Value;
            var mesh = objReader.Read(path);

            mesh.Transform(TransMatrices.TranslateM, TransMatrices.RotateM, TransMatrices.ScaleM);
            var image = renderer.Render(mesh);

            var goalExtension = inputProcessor.OutputExtension;
            var goalPath      = inputProcessor.OutputPath.Value;

            universalImageConverter.WriteImage(image, path, goalExtension, goalPath);
        }
Example #25
0
        public void LoadModelWithoutNormals()
        {
            var reader = new ObjReader();
            var objects = reader.Read(@"Models\obj\cornell_box.obj");

            Assert.IsNotNull(objects);
            Assert.AreEqual(9, objects.Count);

            var floorGeometry = objects[0].Geometry as MeshGeometry3D;

            Assert.IsNotNull(floorGeometry);
            Assert.AreEqual(4, floorGeometry.Positions.Count);
            Assert.AreEqual(4, floorGeometry.Normals.Count);
        }
Example #26
0
        private Model3DGroup loadModel(string modelPath)
        {
            Model3DGroup model3DGroup = null;

            FileInfo finFo = new FileInfo(modelPath);

            if (finFo.Exists)
            {
                ObjReader objReader = new ObjReader();
                model3DGroup = objReader.Read(modelPath);
            }

            return(model3DGroup);
        }
Example #27
0
        public MainWindowViewModel()
        {
            EffectsManager = new DefaultEffectsManager();
            Camera         = new PerspectiveCamera()
            {
                Position          = new Media3D.Point3D(0, 10, 10),
                LookDirection     = new Media3D.Vector3D(0, -10, -10),
                UpDirection       = new Media3D.Vector3D(0, 1, 0),
                FarPlaneDistance  = 200,
                NearPlaneDistance = 0.1
            };

            var builder = new MeshBuilder();

            builder.AddBox(new Vector3(0, -0.1f, 0), 20, 0.1f, 20);
            builder.AddBox(new Vector3(-7, 2.5f, 0), 5, 5, 5);
            builder.AddBox(new Vector3(-5, 2.5f, -5), 5, 5, 5);
            FloorModel = builder.ToMesh();

            builder = new MeshBuilder();
            builder.AddSphere(Vector3.Zero, 1);
            SphereModel = builder.ToMesh();

            var reader = new ObjReader();

            var models = reader.Read("bunny.obj");

            BunnyModel    = models[0].Geometry;
            BunnyMaterial = PhongMaterials.Green;
            BunnyMaterial.AmbientColor = BunnyMaterial.DiffuseColor * 0.5f;
            FloorMaterial = PhongMaterials.PureWhite;
            FloorMaterial.AmbientColor  = FloorMaterial.DiffuseColor * 0.5f;
            SphereMaterial              = PhongMaterials.Red;
            SphereMaterial.AmbientColor = SphereMaterial.DiffuseColor * 0.5f;
            SphereInstances             = new Matrix[4]
            {
                Matrix.Translation(-2.5f, 1, 0),
                Matrix.Translation(2.5f, 1, 0),
                Matrix.Translation(0, 1, -2.5f),
                Matrix.Translation(0, 1, 2.5f)
            };

            BunnyInstances = new Matrix[4]
            {
                Matrix.Translation(0f, -0.8f, 0),
                Matrix.Translation(6f, -0.8f, 0),
                Matrix.Translation(0, -0.8f, -4f),
                Matrix.Translation(0, -0.8f, 4f)
            };
        }
Example #28
0
        private MeshGeometry3D ReadGeometryFromFile(string path)
        {
            var geometry = new MeshGeometry3D();

            if (string.IsNullOrEmpty(path))
            {
                return(geometry);
            }

            var models = new Model3DGroup();

            var fileInfo = new FileInfo(path);

            if (fileInfo.Extension == ".obj")
            {
                var reader = new ObjReader();
                try
                {
                    models = reader.Read(fileInfo.FullName);
                }
                catch (Exception exc)
                {
                    Logger.Instance.Error(string.Format("Error while loading obj file '{0}'.", path), exc);
                }
            }

            if (fileInfo.Extension == ".3ds")
            {
                var reader = new StudioReader();
                try
                {
                    models = reader.Read(fileInfo.FullName);
                }
                catch (Exception exc)
                {
                    Logger.Instance.Error(string.Format("Error while loading 3ds file '{0}'.", path), exc);
                }
            }

            if (models.Children.Count > 0)
            {
                var model = models.Children[0] as GeometryModel3D;
                if (model != null)
                {
                    geometry = model.Geometry as MeshGeometry3D;
                }
            }

            return(geometry);
        }
Example #29
0
        public void Read_SmoothingOff_ValidModel()
        {
            var r     = new ObjReader();
            var model = r.Read(@"Models\obj\SmoothingOff.obj");

            Assert.AreEqual(1, model.Children.Count);
            var gm1 = model.Children[0] as GeometryModel3D;

            Assert.NotNull(gm1);
            var mg1 = gm1.Geometry as MeshGeometry3D;

            Assert.NotNull(mg1);
            Assert.AreEqual(4, mg1.TriangleIndices.Count / 3);
        }
Example #30
0
        public void Read_CornellBox_ValidModel()
        {
            var r     = new ObjReader();
            var model = r.Read(@"Models\obj\cornell_box.obj");

            Assert.AreEqual(9, model.Children.Count);
            var gm1 = model.Children[1] as GeometryModel3D;

            Assert.NotNull(gm1);
            var mg1 = gm1.Geometry as MeshGeometry3D;

            Assert.NotNull(mg1);
            //// Assert.AreEqual(69451, mg1.TriangleIndices.Count / 3);
        }
        public void CreateDefaultVertexArrayForTriangle()
        {
            var reader = new ObjReader();
            var objects = reader.Read(@"Models\obj\Triangle.obj");

            Assert.AreEqual(1, objects.Count);

            var geometry = objects[0].Geometry;
            var model = new MeshGeometryModel3D { Geometry = geometry };

            var canvas = new CanvasMock();
            model.Attach(canvas);

            Assert.AreEqual(true, model.IsAttached);
        }
        private void InitializeModels()
        {
            var builder = new MeshBuilder();

            builder.AddBox(Vector3.Zero, 1, 1, 1);
            var reader = new ObjReader();
            var models = reader.Read("bunny.obj");

            Geometry = models[0].Geometry;
            Material = PhongMaterials.Red;

            builder = new MeshBuilder();
            builder.AddBox(new Vector3(0, 0, -4), 2, 2, 6);
            RectGeometry = builder.ToMeshGeometry3D();
        }
Example #33
0
        public void Read_Ducky_ValidModel()
        {
            var r     = new ObjReader();
            var model = r.Read(@"Models\obj\ducky.obj");

            Assert.AreEqual(4, model.Children.Count);
            var m0 = (MeshGeometry3D)((GeometryModel3D)model.Children[0]).Geometry;
            var m1 = (MeshGeometry3D)((GeometryModel3D)model.Children[1]).Geometry;
            var m2 = (MeshGeometry3D)((GeometryModel3D)model.Children[2]).Geometry;
            var m3 = (MeshGeometry3D)((GeometryModel3D)model.Children[3]).Geometry;

            Assert.AreEqual(5632, m0.TriangleIndices.Count / 3);
            Assert.AreEqual(4800, m1.TriangleIndices.Count / 3);
            Assert.AreEqual(3024, m2.TriangleIndices.Count / 3);
            Assert.AreEqual(672, m3.TriangleIndices.Count / 3);
        }
        /// <summary>
        /// Loads a model from the specified path.
        /// </summary>
        /// <param name="path">The path.</param>
        /// <param name="dispatcher">The dispatcher used to create the model.</param>
        /// <param name="freeze">Freeze the model if set to <c>true</c>.</param>
        /// <returns>A model.</returns>
        /// <exception cref="System.InvalidOperationException">File format not supported.</exception>
        public Model3DGroup Load(string path, Dispatcher dispatcher = null, bool freeze = false)
        {
            if (path == null)
            {
                return null;
            }

            if (dispatcher == null)
            {
                dispatcher = Dispatcher.CurrentDispatcher;
            }

            Model3DGroup model;
            var ext = Path.GetExtension(path);
            if (ext != null)
            {
                ext = ext.ToLower();
            }

            switch (ext)
            {
                case ".3ds":
                    {
                        var r = new StudioReader(dispatcher) { DefaultMaterial = this.DefaultMaterial, Freeze = freeze };
                        model = r.Read(path);
                        break;
                    }

                case ".lwo":
                    {
                        var r = new LwoReader(dispatcher) { DefaultMaterial = this.DefaultMaterial, Freeze = freeze };
                        model = r.Read(path);

                        break;
                    }

                case ".obj":
                    {
                        var r = new ObjReader(dispatcher) { DefaultMaterial = this.DefaultMaterial, Freeze = freeze };
                        model = r.Read(path);
                        break;
                    }

                case ".objz":
                    {
                        var r = new ObjReader(dispatcher) { DefaultMaterial = this.DefaultMaterial, Freeze = freeze };
                        model = r.ReadZ(path);
                        break;
                    }

                case ".stl":
                    {
                        var r = new StLReader(dispatcher) { DefaultMaterial = this.DefaultMaterial, Freeze = freeze };
                        model = r.Read(path);
                        break;
                    }

                case ".off":
                    {
                        var r = new OffReader(dispatcher) { DefaultMaterial = this.DefaultMaterial, Freeze = freeze };
                        model = r.Read(path);
                        break;
                    }

                default:
                    throw new InvalidOperationException("File format not supported.");
            }

            //if (!freeze)
            //{
            //    dispatcher.Invoke(new Action(() => model.SetName(Path.GetFileName(path))));
            //}

            return model;
        }