Преглед на файлове

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;
 		}
 
 		/**