public IActionResult EditModel()
        {
            EditGltfService gltfService = new EditGltfService(_env);
            GltfModel       gltfModel   = new GltfModel();

            //model populaten met ingeladen gltf
            var Currentmodel = gltfService.PopulateGltfModel(Path.Combine(_env.WebRootPath, "Objects", "CurrentGlb.glb"));

            IndexViewModel indexViewModel = new IndexViewModel()
            {
                GltfModel = Currentmodel
            };


            return(View(indexViewModel));
        }
        public async Task <IActionResult> Index(IndexViewModel indexPostVM)
        {
            EditGltfService editGltfService = new EditGltfService(_env);
            IndexViewModel  indexViewModel  = new IndexViewModel();

            if (indexPostVM.status == "ShowAR")
            {
                indexViewModel.status = indexPostVM.status;
                return(View(indexViewModel));
            }

            //uploaden van nieuwe gltf
            if (indexPostVM.GltfUpload != null)
            {
                editGltfService.UploadGLTFModel(indexPostVM.GltfUpload);
                var currentModel = editGltfService.PopulateGltfModel(Path.Combine(_env.WebRootPath, "Objects", "CurrentGlb.glb"));
                indexViewModel.status    = "SelectMesh";
                indexViewModel.GltfModel = currentModel;
                editGltfService.SaveCurrentGltf(currentModel);
                return(View(indexViewModel));
            }

            var Currentmodel = editGltfService.PopulateGltfModel(Path.Combine(_env.WebRootPath, "Objects", "CurrentGlb.glb"));

            //Show Materials in Mesh
            if (indexPostVM.status == "SelectMaterial")
            {
                indexViewModel.SelectedMesh      = Currentmodel.MeshesVerzameling.ToList()[indexPostVM.SelectedMeshIndex];
                indexViewModel.GltfModel         = Currentmodel;
                indexViewModel.SelectedMeshIndex = indexPostVM.SelectedMeshIndex;
                indexViewModel.status            = "SelectMaterial";
                indexViewModel.SelectedMeshIndex = indexPostVM.SelectedMeshIndex;
                return(View(indexViewModel));
            }

            //Show Channels in Material
            if (indexPostVM.status == "SelectChannel")
            {
                indexViewModel.SelectedMaterial      = Currentmodel.gltf.LogicalMaterials.ToList()[indexPostVM.SelectedMeshIndex];
                indexViewModel.GltfModel             = Currentmodel;
                indexViewModel.SelectedMaterialIndex = indexPostVM.SelectedMaterialIndex;
                indexViewModel.SelectedMeshIndex     = indexPostVM.SelectedMeshIndex;
                indexViewModel.status   = "SelectChannel";
                indexPostVM.Alpha       = indexViewModel.SelectedMaterial.Alpha;
                indexPostVM.AlphaCutoff = indexViewModel.SelectedMaterial.AlphaCutoff;
                indexPostVM.DoubleSided = indexViewModel.SelectedMaterial.DoubleSided;
                return(View(indexViewModel));
            }

            //Show/edit Textures
            if (indexPostVM.status == "EditTexture")
            {
                List <SharpGLTF.Schema2.MaterialChannel> channellist = new List <SharpGLTF.Schema2.MaterialChannel>();
                foreach (var item in Currentmodel.gltf.LogicalMaterials.ToList()[indexPostVM.SelectedMeshIndex].Channels)
                {
                    channellist.Add(item);
                }
                ;
                indexViewModel.SelectedTexture = channellist[Convert.ToInt32(indexPostVM.SelectedChannelIndex)].Texture;

                if (indexViewModel.SelectedTexture != null)
                {
                    editGltfService.LoadImageFromTexture(indexViewModel.SelectedTexture);
                }
                Currentmodel.gltf.LogicalMaterials[indexPostVM.SelectedMaterialIndex].Alpha       = indexPostVM.Alpha;
                Currentmodel.gltf.LogicalMaterials[indexPostVM.SelectedMaterialIndex].AlphaCutoff = indexPostVM.AlphaCutoff;
                Currentmodel.gltf.LogicalMaterials[indexPostVM.SelectedMaterialIndex].DoubleSided = indexPostVM.DoubleSided;
                editGltfService.SaveCurrentGltf(Currentmodel);

                //viewmodel invullen
                indexViewModel.GltfModel             = Currentmodel;
                indexViewModel.SelectedMaterialIndex = indexPostVM.SelectedMaterialIndex;
                indexViewModel.SelectedMeshIndex     = indexPostVM.SelectedMeshIndex;
                indexViewModel.SelectedChannelIndex  = indexPostVM.SelectedChannelIndex;
                indexViewModel.status = "EditTexture";
                if (indexPostVM.NewtextureUpload != null)
                {
                    editGltfService.AddUploadedImageToSelectedTexture(indexViewModel.SelectedTexture, indexPostVM.NewtextureUpload);
                    editGltfService.LoadImageFromTexture(indexViewModel.SelectedTexture);
                    return(View(indexViewModel));
                }
            }

            return(View(indexViewModel));
        }