private void SaveOptions()
        {
            Tools.UpdateCheckBox(chkManifest, Loader.Core.RootNode, "babylonjs_generatemanifest");
            Tools.UpdateCheckBox(chkWriteTextures, Loader.Core.RootNode, "babylonjs_writetextures");
            Tools.UpdateCheckBox(chkOverwriteTextures, Loader.Core.RootNode, "babylonjs_overwritetextures");
            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.UpdateCheckBox(chkExportTangents, Loader.Core.RootNode, "babylonjs_exporttangents");
            Tools.UpdateComboBox(comboOutputFormat, Loader.Core.RootNode, "babylonjs_outputFormat");
            Tools.UpdateTextBox(txtScaleFactor, Loader.Core.RootNode, "babylonjs_txtScaleFactor");
            Tools.UpdateTextBox(txtQuality, Loader.Core.RootNode, "babylonjs_txtCompression");
            Tools.UpdateCheckBox(chkMergeAOwithMR, Loader.Core.RootNode, "babylonjs_mergeAOwithMR");
            Tools.UpdateCheckBox(chkDracoCompression, Loader.Core.RootNode, "babylonjs_dracoCompression");
            Tools.UpdateCheckBox(chkKHRTextureTransform, Loader.Core.RootNode, "babylonjs_khrTextureTransform");
            Tools.UpdateCheckBox(chkKHRLightsPunctual, Loader.Core.RootNode, "babylonjs_khrLightsPunctual");
            Tools.UpdateCheckBox(chkKHRMaterialsUnlit, Loader.Core.RootNode, "babylonjs_khr_materials_unlit");
            Tools.UpdateCheckBox(chkExportMaterials, Loader.Core.RootNode, "babylonjs_export_materials");
            Tools.UpdateCheckBox(chkAnimgroupExportNonAnimated, Loader.Core.RootNode, "babylonjs_animgroupexportnonanimated");
            Tools.UpdateCheckBox(chkDoNotOptimizeAnimations, Loader.Core.RootNode, "babylonjs_donotoptimizeanimations");
            Tools.UpdateCheckBox(chkExportMorphTangents, Loader.Core.RootNode, "babylonjs_export_Morph_Tangents");
            Tools.UpdateCheckBox(chkExportMorphNormals, Loader.Core.RootNode, "babylonjs_export_Morph_Normals");

            Loader.Core.RootNode.SetStringProperty(ExportParameters.ModelFilePathProperty, Tools.RelativePathStore(txtModelName.Text));
            Loader.Core.RootNode.SetStringProperty(ExportParameters.TextureFolderPathProperty, Tools.RelativePathStore(txtTextureName.Text));

            Tools.UpdateCheckBox(chkFullPBR, Loader.Core.RootNode, ExportParameters.PBRFullPropertyName);
            Tools.UpdateCheckBox(chkNoAutoLight, Loader.Core.RootNode, ExportParameters.PBRNoLightPropertyName);
            Loader.Core.RootNode.SetStringProperty(ExportParameters.PBREnvironmentPathPropertyName, Tools.RelativePathStore(txtEnvironmentName.Text));

            Tools.UpdateCheckBox(chkUsePreExportProces, Loader.Core.RootNode, "babylonjs_preproces");
            Tools.UpdateCheckBox(chkFlatten, Loader.Core.RootNode, "babylonjs_flattenScene");
            Tools.UpdateCheckBox(chkMrgInheritedContainers, Loader.Core.RootNode, "babylonjs_mergeinheritedcontainers");
        }
Example #2
0
        private void SaveOptions()
        {
            Tools.UpdateCheckBox(chkManifest, Loader.Core.RootNode, "babylonjs_generatemanifest");
            Tools.UpdateCheckBox(chkWriteTextures, Loader.Core.RootNode, "babylonjs_writetextures");
            Tools.UpdateCheckBox(chkOverwriteTextures, Loader.Core.RootNode, "babylonjs_overwritetextures");
            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.UpdateCheckBox(chkExportTangents, Loader.Core.RootNode, "babylonjs_exporttangents");
            Tools.UpdateComboBox(comboOutputFormat, Loader.Core.RootNode, "babylonjs_outputFormat");
            Tools.UpdateTextBox(txtScaleFactor, Loader.Core.RootNode, "babylonjs_txtScaleFactor");
            Tools.UpdateTextBox(txtQuality, Loader.Core.RootNode, "babylonjs_txtCompression");
            Tools.UpdateCheckBox(chkMergeAOwithMR, Loader.Core.RootNode, "babylonjs_mergeAOwithMR");
            Tools.UpdateCheckBox(chkDracoCompression, Loader.Core.RootNode, "babylonjs_dracoCompression");
            Tools.UpdateCheckBox(chkKHRTextureTransform, Loader.Core.RootNode, "babylonjs_khrTextureTransform");
            Tools.UpdateCheckBox(chkKHRLightsPunctual, Loader.Core.RootNode, "babylonjs_khrLightsPunctual");
            Tools.UpdateCheckBox(chkKHRMaterialsUnlit, Loader.Core.RootNode, "babylonjs_khr_materials_unlit");
            Tools.UpdateCheckBox(chkExportMaterials, Loader.Core.RootNode, "babylonjs_export_materials");

            string unformattedPath = Tools.UnformatPath(txtModelName.Text);

            Loader.Core.RootNode.SetStringProperty(ExportParameters.ModelFilePathProperty, Tools.RelativePathStore(unformattedPath));

            string unformattedTextureFolderPath = Tools.UnformatPath(txtTextureName.Text);

            Loader.Core.RootNode.SetStringProperty(ExportParameters.TextureFolderPathProperty, Tools.RelativePathStore(unformattedTextureFolderPath));

            Tools.UpdateCheckBox(chkFullPBR, Loader.Core.RootNode, ExportParameters.PBRFullPropertyName);
            Tools.UpdateCheckBox(chkNoAutoLight, Loader.Core.RootNode, ExportParameters.PBRNoLightPropertyName);
            string unformattedEnvironmentPath = Tools.UnformatPath(txtEnvironmentName.Text);

            Loader.Core.RootNode.SetStringProperty(ExportParameters.PBREnvironmentPathPropertyName, Tools.RelativePathStore(unformattedEnvironmentPath));
        }
        private void butOK_Click(object sender, EventArgs e)
        {
            Tools.UpdateCheckBox(chkNoExport, lights, "babylonjs_noexport");
            Tools.UpdateCheckBox(chkAutoAnimate, lights, "babylonjs_autoanimate");
            Tools.UpdateCheckBox(chkLoop, lights, "babylonjs_autoanimateloop");
            Tools.UpdateNumericUpDown(nupFrom, lights, "babylonjs_autoanimate_from");
            Tools.UpdateNumericUpDown(nupTo, lights, "babylonjs_autoanimate_to");

            Tools.UpdateNumericUpDown(nupBias, lights, "babylonjs_shadows_bias");
            Tools.UpdateNumericUpDown(nupBlurScale, lights, "babylonjs_shadows_blurScale");
            Tools.UpdateNumericUpDown(nupBlurBoxOffset, lights, "babylonjs_shadows_blurBoxOffset");
            Tools.UpdateComboBox(cbCameraType, lights, "babylonjs_shadows_type");
        }
        private void SaveOptions()
        {
            Tools.UpdateCheckBox(chkManifest, Loader.Core.RootNode, "babylonjs_generatemanifest");
            Tools.UpdateCheckBox(chkWriteTextures, Loader.Core.RootNode, "babylonjs_writetextures");
            Tools.UpdateCheckBox(chkOverwriteTextures, Loader.Core.RootNode, "babylonjs_overwritetextures");
            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.UpdateCheckBox(chkExportTangents, Loader.Core.RootNode, "babylonjs_exporttangents");
            Tools.UpdateComboBox(comboOutputFormat, Loader.Core.RootNode, "babylonjs_outputFormat");
            Tools.UpdateTextBox(txtScaleFactor, Loader.Core.RootNode, "babylonjs_txtScaleFactor");
            Tools.UpdateTextBox(txtQuality, Loader.Core.RootNode, "babylonjs_txtCompression");
            Tools.UpdateCheckBox(chkMergeAOwithMR, Loader.Core.RootNode, "babylonjs_mergeAOwithMR");
            Tools.UpdateCheckBox(chkDracoCompression, Loader.Core.RootNode, "babylonjs_dracoCompression");
            Tools.UpdateCheckBox(chkKHRTextureTransform, Loader.Core.RootNode, "babylonjs_khrTextureTransform");
            Tools.UpdateCheckBox(chkKHRLightsPunctual, Loader.Core.RootNode, "babylonjs_khrLightsPunctual");
            Tools.UpdateCheckBox(chkKHRMaterialsUnlit, Loader.Core.RootNode, "babylonjs_khr_materials_unlit");
            Tools.UpdateCheckBox(chkExportMaterials, Loader.Core.RootNode, "babylonjs_export_materials");
            Tools.UpdateComboBox(cmbExportAnimationType, Loader.Core.RootNode, "babylonjs_export_animations_type");
            Tools.UpdateCheckBox(chkASBAnimationRetargeting, Loader.Core.RootNode, "babylonjs_asb_animation_retargeting");
            Tools.UpdateCheckBox(chkAnimgroupExportNonAnimated, Loader.Core.RootNode, "babylonjs_animgroupexportnonanimated");
            Tools.UpdateCheckBox(chkDoNotOptimizeAnimations, Loader.Core.RootNode, "babylonjs_donotoptimizeanimations");
            Tools.UpdateCheckBox(chkExportMorphTangents, Loader.Core.RootNode, "babylonjs_export_Morph_Tangents");
            Tools.UpdateCheckBox(chkExportMorphNormals, Loader.Core.RootNode, "babylonjs_export_Morph_Normals");
            Tools.UpdateComboBoxByIndex(cmbBakeAnimationOptions, Loader.Core.RootNode, "babylonjs_bakeAnimationsType");
            Tools.UpdateCheckBox(chkApplyPreprocessToScene, Loader.Core.RootNode, "babylonjs_applyPreprocess");
            Tools.UpdateComboBoxByIndex(logLevelcmb, Loader.Core.RootNode, "babylonjs_logLevel");

            Tools.UpdateCheckBox(chk_RemoveLodPrefix, Loader.Core.RootNode, "flightsim_removelodprefix");
            Tools.UpdateCheckBox(chkRemoveNamespace, Loader.Core.RootNode, "flightsim_removenamespaces");
            Tools.UpdateTextBox(txtSrcTextureExt, Loader.Core.RootNode, "flightsim_texture_destination_extension");
            Tools.UpdateTextBox(txtDstTextureExt, Loader.Core.RootNode, "flightsim_texture_destination_extension");

            Loader.Core.RootNode.SetStringProperty(ExportParameters.ModelFilePathProperty, Tools.RelativePathStore(txtModelPath.Text));
            Loader.Core.RootNode.SetStringProperty(ExportParameters.TextureFolderPathProperty, Tools.RelativePathStore(txtTexturesPath.Text));

            Tools.UpdateCheckBox(chkFullPBR, Loader.Core.RootNode, ExportParameters.PBRFullPropertyName);
            Tools.UpdateCheckBox(chkNoAutoLight, Loader.Core.RootNode, ExportParameters.PBRNoLightPropertyName);
            Loader.Core.RootNode.SetStringProperty(ExportParameters.PBREnvironmentPathPropertyName, Tools.RelativePathStore(txtEnvironmentName.Text));

            Tools.UpdateCheckBox(chkUsePreExportProces, Loader.Core.RootNode, "babylonjs_preproces");
            Tools.UpdateCheckBox(chkFlatten, Loader.Core.RootNode, "babylonjs_flattenScene");
            Tools.UpdateCheckBox(chkMrgContainersAndXref, Loader.Core.RootNode, "babylonjs_mergecontainersandxref");
            Tools.UpdateComboBoxByIndex(cmbNormalMapConvention, Loader.Core.RootNode, "flightsim_tangent_space_convention");
        }
        private void butOK_Click(object sender, EventArgs e)
        {
            Tools.UpdateCheckBox(chkNoExport, cameras, "babylonjs_noexport");
            Tools.UpdateCheckBox(chkCollisions, cameras, "babylonjs_checkcollisions");
            Tools.UpdateCheckBox(chkGravity, cameras, "babylonjs_applygravity");

            Tools.UpdateNumericUpDown(nupSpeed, cameras, "babylonjs_speed");
            Tools.UpdateNumericUpDown(nupInertia, cameras, "babylonjs_inertia");

            Tools.UpdateVector3Control(ellipsoidControl, cameras, "babylonjs_ellipsoid");

            Tools.UpdateComboBox(cbCameraType, cameras, "babylonjs_type");

            Tools.UpdateCheckBox(chkAutoAnimate, cameras, "babylonjs_autoanimate");
            Tools.UpdateCheckBox(chkLoop, cameras, "babylonjs_autoanimateloop");
            Tools.UpdateNumericUpDown(nupFrom, cameras, "babylonjs_autoanimate_from");
            Tools.UpdateNumericUpDown(nupTo, cameras, "babylonjs_autoanimate_to");
        }
Example #6
0
        private void butOK_Click(object sender, EventArgs e)
        {
            Tools.UpdateCheckBox(chkNoExport, objects, "babylonjs_noexport");
            Tools.UpdateCheckBox(chkCollisions, objects, "babylonjs_checkcollisions");
            Tools.UpdateCheckBox(chkPickable, objects, "babylonjs_checkpickable");
            Tools.UpdateCheckBox(chkOptimize, objects, "babylonjs_optimizevertices");
            Tools.UpdateCheckBox(chkShowBoundingBox, objects, "babylonjs_showboundingbox");
            Tools.UpdateCheckBox(chkShowSubMeshesBoundingBox, objects, "babylonjs_showsubmeshesboundingbox");

            Tools.UpdateCheckBox(chkAutoAnimate, objects, "babylonjs_autoanimate");
            Tools.UpdateCheckBox(chkBakeAnimationNode, objects, "babylonjs_BakeAnimation");
            Tools.UpdateCheckBox(chkLoop, objects, "babylonjs_autoanimateloop");
            Tools.UpdateNumericUpDown(nupFrom, objects, "babylonjs_autoanimate_from");
            Tools.UpdateNumericUpDown(nupTo, objects, "babylonjs_autoanimate_to");

            Tools.UpdateNumericUpDown(nupAlphaIndex, objects, "babylonjs_alphaindex");
            Tools.UpdateNumericUpDown(nupMass, objects, "babylonjs_mass");
            Tools.UpdateNumericUpDown(nupFriction, objects, "babylonjs_friction");
            Tools.UpdateNumericUpDown(nupRestitution, objects, "babylonjs_restitution");
            Tools.UpdateComboBox(cbImpostor, objects, "babylonjs_impostor");

            Tools.UpdateCheckBox(chkAutoPlay, objects, "babylonjs_sound_autoplay");
            Tools.UpdateCheckBox(chkLoop, objects, "babylonjs_sound_loop");
            Tools.UpdateNumericUpDown(nupVolume, objects, "babylonjs_sound_volume");
            Tools.UpdateNumericUpDown(nupPlaybackRate, objects, "babylonjs_sound_playbackrate");

            Tools.UpdateComboBox(cbDistanceModel, objects, "babylonjs_sound_distancemodel");
            Tools.UpdateNumericUpDown(nupMaxDistance, objects, "babylonjs_sound_maxdistance");
            Tools.UpdateNumericUpDown(nupRolloff, objects, "babylonjs_sound_rolloff");
            Tools.UpdateNumericUpDown(nupRefDistance, objects, "babylonjs_sound_refdistance");

            Tools.UpdateCheckBox(chkDirectional, objects, "babylonjs_sound_directional");
            Tools.UpdateNumericUpDown(nupConeInnerAngle, objects, "babylonjs_sound_coneinnerangle");
            Tools.UpdateNumericUpDown(nupConeOuterAngle, objects, "babylonjs_sound_coneouterangle");
            Tools.UpdateNumericUpDown(nupConeOuterGain, objects, "babylonjs_sound_coneoutergain");

            Tools.UpdateTextBox(txtSound, objects, "babylonjs_sound_filename");

            Tools.UpdateTextBox(tagInput, objects, "babylonjs_tag");
            Tools.UpdateTextBox(txtASBUniqueID, objects, "flightsim_uniqueID");

            Tools.UpdateNumericUpDown(lodValueNumeric, objects, "flightsim_lod_value");
        }
Example #7
0
        private void cmbExportAnimationType_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch ((AnimationExportType)cmbExportAnimationType.SelectedIndex)
            {
            case AnimationExportType.NotExport:
                chkExportMorphTangents.Enabled = false;
                chkExportMorphNormals.Enabled  = false;
                chkWriteTextures.Enabled       = true;
                chkOverwriteTextures.Enabled   = true;
                chkExportMaterials.Enabled     = true;
                chkMergeAOwithMR.Enabled       = true;
                chkDracoCompression.Enabled    = true;
                chkExportTangents.Enabled      = true;
                break;

            case AnimationExportType.Export:
                chkWriteTextures.Enabled       = true;
                chkOverwriteTextures.Enabled   = true;
                chkExportMaterials.Enabled     = true;
                chkMergeAOwithMR.Enabled       = true;
                chkDracoCompression.Enabled    = true;
                chkExportTangents.Enabled      = true;
                chkExportMorphTangents.Enabled = true;
                chkExportMorphNormals.Enabled  = true;
                break;

            case AnimationExportType.ExportOnly:
                chkExportMorphTangents.Enabled = true;
                chkExportMorphNormals.Enabled  = true;
                chkWriteTextures.Enabled       = false;
                chkOverwriteTextures.Enabled   = false;
                chkExportMaterials.Enabled     = false;
                chkMergeAOwithMR.Enabled       = false;
                chkDracoCompression.Enabled    = false;
                chkExportTangents.Enabled      = false;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            Tools.UpdateComboBox(cmbExportAnimationType, Loader.Core.RootNode, "babylonjs_export_animations_type");
        }
        private void butOK_Click(object sender, EventArgs e)
        {
            Tools.UpdateCheckBox(chkNoExport, objects, "babylonjs_noexport");
            Tools.UpdateCheckBox(chkCollisions, objects, "babylonjs_checkcollisions");
            Tools.UpdateCheckBox(chkPickable, objects, "babylonjs_checkpickable");
            Tools.UpdateCheckBox(chkOptimize, objects, "babylonjs_optimizevertices");
            Tools.UpdateCheckBox(chkShowBoundingBox, objects, "babylonjs_showboundingbox");
            Tools.UpdateCheckBox(chkShowSubMeshesBoundingBox, objects, "babylonjs_showsubmeshesboundingbox");

            Tools.UpdateCheckBox(chkAutoAnimate, objects, "babylonjs_autoanimate");
            Tools.UpdateCheckBox(chkLoop, objects, "babylonjs_autoanimateloop");
            Tools.UpdateNumericUpDown(nupFrom, objects, "babylonjs_autoanimate_from");
            Tools.UpdateNumericUpDown(nupTo, objects, "babylonjs_autoanimate_to");

            Tools.UpdateNumericUpDown(nupAlphaIndex, objects, "babylonjs_alphaindex");
            Tools.UpdateNumericUpDown(nupMass, objects, "babylonjs_mass");
            Tools.UpdateNumericUpDown(nupFriction, objects, "babylonjs_friction");
            Tools.UpdateNumericUpDown(nupRestitution, objects, "babylonjs_restitution");
            Tools.UpdateComboBox(cbImpostor, objects, "babylonjs_impostor");
        }
Example #9
0
        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
            {
                ExportParameters exportParameters = new ExportParameters();
                exportParameters.outputPath           = txtFilename.Text;
                exportParameters.outputFormat         = comboOutputFormat.SelectedItem.ToString();
                exportParameters.scaleFactor          = txtScaleFactor.Text;
                exportParameters.copyTexturesToOutput = chkCopyTextures.Checked;
                exportParameters.exportHiddenObjects  = chkHidden.Checked;
                exportParameters.exportOnlySelected   = chkOnlySelected.Checked;
                exportParameters.generateManifest     = chkManifest.Checked;
                exportParameters.autoSave3dsMaxFile   = chkAutoSave.Checked;

                exporter.callerForm = this;

                exporter.Export(exportParameters);
            }
            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);
        }
Example #10
0
        private void comboOutputFormat_SelectedIndexChanged(object sender, EventArgs e)
        {
            var outputFormat = comboOutputFormat.SelectedItem.ToString();

            switch (outputFormat)
            {
            case "babylon":
            case "binary babylon":
                this.saveFileDialog.DefaultExt     = "babylon";
                this.saveFileDialog.Filter         = "Babylon files|*.babylon";
                chkDracoCompression.Checked        = false;
                chkDracoCompression.Enabled        = false;
                chkWriteTextures.Enabled           = true;
                chkOverwriteTextures.Enabled       = true;
                txtTexturesPath.Text               = string.Empty;
                txtTexturesPath.Enabled            = false;
                textureLabel.Enabled               = false;
                btnTxtBrowse.Enabled               = false;
                chkNoAutoLight.Enabled             = true;
                chkFullPBR.Enabled                 = true;
                btnEnvBrowse.Enabled               = true;
                txtEnvironmentName.Enabled         = true;
                chkKHRMaterialsUnlit.Enabled       = false;
                chkKHRLightsPunctual.Enabled       = false;
                chkKHRTextureTransform.Enabled     = false;
                chkASBAnimationRetargeting.Enabled = false;
                break;

            case "gltf":
                this.saveFileDialog.DefaultExt     = "gltf";
                this.saveFileDialog.Filter         = "glTF files|*.gltf";
                chkDracoCompression.Enabled        = gltfPipelineInstalled;
                chkWriteTextures.Enabled           = true;
                chkOverwriteTextures.Enabled       = true;
                txtTexturesPath.Enabled            = true;
                textureLabel.Enabled               = true;
                btnTxtBrowse.Enabled               = true;
                chkNoAutoLight.Enabled             = false;
                chkNoAutoLight.Checked             = false;
                chkFullPBR.Enabled                 = false;
                chkFullPBR.Checked                 = false;
                btnEnvBrowse.Enabled               = false;
                txtEnvironmentName.Enabled         = false;
                txtEnvironmentName.Text            = string.Empty;
                chkKHRMaterialsUnlit.Enabled       = true;
                chkKHRLightsPunctual.Enabled       = true;
                chkKHRTextureTransform.Enabled     = true;
                chkASBAnimationRetargeting.Enabled = true;
                break;

            case "glb":
                this.saveFileDialog.DefaultExt     = "glb";
                this.saveFileDialog.Filter         = "glb files|*.glb";
                chkDracoCompression.Enabled        = gltfPipelineInstalled;
                chkWriteTextures.Checked           = true;
                chkWriteTextures.Enabled           = false;
                chkOverwriteTextures.Checked       = true;
                chkOverwriteTextures.Enabled       = false;
                txtTexturesPath.Text               = string.Empty;
                txtTexturesPath.Enabled            = false;
                textureLabel.Enabled               = false;
                btnTxtBrowse.Enabled               = false;
                chkNoAutoLight.Enabled             = false;
                chkNoAutoLight.Checked             = false;
                chkFullPBR.Enabled                 = false;
                chkFullPBR.Checked                 = false;
                btnEnvBrowse.Enabled               = false;
                txtEnvironmentName.Enabled         = false;
                txtEnvironmentName.Text            = string.Empty;
                chkKHRMaterialsUnlit.Enabled       = true;
                chkKHRLightsPunctual.Enabled       = true;
                chkKHRTextureTransform.Enabled     = true;
                chkASBAnimationRetargeting.Enabled = true;
                break;
            }

            string newModelPath = Path.ChangeExtension(txtModelPath.Text, this.saveFileDialog.DefaultExt);

            this.txtModelPath.MaxPath(newModelPath);
            Tools.UpdateComboBox(comboOutputFormat, Loader.Core.RootNode, "babylonjs_outputFormat");
        }
Example #11
0
        private async Task <bool> DoExport()
        {
            Tools.UpdateCheckBox(chkManifest, Loader.Core.RootNode, "babylonjs_generatemanifest");
            Tools.UpdateCheckBox(chkWriteTextures, Loader.Core.RootNode, "babylonjs_writetextures");
            Tools.UpdateCheckBox(chkOverwriteTextures, Loader.Core.RootNode, "babylonjs_overwritetextures");
            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.UpdateCheckBox(chkExportTangents, Loader.Core.RootNode, "babylonjs_exporttangents");
            Tools.UpdateComboBox(comboOutputFormat, Loader.Core.RootNode, "babylonjs_outputFormat");
            Tools.UpdateTextBox(txtScaleFactor, Loader.Core.RootNode, "babylonjs_txtScaleFactor");
            Tools.UpdateTextBox(txtQuality, Loader.Core.RootNode, "babylonjs_txtCompression");
            Tools.UpdateCheckBox(chkMergeAOwithMR, Loader.Core.RootNode, "babylonjs_mergeAOwithMR");
            Tools.UpdateCheckBox(chkDracoCompression, Loader.Core.RootNode, "babylonjs_dracoCompression");
            Tools.UpdateCheckBox(chkKHRTextureTransform, Loader.Core.RootNode, "babylonjs_khrTextureTransform");
            Tools.UpdateCheckBox(chkKHRLightsPunctual, Loader.Core.RootNode, "babylonjs_khrLightsPunctual");
            Tools.UpdateCheckBox(chkKHRMaterialsUnlit, Loader.Core.RootNode, "babylonjs_khr_materials_unlit");
            Tools.UpdateCheckBox(chkExportMaterials, Loader.Core.RootNode, "babylonjs_export_materials");

            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
            {
                ExportParameters exportParameters = new ExportParameters
                {
                    outputPath                = txtFilename.Text,
                    outputFormat              = comboOutputFormat.SelectedItem.ToString(),
                    scaleFactor               = txtScaleFactor.Text,
                    writeTextures             = chkWriteTextures.Checked,
                    overwriteTextures         = chkOverwriteTextures.Checked,
                    exportHiddenObjects       = chkHidden.Checked,
                    exportOnlySelected        = chkOnlySelected.Checked,
                    generateManifest          = chkManifest.Checked,
                    autoSave3dsMaxFile        = chkAutoSave.Checked,
                    exportTangents            = chkExportTangents.Checked,
                    txtQuality                = txtQuality.Text,
                    mergeAOwithMR             = chkMergeAOwithMR.Checked,
                    dracoCompression          = chkDracoCompression.Checked,
                    enableKHRLightsPunctual   = chkKHRLightsPunctual.Checked,
                    enableKHRTextureTransform = chkKHRTextureTransform.Checked,
                    enableKHRMaterialsUnlit   = chkKHRMaterialsUnlit.Checked,
                    exportMaterials           = chkExportMaterials.Checked
                };

                exporter.callerForm = this;

                exporter.Export(exportParameters);
            }
            catch (OperationCanceledException)
            {
                progressBar.Value = 0;
                success           = false;
            }
            catch (Exception ex)
            {
                currentNode = CreateTreeNode(0, "Exportation cancelled: " + ex.Message, Color.Red);
                currentNode = CreateTreeNode(1, ex.ToString(), Color.Red);
                currentNode.EnsureVisible();

                progressBar.Value = 0;
                success           = false;
            }

            butCancel.Enabled       = false;
            butExport.Enabled       = true;
            butExportAndRun.Enabled = WebServer.IsSupported;

            BringToFront();

            return(success);
        }