private async Task <bool> DoExport() { /*Tools.UpdateCheckBox(chkManifest, Loader.Core.RootNode, "babylonjs_generatemanifest"); * Tools.UpdateCheckBox(chkCopyTextures, Loader.Core.RootNode, "babylonjs_copytextures"); * Tools.UpdateCheckBox(chkHidden, Loader.Core.RootNode, "babylonjs_exporthidden"); * Tools.UpdateCheckBox(chkAutoSave, Loader.Core.RootNode, "babylonjs_autosave"); * Tools.UpdateCheckBox(chkOnlySelected, Loader.Core.RootNode, "babylonjs_onlySelected"); * Tools.UpdateComboBox(comboOutputFormat, Loader.Core.RootNode, "babylonjs_outputFormat"); * * Loader.Core.RootNode.SetLocalData(txtFilename.Text);*/ exporter = new BabylonExporter(); treeView.Nodes.Clear(); exporter.OnImportProgressChanged += progress => { progressBar.Value = progress; Application.DoEvents(); }; exporter.OnWarning += (warning, rank) => { try { currentNode = CreateTreeNode(rank, warning, Color.DarkOrange); currentNode.EnsureVisible(); } catch { } Application.DoEvents(); }; exporter.OnError += (error, rank) => { try { currentNode = CreateTreeNode(rank, error, Color.Red); currentNode.EnsureVisible(); } catch { } Application.DoEvents(); }; exporter.OnMessage += (message, color, rank, emphasis) => { try { currentNode = CreateTreeNode(rank, message, color); if (emphasis) { currentNode.EnsureVisible(); } } catch { } Application.DoEvents(); }; butExport.Enabled = false; butExportAndRun.Enabled = false; butCancel.Enabled = true; bool success = true; try { exporter.AutoSaveMayaFile = chkAutoSave.Checked; exporter.ExportHiddenObjects = chkHidden.Checked; exporter.CopyTexturesToOutput = chkCopyTextures.Checked; var directoryName = Path.GetDirectoryName(txtFilename.Text); var fileName = Path.GetFileName(txtFilename.Text); exporter.Export(directoryName, fileName, comboOutputFormat.SelectedItem.ToString(), chkManifest.Checked, chkOnlySelected.Checked, chkAutoSave.Checked, chkHidden.Checked, chkCopyTextures.Checked); } catch (OperationCanceledException) { progressBar.Value = 0; success = false; } catch (Exception ex) { currentNode = CreateTreeNode(0, "Exportation cancelled: " + ex.Message, Color.Red); currentNode.EnsureVisible(); progressBar.Value = 0; success = false; } butCancel.Enabled = false; butExport.Enabled = true; butExportAndRun.Enabled = WebServer.IsSupported; BringToFront(); return(success); }
private async Task <bool> DoExport() { Loader.SetBoolProperty(chkCopyTexturesProperty, chkCopyTextures.Checked); Loader.SetBoolProperty(chkHiddenProperty, chkHidden.Checked); Loader.SetBoolProperty(chkOnlySelectedProperty, chkOnlySelected.Checked); Loader.SetBoolProperty(chkManifestProperty, chkManifest.Checked); Loader.SetBoolProperty(chkAutoSaveProperty, chkAutoSave.Checked); Loader.SetBoolProperty(chkOptimizeVerticesProperty, chkOptimizeVertices.Checked); Loader.SetBoolProperty(chkExportTangentsProperty, chkExportTangents.Checked); //Loader.SetBoolProperty(chkDracoCompressionProperty, chkDracoCompression.Checked); Loader.SetBoolProperty(chkExportSkinProperty, chkExportSkin.Checked); Loader.SetBoolProperty(chkExportMorphNormalProperty, chkExportMorphNormal.Checked); Loader.SetBoolProperty(chkExportMorphTangentProperty, chkExportMorphTangent.Checked); Loader.SetBoolProperty(chkExportKHRLightsPunctualProperty, chkExportKHRLightsPunctual.Checked); Loader.SetBoolProperty(chkExportKHRTextureTransformProperty, chkExportKHRTextureTransform.Checked); Loader.SetBoolProperty(chkBakeAnimationFramesProperty, chkBakeAnimationFrames.Checked); /*Tools.UpdateComboBox(comboOutputFormat, Loader.Core.RootNode, "babylonjs_outputFormat"); * * Loader.Core.RootNode.SetLocalData(txtFilename.Text);*/ exporter = new BabylonExporter(); treeView.Nodes.Clear(); exporter.OnExportProgressChanged += progress => { progressBar.Value = progress; Application.DoEvents(); }; exporter.OnWarning += (warning, rank) => { try { currentNode = CreateTreeNode(rank, warning, Color.DarkOrange); currentNode.EnsureVisible(); } catch { } Application.DoEvents(); }; exporter.OnError += (error, rank) => { try { currentNode = CreateTreeNode(rank, error, Color.Red); currentNode.EnsureVisible(); } catch { } Application.DoEvents(); }; exporter.OnMessage += (message, color, rank, emphasis) => { try { currentNode = CreateTreeNode(rank, message, color); if (emphasis) { currentNode.EnsureVisible(); } } catch { } Application.DoEvents(); }; exporter.OnVerbose += (message, color, rank, emphasis) => { try { currentNode = CreateTreeNode(rank, message, color); if (emphasis) { currentNode.EnsureVisible(); } } catch { } Application.DoEvents(); }; butExport.Enabled = false; butExportAndRun.Enabled = false; butCancel.Enabled = true; bool success = true; try { var directoryName = Path.GetDirectoryName(txtFilename.Text); var fileName = Path.GetFileName(txtFilename.Text); exporter.Export(outputDirectory: directoryName, outputFileName: fileName, outputFormat: comboOutputFormat.SelectedItem.ToString(), generateManifest: chkManifest.Checked, onlySelected: chkOnlySelected.Checked, autoSaveMayaFile: chkAutoSave.Checked, exportHiddenObjects: chkHidden.Checked, copyTexturesToOutput: chkCopyTextures.Checked, optimizeVertices: chkOptimizeVertices.Checked, exportTangents: chkExportTangents.Checked, scaleFactor: txtScaleFactor.Text, exportSkin: chkExportSkin.Checked, quality: txtQuality.Text, dracoCompression: chkDracoCompression.Checked, exportMorphNormal: chkExportMorphNormal.Checked, exportMorphTangent: chkExportMorphTangent.Checked, exportKHRLightsPunctual: chkExportKHRLightsPunctual.Checked, exportKHRTextureTransform: chkExportKHRTextureTransform.Checked, bakeAnimationFrames: chkBakeAnimationFrames.Checked); } catch (OperationCanceledException) { progressBar.Value = 0; success = false; } catch (Exception ex) { currentNode = CreateTreeNode(0, "Export cancelled: " + ex.Message + " " + ex.StackTrace, Color.Red); currentNode.EnsureVisible(); progressBar.Value = 0; success = false; } butCancel.Enabled = false; butExport.Enabled = true; butExportAndRun.Enabled = WebServer.IsSupported; BringToFront(); return(success); }
private async Task <bool> DoExport() { Loader.SetBoolProperty(chkCopyTexturesProperty, chkCopyTextures.Checked); Loader.SetBoolProperty(chkHiddenProperty, chkHidden.Checked); Loader.SetBoolProperty(chkOnlySelectedProperty, chkOnlySelected.Checked); Loader.SetBoolProperty(chkManifestProperty, chkManifest.Checked); Loader.SetBoolProperty(chkAutoSaveProperty, chkAutoSave.Checked); Loader.SetBoolProperty(chkOptimizeVerticesProperty, chkOptimizeVertices.Checked); Loader.SetBoolProperty(chkExportTangentsProperty, chkExportTangents.Checked); //Loader.SetBoolProperty(chkDracoCompressionProperty, chkDracoCompression.Checked); Loader.SetBoolProperty(chkExportSkinProperty, chkExportSkin.Checked); Loader.SetBoolProperty(chkExportMorphNormalProperty, chkExportMorphNormal.Checked); Loader.SetBoolProperty(chkExportMorphTangentProperty, chkExportMorphTangent.Checked); Loader.SetBoolProperty(chkExportKHRLightsPunctualProperty, chkExportKHRLightsPunctual.Checked); Loader.SetBoolProperty(chkExportKHRTextureTransformProperty, chkExportKHRTextureTransform.Checked); Loader.SetBoolProperty(chkBakeAnimationFramesProperty, chkBakeAnimationFrames.Checked); Loader.SetBoolProperty(PBRFullPropertyName, chkFullPBR.Checked); Loader.SetBoolProperty(PBRNoLightPropertyName, chkNoAutoLight.Checked); Loader.SetBoolProperty(PBRDefaultSkyboxName, chkDefaultSkybox.Checked); /*Tools.UpdateComboBox(comboOutputFormat, Loader.Core.RootNode, "babylonjs_outputFormat"); * * Loader.Core.RootNode.SetLocalData(txtFilename.Text);*/ exporter = new BabylonExporter(); treeView.Nodes.Clear(); exporter.OnExportProgressChanged += progress => { progressBar.Value = progress; Application.DoEvents(); }; exporter.OnWarning += (warning, rank) => { try { currentNode = CreateTreeNode(rank, warning, Color.DarkOrange); currentNode.EnsureVisible(); } catch { } Application.DoEvents(); }; exporter.OnError += (error, rank) => { try { currentNode = CreateTreeNode(rank, error, Color.Red); currentNode.EnsureVisible(); } catch { } Application.DoEvents(); }; exporter.OnMessage += (message, color, rank, emphasis) => { try { currentNode = CreateTreeNode(rank, message, color); if (emphasis) { currentNode.EnsureVisible(); } } catch { } Application.DoEvents(); }; exporter.OnVerbose += (message, color, rank, emphasis) => { try { currentNode = CreateTreeNode(rank, message, color); if (emphasis) { currentNode.EnsureVisible(); } } catch { } Application.DoEvents(); }; butExport.Enabled = false; butExportAndRun.Enabled = false; butCancel.Enabled = true; bool success = true; try { var scaleFactorParsed = 1.0f; var textureQualityParsed = 100L; var exportParameters = new ExportParameters { outputPath = txtFilename.Text, outputFormat = comboOutputFormat.SelectedItem.ToString(), generateManifest = chkManifest.Checked, exportOnlySelected = chkOnlySelected.Checked, autoSaveSceneFile = chkAutoSave.Checked, exportHiddenObjects = chkHidden.Checked, writeTextures = chkCopyTextures.Checked, overwriteTextures = chkCopyTextures.Checked, optimizeVertices = chkOptimizeVertices.Checked, exportTangents = chkExportTangents.Checked, scaleFactor = float.TryParse(txtScaleFactor.Text, out scaleFactorParsed) ? scaleFactorParsed : 1.0f, exportSkins = chkExportSkin.Checked, txtQuality = long.TryParse(txtQuality.Text, out textureQualityParsed) ? textureQualityParsed : 100, dracoCompression = chkDracoCompression.Checked, exportMorphNormals = chkExportMorphNormal.Checked, exportMorphTangents = chkExportMorphTangent.Checked, enableKHRLightsPunctual = chkExportKHRLightsPunctual.Checked, enableKHRTextureTransform = chkExportKHRTextureTransform.Checked, bakeAnimationFrames = chkBakeAnimationFrames.Checked, pbrFull = chkFullPBR.Checked, pbrNoLight = chkNoAutoLight.Checked, createDefaultSkybox = chkDefaultSkybox.Checked, pbrEnvironment = txtEnvironmentName.Text }; exporter.Export(exportParameters); } catch (OperationCanceledException) { progressBar.Value = 0; success = false; } catch (Exception ex) { currentNode = CreateTreeNode(0, "Export cancelled: " + ex.Message + " " + ex.StackTrace, Color.Red); currentNode.EnsureVisible(); progressBar.Value = 0; success = false; } butCancel.Enabled = false; butExport.Enabled = true; butExportAndRun.Enabled = WebServer.IsSupported; BringToFront(); return(success); }
private BabylonCamera ExportCameraAnimations(BabylonCamera babylonCamera, IIGameCamera camera, BabylonExporter exporter) { var animations = new List <BabylonAnimation>(); int numProps = camera.IPropertyContainer.NumberOfProperties; for (int i = 0; i < numProps; ++i) { IIGameProperty property = camera.IPropertyContainer.GetProperty(i); if (property == null) { continue; } IParamDef paramDef = property.MaxParamBlock2?.GetParamDef(property.ParamID); string propertyName = property.Name.ToUpperInvariant(); switch (propertyName) { default: break; } } babylonCamera.animations = animations.ToArray(); return(babylonCamera); }
public bool ExportBabylonExtension <T>(T babylonObject, ref BabylonScene babylonScene, BabylonExporter exporter) { var cameraNode = babylonObject as Autodesk.Max.IIGameCamera; bool isGLTFExported = exporter.exportParameters.outputFormat == "gltf"; // todo: MaterialUtilities class should be splitted as the wrapper contains more idwrapper then the materials one if (isGLTFExported && FlightSimCameraUtilities.class_ID.Equals(new MaterialUtilities.ClassIDWrapper(cameraNode.CameraTarget.MaxNode.ClassID))) { var id = cameraNode.CameraTarget.MaxNode.GetGuid().ToString(); // add a basic babylon material to the list to forward the max material reference var babylonCamera = new BabylonCamera();//(id) //{ // maxGameMaterial = materialNode, // name = materialNode.MaterialName //}; babylonCamera = ExportCameraAnimations(babylonCamera, cameraNode, exporter); babylonScene.CamerasList.Add(babylonCamera); return(true); } return(false); }
public bool ExportBabylonExtension <T>(T babylonObject, ref BabylonScene babylonScene, BabylonExporter exporter) { // just skip this extension is ment only for GLTF return(false); }
private BabylonMaterial ExportMaterialAnimations(BabylonMaterial babylonMaterial, IIGameMaterial material, BabylonExporter exporter) { var animations = new List <BabylonAnimation>(); int numProps = material.IPropertyContainer.NumberOfProperties; for (int i = 0; i < numProps; ++i) { IIGameProperty property = material.IPropertyContainer.GetProperty(i); if (property == null) { continue; } if (!property.IsPropAnimated) { continue; } IParamDef paramDef = property.MaxParamBlock2?.GetParamDef(property.ParamID); string propertyName = property.Name.ToUpperInvariant(); switch (propertyName) { case "BASECOLOR": { if (property.IGameControl.GetMaxControl(IGameControlType.Point4).NumKeys > 0) { exporter.ExportColor4Animation(property.Name, animations, key => material.IPropertyContainer.GetPoint4Property(property.Name, key).ToArray()); } break; } case "EMISSIVE": { if (property.IGameControl.GetMaxControl(IGameControlType.Point3).NumKeys > 0) { exporter.ExportColor3Animation(property.Name, animations, key => material.IPropertyContainer.GetPoint3Property(property.Name, key).ToArray()); } break; } case "WIPERANIMSTATE1": case "WIPERANIMSTATE2": case "WIPERANIMSTATE3": case "WIPERANIMSTATE4": case "METALLIC": case "ROUGHNESS": case "UVOFFSETU": case "UVOFFSETV": case "UVTILINGU": case "UVTILINGV": case "UVROTATION": { if (property.IGameControl.GetMaxControl(IGameControlType.Float).NumKeys > 0) { exporter.ExportFloatAnimation(property.Name, animations, key => new[] { material.IPropertyContainer.GetFloatProperty(property.Name, key, 0) }); } break; } default: break; } } babylonMaterial.animations = animations.ToArray(); return(babylonMaterial); }
public bool ExportBabylonExtension <T>(T babylonObject, ref BabylonScene babylonScene, BabylonExporter exporter) { var materialNode = babylonObject as Autodesk.Max.IIGameMaterial; bool isGLTFExported = exporter.exportParameters.outputFormat == "gltf"; if (isGLTFExported && FlightSimMaterialUtilities.class_ID.Equals(new MaterialUtilities.ClassIDWrapper(materialNode.MaxMaterial.ClassID))) { var id = materialNode.MaxMaterial.GetGuid().ToString(); // add a basic babylon material to the list to forward the max material reference var babylonMaterial = new BabylonMaterial(id) { maxGameMaterial = materialNode, name = materialNode.MaterialName }; babylonMaterial = ExportMaterialAnimations(babylonMaterial, materialNode, exporter); babylonScene.MaterialsList.Add(babylonMaterial); return(true); } return(false); }