Sfoglia il codice sorgente

Added support for caching images to GLTFExporter.

Reduces output glb size considerably when the scene contains shared images and embedImages is enabled for the export.
Alan Chambers 7 anni fa
parent
commit
5e50c2138d
1 ha cambiato i file con 10 aggiunte e 3 eliminazioni
  1. 10 3
      examples/js/exporters/GLTFExporter.js

+ 10 - 3
examples/js/exporters/GLTFExporter.js

@@ -105,7 +105,8 @@ THREE.GLTFExporter.prototype = {
 
 			attributes: new Map(),
 			materials: new Map(),
-			textures: new Map()
+			textures: new Map(),
+			images: new Map()
 
 		};
 
@@ -603,7 +604,11 @@ THREE.GLTFExporter.prototype = {
 		 */
 		function processImage( map ) {
 
-			// @TODO Cache
+			if ( cachedData.images.has( map.image ) ) {
+
+				return cachedData.images.get( map.image );
+
+			}
 
 			if ( ! outputJSON.images ) {
 
@@ -673,8 +678,10 @@ THREE.GLTFExporter.prototype = {
 
 			outputJSON.images.push( gltfImage );
 
-			return outputJSON.images.length - 1;
+			var index = outputJSON.images.length - 1;
+			cachedData.images.set( map.image, index );
 
+			return index;
 		}
 
 		/**