Esempio n. 1
0
        void LoadModel(string PathToModel, Color DModelColor, bool LoadTexture, bool NewModel)
        {
            try
            {
                if (NewModel)
                {
                    LocalPath.CopyDirectoryToResources(System.IO.Path.GetDirectoryName(PathToModel));
                }

                Debug.WriteLine("Dir Name: " + System.IO.Path.GetFileName(System.IO.Path.GetDirectoryName(PathToModel)) + "   FileName: " + System.IO.Path.GetFileName(PathToModel));

                string Lpathtomod = System.IO.Path.GetDirectoryName(PathToModel) + "\\" + System.IO.Path.GetFileName(PathToModel);
                string pathtomod  = LocalPath.CombinePath(Lpathtomod);

                Model3DGroup mgroup = new Model3DGroup();

                string ext = System.IO.Path.GetExtension(PathToModel);
                if (ext == ".obj")
                {
                    ObjReader reader = new HelixToolkit.Wpf.ObjReader();
                    try
                    {
                        reader.DefaultMaterial = new DiffuseMaterial(new SolidColorBrush(DModelColor));


                        if (LoadTexture)
                        {
                            mgroup = reader.Read(pathtomod);
                        }
                        else
                        {
                            reader.TexturePath = ".";
                            mgroup             = reader.Read(RichTextBoxWorker.StreamFromString(File.ReadAllText(pathtomod)));
                        }
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine("Error Load obj First Try: Loading texture error?: " + LoadTexture);
                        if (LoadTexture)
                        {
                            reader = new HelixToolkit.Wpf.ObjReader();
                            reader.DefaultMaterial = new DiffuseMaterial(new SolidColorBrush(DModelColor));
                            reader.TexturePath     = ".";
                            mgroup = reader.Read(RichTextBoxWorker.StreamFromString(File.ReadAllText(pathtomod)));
                        }
                        else
                        {
                            Debug.WriteLine("Error Load 3D model: " + ex);
                            MessageBox.Show(Strings.ResStrings.NotSaved, Strings.ResStrings.NotSavedTitle, MessageBoxButton.OK, MessageBoxImage.Warning);
                            CloseOnStart = true;
                        }
                    }
                }
                else
                {
                    ModelImporter modelImporter = new ModelImporter();
                    modelImporter.DefaultMaterial = new DiffuseMaterial(new SolidColorBrush(DModelColor));
                    mgroup = modelImporter.Load(pathtomod);
                }

                ModelVisual3D model = new ModelVisual3D();
                model.Content = mgroup;

                DefaultLights defaultLights = new DefaultLights();

                Mviewport.Children.Clear();
                Mviewport.Children.Add(model);
                Mviewport.Children.Add(defaultLights);

                Mviewport.Tag = new ModelPath(Lpathtomod, LoadTexture, DModelColor);
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Error Load 3D model: " + ex);
                MessageBox.Show(Strings.ResStrings.ErrorLoadModel, Strings.ResStrings.Error, MessageBoxButton.OK, MessageBoxImage.Warning);
                CloseOnStart = true;
            }
        }