@@ -109,6 +109,7 @@ private void LoadOptions()
109109 chkDracoCompression . Enabled = false ;
110110 }
111111
112+
112113 Tools . PrepareCheckBox ( chkFullPBR , Loader . Core . RootNode , ExportParameters . PBRFullPropertyName ) ;
113114 Tools . PrepareCheckBox ( chkNoAutoLight , Loader . Core . RootNode , ExportParameters . PBRNoLightPropertyName ) ;
114115 string storedEnvironmentPath = Loader . Core . RootNode . GetStringProperty ( ExportParameters . PBREnvironmentPathPropertyName , string . Empty ) ;
@@ -119,7 +120,23 @@ private void LoadOptions()
119120 Tools . PrepareCheckBox ( chkFlatten , Loader . Core . RootNode , "babylonjs_flattenScene" , 0 ) ;
120121 Tools . PrepareCheckBox ( chkMrgContainersAndXref , Loader . Core . RootNode , "babylonjs_mergecontainersandxref" , 0 ) ;
121122 Tools . PrepareCheckBox ( chkTryReuseTexture , Loader . Core . RootNode , "babylonjs_tryReuseTexture" , 0 ) ;
122-
123+
124+ #region prepare draco
125+ LoadDracoOptions ( ) ;
126+ dracoUserControl . UpdateValueLabels ( ) ; // force value label to be updated
127+ dracoGroupBox . Enabled = chkDracoCompression . Enabled && chkDracoCompression . Checked ;
128+ #endregion
129+ }
130+
131+ private void LoadDracoOptions ( )
132+ {
133+ Tools . PrepareNumericUpDown ( dracoUserControl . CompressionLevelNumericUpDown , Loader . Core . RootNode , $ "babylonjs_{ DracoParameters . compressionLevel_param_name } ", DracoParameters . compressionLevel_default ) ;
134+ Tools . PrepareTrackBar ( dracoUserControl . QPositionTrackBar , Loader . Core . RootNode , $ "babylonjs_{ DracoParameters . quantizePositionBits_param_name } ", DracoParameters . quantizePositionBits_default ) ;
135+ Tools . PrepareTrackBar ( dracoUserControl . QNormalTrackBar , Loader . Core . RootNode , $ "babylonjs_{ DracoParameters . quantizeNormalBits_param_name } ", DracoParameters . quantizeNormalBits_default ) ;
136+ Tools . PrepareTrackBar ( dracoUserControl . QTexcoordTrackBar , Loader . Core . RootNode , $ "babylonjs_{ DracoParameters . quantizeTexcoordBits_param_name } ", DracoParameters . quantizeTexcoordBits_default ) ;
137+ Tools . PrepareTrackBar ( dracoUserControl . QColorTrackBar , Loader . Core . RootNode , $ "babylonjs_{ DracoParameters . quantizeColorBits_param_name } ", DracoParameters . quantizeColorBits_default ) ;
138+ Tools . PrepareTrackBar ( dracoUserControl . QGenericTrackBar , Loader . Core . RootNode , $ "babylonjs_{ DracoParameters . quantizeGenericBits_param_name } ", DracoParameters . quantizeGenericBits_default ) ;
139+ Tools . PrepareCheckBox ( dracoUserControl . UnifiedCheckBox , Loader . Core . RootNode , $ "babylonjs_{ DracoParameters . unifiedQuantization_param_name } ", DracoParameters . unifiedQuantization_default ? 1 : 0 ) ;
123140 }
124141
125142 private void ExporterForm_Load ( object sender , EventArgs e )
@@ -326,8 +343,22 @@ private void SaveOptions()
326343 Tools . UpdateCheckBox ( chkFlatten , Loader . Core . RootNode , "babylonjs_flattenScene" ) ;
327344 Tools . UpdateCheckBox ( chkMrgContainersAndXref , Loader . Core . RootNode , "babylonjs_mergecontainersandxref" ) ;
328345 Tools . UpdateCheckBox ( chkTryReuseTexture , Loader . Core . RootNode , "babylonjs_tryReuseTexture" ) ;
346+
347+ SaveDracoOptions ( ) ;
348+ }
349+
350+ private void SaveDracoOptions ( )
351+ {
352+ Tools . UpdateNumericUpDown ( dracoUserControl . CompressionLevelNumericUpDown , Loader . Core . RootNode , $ "babylonjs_{ DracoParameters . compressionLevel_param_name } ") ;
353+ Tools . UpdateTrackBar ( dracoUserControl . QPositionTrackBar , Loader . Core . RootNode , $ "babylonjs_{ DracoParameters . quantizePositionBits_param_name } ") ;
354+ Tools . UpdateTrackBar ( dracoUserControl . QNormalTrackBar , Loader . Core . RootNode , $ "babylonjs_{ DracoParameters . quantizeNormalBits_param_name } ") ;
355+ Tools . UpdateTrackBar ( dracoUserControl . QTexcoordTrackBar , Loader . Core . RootNode , $ "babylonjs_{ DracoParameters . quantizeTexcoordBits_param_name } ") ;
356+ Tools . UpdateTrackBar ( dracoUserControl . QColorTrackBar , Loader . Core . RootNode , $ "babylonjs_{ DracoParameters . quantizeColorBits_param_name } ") ;
357+ Tools . UpdateTrackBar ( dracoUserControl . QGenericTrackBar , Loader . Core . RootNode , $ "babylonjs_{ DracoParameters . quantizeGenericBits_param_name } ") ;
358+ Tools . UpdateCheckBox ( dracoUserControl . UnifiedCheckBox , Loader . Core . RootNode , $ "babylonjs_{ DracoParameters . unifiedQuantization_param_name } ") ;
329359 }
330360
361+
331362 private async Task < bool > DoExport ( ExportItem exportItem , bool multiExport = false , bool clearLogs = true )
332363 {
333364 new BabylonAnimationActionItem ( ) . Close ( ) ;
@@ -398,7 +429,7 @@ private async Task<bool> DoExport(ExportItem exportItem, bool multiExport = fals
398429 butCancel . Enabled = true ;
399430
400431 // switch to the log tab.
401- exporterTabControl . SelectTab ( 1 ) ;
432+ exporterTabControl . SelectTab ( logTabPage . Name ) ;
402433
403434 bool success = true ;
404435 try
@@ -444,7 +475,7 @@ private async Task<bool> DoExport(ExportItem exportItem, bool multiExport = fals
444475 txtQuality = textureQualityParsed ,
445476 mergeAOwithMR = chkMergeAOwithMR . Checked ,
446477 bakeAnimationType = ( BakeAnimationType ) cmbBakeAnimationOptions . SelectedIndex ,
447- dracoCompression = chkDracoCompression . Checked ,
478+ dracoCompression = chkDracoCompression . Enabled && chkDracoCompression . Checked ,
448479 enableKHRLightsPunctual = chkKHRLightsPunctual . Checked ,
449480 enableKHRTextureTransform = chkKHRTextureTransform . Checked ,
450481 enableKHRMaterialsUnlit = chkKHRMaterialsUnlit . Checked ,
@@ -462,9 +493,23 @@ private async Task<bool> DoExport(ExportItem exportItem, bool multiExport = fals
462493 flattenScene = chkFlatten . Checked ,
463494 mergeContainersAndXRef = chkMrgContainersAndXref . Checked ,
464495 useMultiExporter = multiExport ,
465- tryToReuseOpaqueAndBlendTexture = chkTryReuseTexture . Checked
496+ tryToReuseOpaqueAndBlendTexture = chkTryReuseTexture . Checked ,
466497 } ;
467498
499+ if ( exportParameters . dracoCompression )
500+ {
501+ exportParameters . dracoParams = new DracoParameters ( )
502+ {
503+ compressionLevel = ( int ) dracoUserControl . CompressionLevelNumericUpDown . Value ,
504+ quantizePositionBits = dracoUserControl . QPositionTrackBar . Value ,
505+ quantizeNormalBits = dracoUserControl . QNormalTrackBar . Value ,
506+ quantizeTexcoordBits = dracoUserControl . QTexcoordTrackBar . Value ,
507+ quantizeColorBits = dracoUserControl . QColorTrackBar . Value ,
508+ quantizeGenericBits = dracoUserControl . QGenericTrackBar . Value ,
509+ unifiedQuantization = dracoUserControl . UnifiedCheckBox . Checked
510+ } ;
511+ }
512+
468513 exporter . callerForm = this ;
469514
470515 exporter . Export ( exportParameters ) ;
@@ -741,6 +786,8 @@ private void comboOutputFormat_SelectedIndexChanged(object sender, EventArgs e)
741786 break ;
742787 }
743788
789+ dracoGroupBox . Enabled = chkDracoCompression . Enabled && chkDracoCompression . Checked ;
790+
744791 string newModelPath = Path . ChangeExtension ( txtModelPath . Text , this . saveFileDialog . DefaultExt ) ;
745792 this . txtModelPath . MaxPath ( newModelPath ) ;
746793 }
@@ -845,5 +892,10 @@ private void chkUsePreExportProces_CheckedChanged(object sender, EventArgs e)
845892 chkApplyPreprocessToScene . Enabled = true ;
846893 }
847894 }
895+
896+ private void chkDracoCompression_CheckedChanged ( object sender , EventArgs e )
897+ {
898+ dracoGroupBox . Enabled = chkDracoCompression . Checked ;
899+ }
848900 }
849901}
0 commit comments