Преглед изворни кода

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 година
родитељ
комит
5e50c2138d
1 измењених фајлова са 10 додато и 3 уклоњено
  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;
 		}
 
 		/**