Переглянути джерело

Merge pull request #13661 from mrdoob/editor-svgloader

Editor: Added basic svg support
Mr.doob 7 роки тому
батько
коміт
aa459d4ee3
2 змінених файлів з 47 додано та 0 видалено
  1. 1 0
      editor/index.html
  2. 46 0
      editor/js/Loader.js

+ 1 - 0
editor/index.html

@@ -32,6 +32,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/SVGLoader.js"></script>
 		<script src="../examples/js/loaders/TGALoader.js"></script>
 		<script src="../examples/js/loaders/TGALoader.js"></script>
 		<script src="../examples/js/loaders/TDSLoader.js"></script>
 		<script src="../examples/js/loaders/TDSLoader.js"></script>
 		<script src="../examples/js/loaders/UTF8Loader.js"></script>
 		<script src="../examples/js/loaders/UTF8Loader.js"></script>

+ 46 - 0
editor/js/Loader.js

@@ -381,6 +381,52 @@ var Loader = function ( editor ) {
 
 
 				break;
 				break;
 
 
+			case 'svg':
+
+				reader.addEventListener( 'load', function ( event ) {
+
+					var contents = event.target.result;
+
+					var loader = new THREE.SVGLoader();
+					var paths = loader.parse( contents );
+
+					//
+
+					var group = new THREE.Group();
+					group.scale.multiplyScalar( 0.1 );
+					group.scale.y *= -1;
+
+					for ( var i = 0; i < paths.length; i ++ ) {
+
+						var path = paths[ i ];
+
+						var material = new THREE.MeshBasicMaterial( {
+							color: Math.random() * 0xffffff,
+							depthWrite: false
+						} );
+
+						var shapes = path.toShapes( true );
+
+						for ( var j = 0; j < shapes.length; j ++ ) {
+
+							var shape = shapes[ j ];
+
+							var geometry = new THREE.ShapeBufferGeometry( shape );
+							var mesh = new THREE.Mesh( geometry, material );
+
+							group.add( mesh );
+
+						}
+
+					}
+
+					editor.execute( new AddObjectCommand( group ) );
+
+				}, false );
+				reader.readAsText( file );
+
+				break;
+
 			/*
 			/*
 			case 'utf8':
 			case 'utf8':