Bläddra i källkod

Editor: Support TGA files.

Mr.doob 9 år sedan
förälder
incheckning
95da0934c0
2 ändrade filer med 38 tillägg och 15 borttagningar
  1. 8 7
      editor/index.html
  2. 30 8
      editor/js/libs/ui.three.js

+ 8 - 7
editor/index.html

@@ -27,6 +27,7 @@
 		<script src="../examples/js/loaders/PlayCanvasLoader.js"></script>
 		<script src="../examples/js/loaders/PlayCanvasLoader.js"></script>
 		<script src="../examples/js/loaders/PLYLoader.js"></script>
 		<script src="../examples/js/loaders/PLYLoader.js"></script>
 		<script src="../examples/js/loaders/STLLoader.js"></script>
 		<script src="../examples/js/loaders/STLLoader.js"></script>
+		<script src="../examples/js/loaders/TGALoader.js"></script>
 		<script src="../examples/js/loaders/UTF8Loader.js"></script>
 		<script src="../examples/js/loaders/UTF8Loader.js"></script>
 		<script src="../examples/js/loaders/VRMLLoader.js"></script>
 		<script src="../examples/js/loaders/VRMLLoader.js"></script>
 		<script src="../examples/js/loaders/VTKLoader.js"></script>
 		<script src="../examples/js/loaders/VTKLoader.js"></script>
@@ -306,22 +307,22 @@
 							editor.undo();
 							editor.undo();
 
 
 						}
 						}
-						
+
 						break;
 						break;
-						
+
 					case 87: // Register W for translation transform mode
 					case 87: // Register W for translation transform mode
 						editor.signals.transformModeChanged.dispatch( 'translate' );
 						editor.signals.transformModeChanged.dispatch( 'translate' );
-						
+
 						break;
 						break;
-						
+
 					case 69: // Register E for rotation transform mode
 					case 69: // Register E for rotation transform mode
 						editor.signals.transformModeChanged.dispatch( 'rotate' );
 						editor.signals.transformModeChanged.dispatch( 'rotate' );
-						
+
 						break;
 						break;
-						
+
 					case 82: // Register R for scaling transform mode
 					case 82: // Register R for scaling transform mode
 						editor.signals.transformModeChanged.dispatch( 'scale' );
 						editor.signals.transformModeChanged.dispatch( 'scale' );
-						
+
 						break;
 						break;
 
 
 				}
 				}

+ 30 - 8
editor/js/libs/ui.three.js

@@ -49,14 +49,15 @@ UI.Texture = function ( mapping ) {
 		if ( file.type.match( 'image.*' ) ) {
 		if ( file.type.match( 'image.*' ) ) {
 
 
 			var reader = new FileReader();
 			var reader = new FileReader();
-			reader.addEventListener( 'load', function ( event ) {
 
 
-				var image = document.createElement( 'img' );
-				image.addEventListener( 'load', function( event ) {
+			if ( file.type === 'image/targa' ) {
 
 
-					var texture = new THREE.Texture( this, mapping );
+				reader.addEventListener( 'load', function ( event ) {
+
+					var canvas = new THREE.TGALoader().parse( event.target.result );
+
+					var texture = new THREE.CanvasTexture( canvas, mapping );
 					texture.sourceFile = file.name;
 					texture.sourceFile = file.name;
-					texture.needsUpdate = true;
 
 
 					scope.setValue( texture );
 					scope.setValue( texture );
 
 
@@ -64,11 +65,32 @@ UI.Texture = function ( mapping ) {
 
 
 				}, false );
 				}, false );
 
 
-				image.src = event.target.result;
+				reader.readAsArrayBuffer( file );
+
+			} else {
+
+				reader.addEventListener( 'load', function ( event ) {
+
+					var image = document.createElement( 'img' );
+					image.addEventListener( 'load', function( event ) {
+
+						var texture = new THREE.Texture( this, mapping );
+						texture.sourceFile = file.name;
+						texture.needsUpdate = true;
+
+						scope.setValue( texture );
 
 
-			}, false );
+						if ( scope.onChangeCallback ) scope.onChangeCallback();
 
 
-			reader.readAsDataURL( file );
+					}, false );
+
+					image.src = event.target.result;
+
+				}, false );
+
+				reader.readAsDataURL( file );
+
+			}
 
 
 		}
 		}