Przeglądaj źródła

Adding Export only selected to 3ds max exporter

David Catuhe 11 lat temu
rodzic
commit
093e00ac11

BIN
Exporters/3ds Max/Max2Babylon-0.7.7.zip


+ 1 - 1
Exporters/3ds Max/Max2Babylon/Exporter/BabylonExporter.ShadowGenerator.cs

@@ -16,7 +16,7 @@ namespace Max2Babylon
             babylonShadowGenerator.lightId = lightNode.GetGuid().ToString();
 
             babylonShadowGenerator.mapSize = maxLight.GetMapSize(0, Tools.Forever);
-            babylonShadowGenerator.usePoissonSampling = maxLight.AbsMapBias == 1;
+            babylonShadowGenerator.usePoissonSampling = maxLight.AbsMapBias >= 1;
 
             var list = new List<string>();
 

+ 14 - 1
Exporters/3ds Max/Max2Babylon/Exporter/BabylonExporter.cs

@@ -77,7 +77,7 @@ namespace Max2Babylon
             }
         }
 
-        public async Task ExportAsync(string outputFile, bool generateManifest, Form callerForm)
+        public async Task ExportAsync(string outputFile, bool generateManifest, bool onlySelected, Form callerForm)
         {
             IsCancelled = false;
             RaiseMessage("Exportation started", Color.Blue);
@@ -123,6 +123,10 @@ namespace Max2Babylon
             RaiseMessage("Exporting cameras");
             foreach (var cameraNode in maxScene.NodesListBySuperClass(SClass_ID.Camera))
             {
+                if (onlySelected && !cameraNode.Selected)
+                {
+                    continue;
+                }
                 ExportCamera(cameraNode, babylonScene);
 
                 if (mainCamera == null && babylonScene.CamerasList.Count > 0)
@@ -176,6 +180,11 @@ namespace Max2Babylon
             var progression = 10.0f;
             foreach (var meshNode in meshes)
             {
+                if (onlySelected && !meshNode.Selected)
+                {
+                    continue;
+                }
+
                 Tools.PreparePipeline(meshNode, true);
                 ExportMesh(meshNode, babylonScene);
                 Tools.PreparePipeline(meshNode, false);
@@ -201,6 +210,10 @@ namespace Max2Babylon
             RaiseMessage("Exporting lights");
             foreach (var lightNode in maxScene.NodesListBySuperClass(SClass_ID.Light))
             {
+                if (onlySelected && !lightNode.Selected)
+                {
+                    continue;
+                }
                 ExportLight(lightNode, babylonScene);
                 CheckCancelled();
             }

+ 14 - 0
Exporters/3ds Max/Max2Babylon/Forms/ExporterForm.Designer.cs

@@ -45,6 +45,7 @@
             this.chkAutoSave = new System.Windows.Forms.CheckBox();
             this.chkHidden = new System.Windows.Forms.CheckBox();
             this.butExportAndRun = new System.Windows.Forms.Button();
+            this.chkOnlySelected = new System.Windows.Forms.CheckBox();
             ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
             this.groupBox1.SuspendLayout();
             this.SuspendLayout();
@@ -177,6 +178,7 @@
             // 
             this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
+            this.groupBox1.Controls.Add(this.chkOnlySelected);
             this.groupBox1.Controls.Add(this.chkAutoSave);
             this.groupBox1.Controls.Add(this.chkHidden);
             this.groupBox1.Controls.Add(this.label1);
@@ -226,6 +228,17 @@
             this.butExportAndRun.UseVisualStyleBackColor = true;
             this.butExportAndRun.Click += new System.EventHandler(this.butExportAndRun_Click);
             // 
+            // chkOnlySelected
+            // 
+            this.chkOnlySelected.AutoSize = true;
+            this.chkOnlySelected.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+            this.chkOnlySelected.Location = new System.Drawing.Point(362, 81);
+            this.chkOnlySelected.Name = "chkOnlySelected";
+            this.chkOnlySelected.Size = new System.Drawing.Size(118, 17);
+            this.chkOnlySelected.TabIndex = 15;
+            this.chkOnlySelected.Text = "Export only selected";
+            this.chkOnlySelected.UseVisualStyleBackColor = true;
+            // 
             // ExporterForm
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -273,5 +286,6 @@
         private System.Windows.Forms.CheckBox chkHidden;
         private System.Windows.Forms.CheckBox chkAutoSave;
         private System.Windows.Forms.Button butExportAndRun;
+        private System.Windows.Forms.CheckBox chkOnlySelected;
     }
 }

+ 4 - 2
Exporters/3ds Max/Max2Babylon/Forms/ExporterForm.cs

@@ -29,7 +29,8 @@ namespace Max2Babylon
             Tools.PrepareCheckBox(chkManifest, Loader.Core.RootNode, "babylonjs_generatemanifest");
             Tools.PrepareCheckBox(chkCopyTextures, Loader.Core.RootNode, "babylonjs_copytextures", 1);
             Tools.PrepareCheckBox(chkHidden, Loader.Core.RootNode, "babylonjs_exporthidden");
-            Tools.PrepareCheckBox(chkAutoSave, Loader.Core.RootNode, "babylonjs_autosave", 1);            
+            Tools.PrepareCheckBox(chkAutoSave, Loader.Core.RootNode, "babylonjs_autosave", 1);
+            Tools.PrepareCheckBox(chkOnlySelected, Loader.Core.RootNode, "babylonjs_onlySelected");   
         }
 
         private void butBrowse_Click(object sender, EventArgs e)
@@ -51,6 +52,7 @@ namespace Max2Babylon
             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");
 
             Loader.Core.RootNode.SetLocalData(txtFilename.Text);
 
@@ -117,7 +119,7 @@ namespace Max2Babylon
                 exporter.AutoSave3dsMaxFile = chkAutoSave.Checked;
                 exporter.ExportHiddenObjects = chkHidden.Checked;
                 exporter.CopyTexturesToOutput = chkCopyTextures.Checked;
-                await exporter.ExportAsync(txtFilename.Text, chkManifest.Checked, this);
+                await exporter.ExportAsync(txtFilename.Text, chkManifest.Checked, chkOnlySelected.Checked, this);
             }
             catch (OperationCanceledException)
             {

+ 2 - 0
Exporters/3ds Max/readme.md

@@ -3,6 +3,8 @@
 
 This exporter is designed for 3ds Max 2013+. You just have to unzip the content of the archive to [3ds max folder\bin\assemblies]
 
+*After unzipping DLLs, you may have to go through all files, right-click on them, select the Properties menu and click on Unblock button to remove security protection enforce by Windows*
+
 If you right click on the scene, on a light, on a camera or on a mesh you fill have a [Babylon...] menu. 
 
 To export you can use the [Babylon] menu in the main menu bar.