瀏覽代碼

ColladaLoader: Improve evaluation of transparency

Mugen87 7 年之前
父節點
當前提交
0e59028607
共有 1 個文件被更改,包括 21 次插入3 次删除
  1. 21 3
      examples/js/loaders/ColladaLoader.js

+ 21 - 3
examples/js/loaders/ColladaLoader.js

@@ -1189,10 +1189,15 @@ THREE.ColladaLoader.prototype = {
 					case 'diffuse':
 					case 'specular':
 					case 'shininess':
-					case 'transparent':
 					case 'transparency':
 						data[ child.nodeName ] = parseEffectParameter( child );
 						break;
+					case 'transparent':
+						data[ child.nodeName ] = {
+							opaque: child.getAttribute( 'opaque' ),
+							data: parseEffectParameters( child )
+						};
+						break;
 
 				}
 
@@ -1471,11 +1476,24 @@ THREE.ColladaLoader.prototype = {
 							material.emissive.fromArray( parameter.color );
 						break;
 					case 'transparent':
-						// if ( parameter.texture ) material.alphaMap = getTexture( parameter.texture );
+						// if ( parameter.data.texture ) material.alphaMap = getTexture( parameter.data.texture );
 						material.transparent = true;
 						break;
 					case 'transparency':
-						if ( parameter.float !== undefined ) material.opacity = parameter.float;
+						if ( parameter.float !== undefined ) {
+
+							material.opacity = parameter.float;
+
+							if ( parameters[ 'transparent' ] !== undefined ) {
+
+								var opaque = parameters[ 'transparent' ].opaque;
+
+								if ( opaque === 'RGB_ZERO' ) material.opacity = 1 - material.opacity;
+
+							}
+
+						}
+
 						material.transparent = true;
 						break;