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)); }