Jelajahi Sumber

SVGLoader: Handle transparent style.fill

Mr.doob 7 tahun lalu
induk
melakukan
c9bb04c1b0
1 mengubah file dengan 13 tambahan dan 7 penghapusan
  1. 13 7
      examples/js/loaders/SVGLoader.js

+ 13 - 7
examples/js/loaders/SVGLoader.js

@@ -43,37 +43,37 @@ THREE.SVGLoader.prototype = {
 
 				case 'path':
 					style = parseStyle( node, style );
-					if ( style.fill !== 'none' && node.hasAttribute( 'd' ) ) paths.push( parsePathNode( node, style ) );
+					if ( node.hasAttribute( 'd' ) && isVisible( style ) ) paths.push( parsePathNode( node, style ) );
 					break;
 
 				case 'rect':
 					style = parseStyle( node, style );
-					if ( style.fill !== 'none' ) paths.push( parseRectNode( node, style ) );
+					if ( isVisible( style ) ) paths.push( parseRectNode( node, style ) );
 					break;
 
 				case 'polygon':
 					style = parseStyle( node, style );
-					if ( style.fill !== 'none' ) paths.push( parsePolygonNode( node, style ) );
+					if ( isVisible( style ) ) paths.push( parsePolygonNode( node, style ) );
 					break;
 
 				case 'polyline':
 					style = parseStyle( node, style );
-					if ( style.fill !== 'none' ) paths.push( parsePolylineNode( node, style ) );
+					if ( isVisible( style ) ) paths.push( parsePolylineNode( node, style ) );
 					break;
 
 				case 'circle':
 					style = parseStyle( node, style );
-					if ( style.fill !== 'none' ) paths.push( parseCircleNode( node, style ) );
+					if ( isVisible( style ) ) paths.push( parseCircleNode( node, style ) );
 					break;
 
 				case 'ellipse':
 					style = parseStyle( node, style );
-					if ( style.fill !== 'none' ) paths.push( parseEllipseNode( node, style ) );
+					if ( isVisible( style ) ) paths.push( parseEllipseNode( node, style ) );
 					break;
 
 				case 'line':
 					style = parseStyle( node, style );
-					if ( style.fill !== 'none' ) paths.push( parseLineNode( node, style ) );
+					if ( isVisible( style ) ) paths.push( parseLineNode( node, style ) );
 					break;
 
 				default:
@@ -510,6 +510,12 @@ THREE.SVGLoader.prototype = {
 
 		}
 
+		function isVisible( style ) {
+
+			return style.fill !== 'none' && style.fill !== 'transparent';
+
+		}
+
 		// http://www.w3.org/TR/SVG11/implnote.html#PathElementImplementationNotes
 
 		function getReflection( a, b ) {